2013-04-22 62 views
3

我應該在Java中使用什麼API來支持OpenCL。我應該爲OpenCL for Java使用什麼API

我想知道的,是最適合表現

  1. JavaCL
  2. Aparapi(AMD提供的API)
  3. JOCL

是否需要JavaCL爲Java字節碼轉換成的OpenCL或者僅僅是Aparapi(API提供的API)就可以做到。

回答

6

據我所知,Aparapi是唯一提供從字節碼中自動轉換OpenCL的框架。 RootBeer爲CUDA提供了一個類似的選項。

您可能會發現WRT性能如果您準備好手動調整OpenCL和/或知道如何利用OpenCL的某些更高級功能(本地內存,向量指令,重疊傳輸/重傳功能),JavaCL或JOCL將提供更多性能機會。調度)。

特別是如果你有你想申請多個OpenCL內核(在管道中說的),你可以更容易地減少主機和GPU與JOCL/JavaCL之間的緩衝區傳輸。阿帕拉皮在這裏缺乏一些靈活性。

不過,我希望(和觀察到),其性能最「簡單」的算法是這三個框架之間非常相似。

我的建議(完全公開我是Aparapi的發明人/最初的貢獻者)將嘗試Aparapi,如果你發現自己想調整生成的OpenCL(Aparapi將允許你列出它生成的代碼)或找到你想嘗試重疊的緩衝區/傳輸或多內核調度,當你獲得更多的經驗時,你總是可以切換到JOCL/JavaCL。

相關問題