2013-05-13 37 views
0

如何在Hadoop中使用OpenCL(用於GPU計算)?OpenCL with Hadoop

我的數據集駐留在HDFS中。 我需要計算5個度量,其中2個是計算密集型的。 所以我想在GPU上使用OpenCL計算這2個指標,其餘3個指標使用java map在Hadoop上縮減代碼。

如何將數據從HDFS傳遞到GPU? 或 我的opencl代碼如何從HDFS訪問數據?

如何從我的Java地圖縮減代碼中觸發OpenCL代碼?

如果有人能夠共享示例代碼,那將會很棒。

+0

正如isti_spl在下面提到的,從Java訪問GPU(APARAPI,RootBeer,JOCL或僅僅是普通的舊JNI)有很多選項,儘管它們每個都有自己的特性。我最近發表了關於在GPU上使用Hadoop的工作,並且非常有興趣瞭解您計算的度量作爲我工作的評估。在GPU上的不同MapReduce框架上還有其他的工作,儘管大部分/全部都沒有與Hadoop/HDFS集成。如果您通過[email protected]與我聯繫,我也可以幫助您加速Hadoop工作。 – agrippa 2013-05-13 16:45:46

回答

1

可以使用jogamp(jocl)從java調用opencl,這基本上是對本地opencl庫的封裝。您需要先使用java/hadoop庫訪問數據,然後將它們傳輸到CLBuffers(這是包含用於與opencl進行通信的緩衝區的java對象),將它們複製到gpu,調用內核,將結果從gpu複製回緩衝區。檢查jocl示例。

另一種選擇是使用aparapi庫。這裏的數據處理內核是一個簡單的java函數(有一些限制),框架從java字節碼 - > opencl轉換,所以opencl部分對程序員是隱藏的。當然,並不是所有的東西都可以從java-> opencl中翻譯,請檢查他們的例子。