Java 中 GPGPU/CUDA/OpenCL 的最佳方法?

2022-08-31 10:46:13

图形处理单元(GPGPU)上的通用计算是一个非常有吸引力的概念,可以利用GPU的强大功能进行任何类型的计算。

我很想使用GPGPU进行图像处理,粒子和快速几何操作。

目前,这个领域的两个竞争者似乎是CUDA和OpenCL。我想知道:

  • OpenCL是否可在Windows/Mac上的Java中使用?
  • 库有哪些接口方式与 OpenCL/CUDA 接口?
  • 直接使用JNA是一种选择吗?
  • 我忘记了什么吗?

任何现实世界的经验/例子/战争故事都是值得赞赏的。


答案 1

AFAIK,JavaCL / OpenCL4Java是目前所有平台上唯一可用的OpenCL绑定(包括MacOS X,FreeBSD,Linux,Windows,Solaris,全部采用Intel 32,64位和ppc变体,这要归功于它使用了JNA)。

它有一些演示,至少在Mac和Windows上可以从Java Web Start运行良好(为了避免在Linux上随机崩溃,请参阅此wiki页面,例如此Particles Demo

它还带有一些实用程序(GPGPU随机数生成,基本并行约简,线性代数)和Scala DSL

最后,它是可用的最古老的绑定(自2009年6月以来),并且它有一个活跃的用户社区

(免责声明:我是JavaCL的作者:-))


答案 2

你也可以考虑阿帕拉皮。它允许您用Java编写代码,并尝试在运行时将字节码转换为OpenCL。

完全披露。我是Aparapi开发人员。


推荐