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

Sha*_*zal 3 java opencl

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

我想知道这对性能最好

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

是否需要JavaCL将Java字节代码转换为OpenCL,或者只需Aparapi(AMD提供的API)即可.

小智 6

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

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

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

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

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