是否可以使用基于 JVM 的语言(例如 Scala)来使用 Xeon Phi?有什么例子吗?
3 回答
根据他们的常见问题解答,尚不支持 Java:
问:是否有用于编码的 Java 选项?答:还没有。
它不受官方支持,但是,您仍然可以自己构建 JVM。
我用GNU Classpath和libffi的略微修改版本构建了JamVM。您也可以尝试使用HotSpot的零汇编版本。结果,你会得到非常慢的虚拟机——即使使用 60 个线程,它也比我的四核移动 i7 CPU 慢 10 倍以上。另一方面,这是测试同时在数十个线程上运行的 Java 实现的可伸缩性的绝佳机会。
另一个想法是使用Aparapi工具——部分 Java 字节码被翻译成 OpenCL 并在 Phi 上执行。
虽然要在 Xeon Phi 内核上运行 Java 肯定还有很长的路要走,但在 Java 程序中相对容易地获得 Xeon 支持的一种可能方法是使用 Aparapi ( https://github.com/aparapi/aparapi ) ,一个库,它可以在运行时将 Java 字节码的子集交叉编译为 OpenCL,并将其作为 OpenCL 内核执行(至强融核支持 OpenCL,任何现代 GPU 也是如此)。
将现有 Java 代码转换为作为 Aparapi Kernels 运行是一个不平凡的过程(从 Kernel run() 方法调用的代码本身需要本质上是无对象的 - 字段、参数和局部变量必须是基元或基元数组) . 但是,如果需要大规模并行化的瓶颈数量很少,那么实现这一点可能不会很麻烦。
这也将使您的项目受益于其他超级计算硬件(如 Nvidia Tesla)上的大规模并行化。
我怀疑在 Xeon Phi 上运行“任何旧的”Java 不太可能得到支持,即使支持,在 Phi 上对 OpenCL 的优化仍然要好得多。