我应该为OpenCL for Java使用什么API

时间:2013-04-22 11:57:05

标签: java opencl

我应该使用什么API来支持Java中的OpenCL。

我想知道这对性能最好

  1. JavaCL
  2. Aparapi(由AMD提供的API)
  3. JOCL
  4. 是否需要JavaCL将Java字节代码转换为OpenCL,或者仅使用Aparapi(AMD提供的API)就可以实现。

1 个答案:

答案 0 :(得分:6)

据我所知,Aparapi是唯一一个提供从字节码自动转换OpenCL的框架。 RootBeer为CUDA提供了类似的选项。

如果您准备好调整OpenCL和/或知道如何利用OpenCL的一些更高级功能(本地内存,向量指令,重叠传输/调度),您可能会发现JavaCL或JOCL提供更多性能机会)。

具体来说,如果您希望应用多个OpenCL内核(比如在管道中),您可以使用JOCL / JavaCL更轻松地最小化主机和GPU之间的缓冲区传输。阿帕拉皮在这里缺乏灵活性。

但是,我希望(并观察到)大多数“简单”算法的性能在这三个框架之间非常相似。

我的建议(完全披露我是Aparapi发明人/初始撰稿人)将尝试Aparapi,如果你发现自己想要'调整'生成的OpenCL(Aparapi将允许你列出它生成的代码),或者找到你想要尝试重叠缓冲区/传输或多内核调度,您可以在获得更多经验时始终切换到JOCL / JavaCL。