首先:是否可以使用Java并让它(部分)运行或使用GPU? 如果可能,是否可以使用普通的Java语法而不使用特殊的cuda或opencl语法?
我想只需要使用我的编码java源代码,让它在GPU上进行尽可能小的更改。
我非常感谢代码示例。
答案 0 :(得分:10)
考虑Aparapi http://aparapi.github.io/。它尝试在运行时将字节码转换为OpenCL。因此,您可以使用纯Java为GPU编码。
完全披露,我是Aparapi首席开发人员。
答案 1 :(得分:9)
Rootbeer GPU编译器支持在GPU上运行任意Java代码。它比Aparapi更全面。 Rootbeer支持任何类型的arbirary对象图。
它刚刚在我的github帐户上发布了开源: https://github.com/pcpratts/rootbeer1
答案 2 :(得分:6)
有几个Java绑定到CUDA和OpenCL(jcuda.org,jocl.org,还有一些叫做jocl,但这些只是让CUDA或OpenCL代码运行的方法。 GPU通过Java,并要求您专门为此编写代码。我不认为只需对代码进行微小的更改就可以在GPU上运行任意多线程Java程序。
您希望在GPU上运行Java程序做什么?
您必须考虑到GPU的架构与CPU的架构完全不同; GPU上的内核不是通用内核,可以做任何事情并独立工作,就像在Intel x86 CPU中一样。要真正利用GPU的特定SIMD架构,您的代码必须考虑到该架构。
答案 3 :(得分:2)
查看http://code.google.com/p/java-gpu/。
它将纯Java代码编译到内核中,只使用注释。
答案 4 :(得分:2)
TornadoVM是OpenJDK的一个插件,允许程序员在异构硬件上自动运行Java程序。 TornadoVM当前以OpenCL兼容设备为目标,并在多核CPU,GPU(NVIDIA和AMD),Intel集成GPU和Intel FPGA上运行。 在这里看看:https://github.com/beehive-lab/TornadoVM