2013-05-13 2 views
0

Hadoop에서 OpenCL (GPU 계산 용)을 사용하려면 어떻게해야합니까?Hadoop이있는 OpenCL

내 데이터 세트는 HDFS에 있습니다. 5 개의 메트릭 중 2 개는 계산 집약적입니다. 그래서 OpenCL을 사용하여 GPU에서 2 개의 메트릭을 계산하고 Hadoop에서 java map reduce 코드를 사용하여 나머지 3 개의 메트릭을 계산하고 싶습니다.

HDFS에서 GPU로 데이터를 전달하는 방법은 무엇입니까? 또는 opencl 코드는 어떻게 HDFS의 데이터에 액세스 할 수 있습니까?

Java지도에서 OpenCL 코드를 어떻게 줄일 수 있습니까?

누군가 샘플 코드를 공유 할 수 있다면 좋을 것입니다.

+0

isti_spl은 아래에서 언급했듯이 각각의 고유 한 특성이 있지만 Java (APARAPI, RootBeer, JOCL 또는 보통의 오래된 JNI)에서 GPU에 액세스하기위한 여러 가지 옵션이 있습니다. 최근에 GPU로 Hadoop을 사용하는 작업을 발표했으며, 내 작업에 대한 평가로서 계산중인 메트릭에 대해 배우는 데 매우 관심이 있습니다. 대부분의/모든 것이 Hadoop/HDFS와 통합되지 않지만 GPU의 다른 MapReduce 프레임 워크에 대한 다른 이전 작업이있었습니다. 또한 [email protected]에서 저에게 연락하면 Hadoop 작업을 가속화 할 수 있습니다. – agrippa

답변

1

기본적으로 jogamp (jocl)를 사용하여 java에서 opencl을 호출 할 수 있습니다. 이는 기본적으로 원시 opencl 라이브러리에 대한 래퍼입니다. 먼저 java/hadoop 라이브러리를 사용하여 데이터에 액세스하고 CLBuffers (opencl과 통신하는 데 사용되는 버퍼를 포함하는 Java 객체)로 전송하고, gpu로 복사하고, 커널을 호출하고, gpu에서 버퍼로 결과를 다시 복사해야합니다. jocl 예제를 확인하십시오.

다른 대안은 aparapi 라이브러리를 사용하는 것입니다. 여기 데이터 처리 커널은 단순한 자바 함수이고 (제한이 있음), java bytecode-> opencl에서 프레임 워크가 변환되므로 프로그래머가 opencl 부분을 숨길 수 있습니다. 물론, 모든 것이 java-> opencl에서 번역 될 수는 없으며, 예제를 확인하십시오.