Scala 在基于JVM的语言中使用Xeon-Phi

Scala 在基于JVM的语言中使用Xeon-Phi,scala,parallel-processing,hardware,xeon-phi,Scala,Parallel Processing,Hardware,Xeon Phi,是否可以使用基于JVM的语言(如Scala)使用Xeon Phi?有什么例子吗?根据他们的常见问题解答,目前还不支持Java: 问:有没有Java编码选项? 答:还没有。它没有得到官方支持,但是,您仍然可以自己构建JVM 我已经使用和稍微修改过的版本构建了。您还可以尝试使用的零汇编程序版本。因此,您可以得到非常慢的虚拟机-即使使用60个线程,它也比我的四核移动i7 CPU慢10倍多。另一方面,这是测试同时在数十个线程上运行的Java实现的可伸缩性的绝佳机会 另一个想法是使用工具——Java字节

是否可以使用基于JVM的语言(如Scala)使用Xeon Phi?有什么例子吗?

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

问:有没有Java编码选项?
答:还没有。

它没有得到官方支持,但是,您仍然可以自己构建JVM

我已经使用和稍微修改过的版本构建了。您还可以尝试使用的零汇编程序版本。因此,您可以得到非常慢的虚拟机-即使使用60个线程,它也比我的四核移动i7 CPU慢10倍多。另一方面,这是测试同时在数十个线程上运行的Java实现的可伸缩性的绝佳机会


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

虽然要在Xeon Phi内核上运行Java肯定还有很长的路要走,但在Java程序中相对容易获得Xeon支持的一种可能方法是使用Aparabi(),一个库,可以在运行时将java字节码的子集交叉编译到OpenCL,并作为OpenCL内核执行(Xeon Phi支持OpenCL,就像任何现代GPU一样)

将现有Java代码转换为Aparabi内核运行是一个非常简单的过程(从Kernel run()方法本身调用的代码本质上需要是无对象的-字段、参数和局部变量必须是原语或原语数组)。但是,如果需要大规模并行化的瓶颈数量很低,那么实现这一点可能不会带来巨大的麻烦

这也将使您的项目受益于其他超级计算硬件(如Nvidia Tesla)上的大规模并行化


我的怀疑是,在Xeon Phi上运行“任何旧的”Java都不可能得到支持,即使支持,在Phi上优化OpenCL仍将大有裨益

您是否查找Java示例?此外(2013年10月23日):问:至强Phi是否支持Java?英特尔网站上的常见问题解答说“还没有”。这有时间表吗?答:还没有时间表。我当然希望他们能做好。Scala(Akka)提供了对此类硬件进行编程的抽象。如何在英特尔至强Phi协处理器上使用JAMV?有没有什么方法可以在Xeon phi上运行它而不需要使用Intel的编译器?我如何利用Xeon Phi支持的多线程呢?哇,那是几年前的事了:)。您可以使用GCC()在不使用英特尔编译器的情况下构建它。对于多线程,任何多线程Java库都应该可以,您还可以搜索有关从头开始编写Java线程的教程。请记住,我是为一个非常旧的设备(现在的架构可能不同)构建的,这只是一个导致性能非常差的实验。