在CUDA上运行JVM

时间:2012-07-14 23:58:27

标签: java cuda jvm

我已经看到使用Java访问CUDA api,但是

  • 是否有任何实现在GPU中运行整个JVM(可能使用CUDA API)?
  • 或者,有没有计划这样做?
  • 如果是这样,性能是否足以运行客户端或服务器应用程序?
  • 最重要的是,哪些问题会导致JVM无法在GPU中运行?

我在这里看到的优势是,我可以购买体面的NVidia GPU,并且能够在没有太多CPU处理的情况下运行Java应用程序,从而节省CPU用于其他一些用途。

但是,如果这是不可能的,有没有办法强制JVM使用CUDA将处理卸载到GPU而无需重新编译Java应用程序来支持CUDA?我的意思是添加VM arguments

2 个答案:

答案 0 :(得分:5)

您遇到的主要问题是CUDA旨在执行简单许多次的事情。例如。它通常在每个核心上运行一种方法。您不能让不同的核心运行不同的代码。这并不意味着某些代码无法优化以在CUDA处理器上运行。例如向量操作,但在GPU上运行整个JVM并不是它的设计目的。

BTW:CUDA处理器不支持IO,这是大多数服务器花费大部分时间的地方。例如读/写磁盘和网络。

答案 1 :(得分:0)

但是我们可以在CUDA中实现类似于图遍历,因为多个节点可以完成多个遍历。在这里,如果jvm支持合并CUDA,我们可以在一台可以进行并行处理的机器中使用类似于map-red的程序。这对于执行SPARQL查询的基于图形的数据库具有很大优势