MJay
카테고리
검색하기
MJSon
« 2024/11 »
일
월
화
수
목
금
토
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
닫기
관리 메뉴
MJay
SparkCL 논문을 읽어봄 본문
Edit
SparkCL 논문을 읽어봄
tistory
Spark CL
2번 읽고 구현해보자 ㄲ
Abstract
Device Programming Layer에서 한다
Aparapi and Spark programming layer
Introduction
Heterogeneous Environment가 뜨고 있다.
OpenCL 좋지만, C, C++ 위주로 돼 있어서 별로다
Hadoop and Spark
treat computer as a collection of conventional cores
GPU나 가속기에 대해 잘 통합된 구조가 아니다 spark는
GPU를 core operation으로 통합하는 게 SparkCL
이걸 하기 위해 2개의 OpenSouce를 쓴다
구성
자바 유저 코드를 적으면
SparkCL Framework에서 코드를 Aparapi Ucore로 보내고 이는 OpenCL Capable Device로 가진다
SparkCL 프레임워크에 의해 실행되고 SparkCL 코드는 Spark에 코드를 위임하고 클러스터의 OpenCL 가능 장치에 대한 코드를 Aparapi Ucores에 위임합니다.
Spark Layer Modifications
가속기를 쓰기 위해 조건 이 필요하다
가속기에서는
여러 가지 Complex type를 필요하여서
SparkKernel Type를 만들었다.
SparkKernel 안에 뭐가있냐면
Kernel Function
mapParameters
prepare the data and decide which device to use
run
A standard Aparapi kernel that will be executed on each capable device
mapReturnValue
Post Process the Data and handle any activiup or cleanup needed post kernel execution
vector addition
Map and Transformation이 새로운 framework에 맞춰줘야 한다.
이 새로운 framework가 SparkCL이겠군
Spark-SparkCL 통합이 SparkCL에 의해 처리 된 뒤에는 커널이 Aparapi UCores Java 기반 라이브러리와 함께 표준 Spark 작업자에게 전송됩니다. 작업자는 Aparapi UCores Framework [17]를 사용하여 커널을 실행합니다. Aparapi UCores는 Aparapi 프레임 워크의 포크입니다 [18]. 표준 Aparapi 라이브러리는 여러 OpenCL 환경과 큰 데이터 프레임 워크에 쉽게 통합 할 수 있도록 바이너리 실행 흐름 (FPGA를 지원하고 다른 장치를 선택적으로 지원해야 함), 가속기 유형 및 플랫폼 선택 지원을 지원하도록 확장되었습니다.
. 위의 예제에서 Spark Scheduling의 목적을 위해 작업자에게 하나의 코어를 사용하도록 지시합니다. 이렇게하면 가속 작업이 순차적으로 전송되며 동일한 하드웨어 가속 리소스에서 경쟁하지 않습니다. SparkCL에는 경합을 막을 수있는 조항이 있지만이 방법은 잠재적 인 충돌을 방지합니다.
Implementation이 있구먼
아직 유아기이다.
더 쉽게 만들 수 있게 해보려고 한다고 한다.
enough data가 존재 안 하면 수동적으로 가속기를 쓰게 해야 한다.
%23%23%23%23%20SparkCL%20%20%uB17C%uBB38%uC744%20%uC77D%uC5B4%uBD04%0A@%5Btistory%5D%0A*%20Spark%20CL%0A%09*%202%uBC88%20%uC77D%uACE0%20%uAD6C%uD604%uD574%uBCF4%uC790%20%u3132%0A%09*%20Abstract%0A%09%09*%20Device%20Programming%20Layer%uC5D0%uC11C%20%uD55C%uB2E4%0A%09%09*%20Aparapi%20and%20Spark%20programming%20layer%0A%09*%20Introduction%0A%09%09*%20Heterogeneous%20Environment%uAC00%20%uB728%uACE0%20%uC788%uB2E4.%0A%09%09*%20OpenCL%20%uC88B%uC9C0%uB9CC%2C%20C%2C%20C++%20%uC704%uC8FC%uB85C%20%uB3FC%20%uC788%uC5B4%uC11C%20%uBCC4%uB85C%uB2E4%0A%09%09*%20Hadoop%20and%20Spark%0A%09%09%09*%20treat%20computer%20as%20a%20collection%20of%20conventional%20cores%0A%09%09%09*%20GPU%uB098%20%uAC00%uC18D%uAE30%uC5D0%20%uB300%uD574%20%uC798%20%uD1B5%uD569%uB41C%20%uAD6C%uC870%uAC00%20%uC544%uB2C8%uB2E4%20spark%uB294%0A%09%09%09*%20GPU%uB97C%20core%20operation%uC73C%uB85C%20%uD1B5%uD569%uD558%uB294%20%uAC8C%20SparkCL%0A%09%09%09%09*%20%uC774%uAC78%20%uD558%uAE30%20%uC704%uD574%202%uAC1C%uC758%20OpenSouce%uB97C%20%uC4F4%uB2E4%0A%09%09%09%09%09*%20SparkCL%0A%09%09%09%09%09*%20Aparapi%0A%09%09*%20%uAD6C%uC131%0A%09%09%09*%20%uC790%uBC14%20%uC720%uC800%20%uCF54%uB4DC%uB97C%20%uC801%uC73C%uBA74%20%0A%09%09%09*%20SparkCL%20Framework%uC5D0%uC11C%20%uCF54%uB4DC%uB97C%20Aparapi%20Ucore%uB85C%20%uBCF4%uB0B4%uACE0%20%uC774%uB294%20OpenCL%20Capable%20Device%uB85C%20%uAC00%uC9C4%uB2E4%0A%09%09%09*%20SparkCL%20%uD504%uB808%uC784%uC6CC%uD06C%uC5D0%20%uC758%uD574%20%uC2E4%uD589%uB418%uACE0%20SparkCL%20%uCF54%uB4DC%uB294%20Spark%uC5D0%20%uCF54%uB4DC%uB97C%20%uC704%uC784%uD558%uACE0%20%uD074%uB7EC%uC2A4%uD130%uC758%20OpenCL%20%uAC00%uB2A5%20%uC7A5%uCE58%uC5D0%20%uB300%uD55C%20%uCF54%uB4DC%uB97C%20Aparapi%20Ucores%uC5D0%20%uC704%uC784%uD569%uB2C8%uB2E4.%0A%09*%20Spark%20Layer%20Modifications%0A%09%09*%20%uAC00%uC18D%uAE30%uB97C%20%uC4F0%uAE30%20%uC704%uD574%20%uC870%uAC74%20%uC774%20%uD544%uC694%uD558%uB2E4%20%0A%09%09%09*%204%uAC00%uC9C0%20%uC815%uB3C4%0A%09%09*%20%uAC00%uC18D%uAE30%uC5D0%uC11C%uB294%20%0A%09%09%09*%20%uC5EC%uB7EC%20%uAC00%uC9C0%20Complex%20type%uB97C%20%uD544%uC694%uD558%uC5EC%uC11C%0A%09%09%09*%20SparkKernel%20Type%uB97C%20%uB9CC%uB4E4%uC5C8%uB2E4.%0A%09%09%09*%20SparkKernel%20%uC548%uC5D0%20%uBB50%uAC00%uC788%uB0D0%uBA74%0A%09%09%09%09*%20run%0A%09%09%09%09%09*%20override%uB791%20%uBE44%uC2B7%uD558%uB2E4%0A%09%09%09%09*%20prepare/pre-process%0A%09%09*%20Kernel%20Function%0A%09%09%09*%20mapParameters%0A%09%09%09%09*%20prepare%20the%20data%20and%20decide%20which%20device%20to%20use%0A%09%09%09*%20run%0A%09%09%09%09*%20A%20standard%20Aparapi%20kernel%20that%20will%20be%20executed%20on%20each%20capable%20device%20%0A%09%09%09*%20mapReturnValue%0A%09%09%09%09*%20Post%20Process%20the%20Data%20and%20handle%20any%20activiup%20or%20cleanup%20needed%20post%20kernel%20execution%0A%09%09%09*%20vector%20addition%0A%09%09%09%09*%20open%20source%uC5D0%20%uC788%uB098%20%uBCF4%uB124%0A%09%09%09*%20Map%20and%20Transformation%uC774%20%uC0C8%uB85C%uC6B4%20framework%uC5D0%20%uB9DE%uCDB0%uC918%uC57C%20%uD55C%uB2E4.%0A%09%09%09%09*%20%uC774%20%uC0C8%uB85C%uC6B4%20framework%uAC00%20SparkCL%uC774%uACA0%uAD70%0A%09%09%09*%20Spark-SparkCL%20%uD1B5%uD569%uC774%20SparkCL%uC5D0%20%uC758%uD574%20%uCC98%uB9AC%20%uB41C%20%uB4A4%uC5D0%uB294%20%uCEE4%uB110%uC774%20Aparapi%20UCores%20Java%20%uAE30%uBC18%20%uB77C%uC774%uBE0C%uB7EC%uB9AC%uC640%20%uD568%uAED8%20%uD45C%uC900%20Spark%20%uC791%uC5C5%uC790%uC5D0%uAC8C%20%uC804%uC1A1%uB429%uB2C8%uB2E4.%20%uC791%uC5C5%uC790%uB294%20Aparapi%20UCores%20Framework%20%5B17%5D%uB97C%20%uC0AC%uC6A9%uD558%uC5EC%20%uCEE4%uB110%uC744%20%uC2E4%uD589%uD569%uB2C8%uB2E4.%20Aparapi%20UCores%uB294%20Aparapi%20%uD504%uB808%uC784%20%uC6CC%uD06C%uC758%20%uD3EC%uD06C%uC785%uB2C8%uB2E4%20%5B18%5D.%20%uD45C%uC900%20Aparapi%20%uB77C%uC774%uBE0C%uB7EC%uB9AC%uB294%20%uC5EC%uB7EC%20OpenCL%20%uD658%uACBD%uACFC%20%uD070%20%uB370%uC774%uD130%20%uD504%uB808%uC784%20%uC6CC%uD06C%uC5D0%20%uC27D%uAC8C%20%uD1B5%uD569%20%uD560%20%uC218%20%uC788%uB3C4%uB85D%20%uBC14%uC774%uB108%uB9AC%20%uC2E4%uD589%20%uD750%uB984%20%28FPGA%uB97C%20%uC9C0%uC6D0%uD558%uACE0%20%uB2E4%uB978%20%uC7A5%uCE58%uB97C%20%uC120%uD0DD%uC801%uC73C%uB85C%20%uC9C0%uC6D0%uD574%uC57C%20%uD568%29%2C%20%uAC00%uC18D%uAE30%20%uC720%uD615%20%uBC0F%20%uD50C%uB7AB%uD3FC%20%uC120%uD0DD%20%uC9C0%uC6D0%uC744%20%uC9C0%uC6D0%uD558%uB3C4%uB85D%20%uD655%uC7A5%uB418%uC5C8%uC2B5%uB2C8%uB2E4.%0A%09%09%09.%20%uC704%uC758%20%uC608%uC81C%uC5D0%uC11C%20Spark%20Scheduling%uC758%20%uBAA9%uC801%uC744%20%uC704%uD574%20%uC791%uC5C5%uC790%uC5D0%uAC8C%20%uD558%uB098%uC758%20%uCF54%uC5B4%uB97C%20%uC0AC%uC6A9%uD558%uB3C4%uB85D%20%uC9C0%uC2DC%uD569%uB2C8%uB2E4.%20%uC774%uB807%uAC8C%uD558%uBA74%20%uAC00%uC18D%20%uC791%uC5C5%uC774%20%uC21C%uCC28%uC801%uC73C%uB85C%20%uC804%uC1A1%uB418%uBA70%20%uB3D9%uC77C%uD55C%20%uD558%uB4DC%uC6E8%uC5B4%20%uAC00%uC18D%20%uB9AC%uC18C%uC2A4%uC5D0%uC11C%20%uACBD%uC7C1%uD558%uC9C0%20%uC54A%uC2B5%uB2C8%uB2E4.%20SparkCL%uC5D0%uB294%20%uACBD%uD569%uC744%20%uB9C9%uC744%20%uC218%uC788%uB294%20%uC870%uD56D%uC774%20%uC788%uC9C0%uB9CC%uC774%20%uBC29%uBC95%uC740%20%uC7A0%uC7AC%uC801%20%uC778%20%uCDA9%uB3CC%uC744%20%uBC29%uC9C0%uD569%uB2C8%uB2E4.%0A%09%09*%20Implementation%uC774%20%uC788%uAD6C%uBA3C%0A%09%09%09*%203%uAC1C%uB85C%20%uACB0%uACFC%uB97C%20%uBCF4%uC5EC%uC8FC%uB098%20%uBCF4%uB2E4%0A%09%09*%20%uC544%uC9C1%20%uC720%uC544%uAE30%uC774%uB2E4.%0A%09%09%09*%20%uB354%20%uC27D%uAC8C%20%uB9CC%uB4E4%20%uC218%20%uC788%uAC8C%20%uD574%uBCF4%uB824%uACE0%20%uD55C%uB2E4%uACE0%20%uD55C%uB2E4.%0A%09*%20enough%20data%uAC00%20%uC874%uC7AC%20%uC548%20%uD558%uBA74%20%uC218%uB3D9%uC801%uC73C%uB85C%20%uAC00%uC18D%uAE30%uB97C%20%uC4F0%uAC8C%20%uD574%uC57C%20%uD55C%uB2E4.%0A%09