MJay

SparkCL 논문을 읽어봄 본문

Cloud Computing/Spark

SparkCL 논문을 읽어봄

MJSon 2017. 9. 12. 15:01
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
            • Aparapi
      • 구성
        • 자바 유저 코드를 적으면
        • SparkCL Framework에서 코드를 Aparapi Ucore로 보내고 이는 OpenCL Capable Device로 가진다
        • SparkCL 프레임워크에 의해 실행되고 SparkCL 코드는 Spark에 코드를 위임하고 클러스터의 OpenCL 가능 장치에 대한 코드를 Aparapi Ucores에 위임합니다.
    • Spark Layer Modifications
      • 가속기를 쓰기 위해 조건 이 필요하다
        • 4가지 정도
      • 가속기에서는
        • 여러 가지 Complex type를 필요하여서
        • SparkKernel Type를 만들었다.
        • SparkKernel 안에 뭐가있냐면
          • run
            • override랑 비슷하다
          • prepare/pre-process
      • 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
          • open source에 있나 보네
        • 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이 있구먼
        • 3개로 결과를 보여주나 보다
      • 아직 유아기이다.
        • 더 쉽게 만들 수 있게 해보려고 한다고 한다.
    • 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