由于數(shù)據(jù)傳輸速率可能相當慢,理想的情況是相比執(zhí)行計算的數(shù)目,每個GPU輸入/輸出數(shù)據(jù)的量比較小。切記:第一,任務類型要和GPU的能力相匹配,第二任務可以被Hadoop分割為并行獨立的子流程。 復雜的數(shù)學公式計算(例如矩陣乘法),大量隨機值的生成,類似的科學建模任務或其它通用的GPU應用程序都屬于這種任務。
可用的技術(shù)
- JCUDA:JCUDA項目為Nvidia CUDA提供了Java綁定和相關(guān)的庫,如JCublas、JCusparse(一個矩陣的工作庫)、JCufft(通用信號處理的Java綁定)、JCurand(GPU產(chǎn)生隨機數(shù)的庫)等等。但 它只適用于Nvidia GPU。
- Java Aparapi。Aparapi在運行時將Java字節(jié)碼轉(zhuǎn)換為OpenCL,并在GPU上執(zhí)行。所有的Hadoop+GPU計算系統(tǒng)中,Aparapi和OpenCL的前景最被看好。Aparapi由AMDJava實驗室開發(fā),2011年開放源代碼,在AMD Fusion開發(fā)者峰會的官網(wǎng)上可以看到Aparapi的一些實際應用。OpenCL是一個開源的、跨平臺的標準,大量硬件廠商都支持這個標準,并且可以為CPU和GPU編寫相同的代碼基礎。如果一臺機器上沒有GPU,OpenCL會支持CPU。
- 創(chuàng)建訪問GPU的本地代碼。訪問GPU本地代碼進行復雜的數(shù)學計算,要比使用綁定和連接器性能高很多,但是,如果你需要在盡可能短的時間內(nèi)提供一個解決方案,就要用類似Aparapi的框架。然后,如果你對它的性能不滿意,可以將部分或整個代碼改寫為本地代碼??梢允褂肅語言的API(使用Nvidia CUDA或OpenCL)創(chuàng)建本地代碼,允許Hadoop通過JNA(如果是Java應用程序)或Hadoop Streaming(如果是C語言應用程序)使用GPU。
GPU-Hadoop框架
也可以嘗試定制的GPU-Hadoop框架,這個框架啟動于Mars之后,包括Grex、Panda、C-MR、GPMR、Shredder、SteamMR等。但是GPU-Hadoop多用于特定的科研項目,并且不再提供支持了,你甚至很難將Monte Carlo模擬框架應用于一個以其它算法為基礎的生物信息項目。
處理器技術(shù)也在不斷發(fā)展。在Sony PlayStation 4中出現(xiàn)了革命性的新框架、Adapteva的多核微處理器、ARM的Mali GPU等等。Adapteva和Mali GPU都將兼容OpenCL。
Intel還推出了使用OpenCL的Xeon Phi協(xié)同處理器,這是一個60核的協(xié)同處理器,架構(gòu)類似于X86,支持PCI-E標準。雙倍精度計算時性能可達1TFLOPS,能耗僅為300Watt。目前最快的超級計算機天河-2就使用了該協(xié)同處理器。
很難說以上哪種框架會在高性能和分布式計算領(lǐng)域成為主流。隨著它們的不斷改善,我們對于大數(shù)據(jù)處理的理解可能也會改變。
原文鏈接: Hadoop + GPU: Boost performance of your big data project by 50x-200x?
更多詳細信息,請您微信關(guān)注“計算網(wǎng)”公眾號: