将 Xeon Phi 与基于 JVM 的语言一起使用

Posted

技术标签:

【中文标题】将 Xeon Phi 与基于 JVM 的语言一起使用【英文标题】:Using Xeon Phi with JVM-based language 【发布时间】:2013-06-25 23:53:37 【问题描述】:

是否可以通过 Scala 等基于 JVM 的语言使用 Xeon Phi?有例子吗?

【问题讨论】:

您是否在寻找 Java 示例?从那里开始的一切也将在 Scala 中运行。 【参考方案1】:

官方不支持,但是你仍然可以自己构建JVM。

我用GNU Classpath 构建了JamVM 和libffi 的略微修改版本。您也可以尝试使用HotSpot 的零汇编版本。结果,你会得到非常慢的虚拟机——即使使用 60 个线程,它也比我的四核移动 i7 CPU 慢 10 倍以上。另一方面,这是测试同时在数十个线程上运行的 Java 实现的可扩展性的绝佳机会。

另一个想法是使用Aparapi 工具 - 部分 Java 字节码被翻译成 OpenCL 并在 Phi 上执行。

【讨论】:

如何在英特尔至强融核协处理器上使用 JamVM?有什么方法可以在 Xeon phi 上运行它而无需使用英特尔的编译器?以及如何利用至强融核支持的多线程? 哇,那是几年前的事了 :)。您可以在没有英特尔编译器的情况下使用 GCC (***.com/q/18141941/2865997) 构建它。对于多线程,任何多线程 Java 库都应该没问题,您还可以搜索从头开始编写 Java 线程的教程。请记住,我是为一个非常旧的设备构建的(架构现在可能不同),这只是一个导致性能非常差的实验。【参考方案2】:

根据他们的常见问题解答,尚不支持 Java:

http://software.intel.com/en-us/articles/intelr-xeon-phitm-coprocessor-february-developer-webinar-qa-responses

问:是否有用于编码的 Java 选项? 答:还没有。

【讨论】:

进一步(2013 年 10 月 23 日):问:至强融核是否支持 Java?英特尔网站上的常见问题解答显示“还没有”。这有时间表吗? A:还没有时间表。 software.intel.com/en-us/articles/… 我当然希望他们能做得很好。 Scala (Akka) 提供了对此类硬件进行编程的抽象。【参考方案3】:

虽然要在 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 的优化仍然会更加出色。

【讨论】:

以上是关于将 Xeon Phi 与基于 JVM 的语言一起使用的主要内容,如果未能解决你的问题,请参考以下文章

是否可以将字符串数组卸载到 Xeon Phi

关于 Xeon Phi 的 SCIF 问题

在 xeon-phi 上引导自定义内核

Xeon phi 卸载模式如何利用线程并行和矢量化

无法解释的 Xeon-Phi 开销

Xeon-Phi 从主机 openMP 并行区域异步卸载