在CUDA上运行JVM

4

我见过使用Java访问CUDA API的用法,但是:

  • 有没有在GPU上运行整个JVM的实现(也许使用CUDA API)?
  • 或者,有计划这样做吗?
  • 如果有,性能是否足够运行客户端或服务器应用程序?
  • 最重要的是,什么问题会使JVM无法在GPU上运行?

我看到的优点是,我可以购买一张不错的NVidia GPU,并能够在CPU上进行不多的Java应用程序处理,从而节省CPU用于其他用途。

但是,如果这不可能,是否有办法强制JVM将处理转移到带有CUDA的GPU上,而不需要重新编译Java应用程序以支持CUDA?我的意思是像添加“VM参数”那样的方式?


据我所知,目前没有针对CUDA的JIT编译器。然而,有几个OpenGL绑定。您考虑过研究OpenCL吗? - Thorbjørn Ravn Andersen
2
@MaciejPiechotka 没有_Java_ JIT。 - Thorbjørn Ravn Andersen
2个回答

6
您面临的主要问题是CUDA旨在多次执行某个简单操作(非常多次)。例如,它通常在每个核上运行一个方法。您不能使不同的核运行不同的代码。这并不意味着某些代码不能被优化以在CUDA处理器上运行,例如矢量操作,但在GPU上运行整个JVM不是其设计用途。
另外,CUDA处理器不支持IO操作,而这正是大多数服务器花费大量时间的地方,例如读/写磁盘和网络。

0
但我们可以像实现多个遍历一样,在CUDA中实现类似于图遍历的东西,因为可以在多个节点上进行多个遍历。 如果jvm支持集成CUDA,则可以在单个机器内具有类似于map-red的程序,可以进行并行处理。这对于基于图形的数据库非常有优势,其执行SPARQL查询。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接