我已经看到使用Java访问CUDA
api,但是
我在这里看到的优势是,我可以购买体面的NVidia GPU,并且能够在没有太多CPU处理的情况下运行Java应用程序,从而节省CPU用于其他一些用途。
但是,如果这是不可能的,有没有办法强制JVM使用CUDA将处理卸载到GPU而无需重新编译Java应用程序来支持CUDA?我的意思是添加VM arguments
?
答案 0 :(得分:5)
您遇到的主要问题是CUDA旨在执行简单许多次的事情。例如。它通常在每个核心上运行一种方法。您不能让不同的核心运行不同的代码。这并不意味着某些代码无法优化以在CUDA处理器上运行。例如向量操作,但在GPU上运行整个JVM并不是它的设计目的。
BTW:CUDA处理器不支持IO,这是大多数服务器花费大部分时间的地方。例如读/写磁盘和网络。答案 1 :(得分:0)
但是我们可以在CUDA中实现类似于图遍历,因为多个节点可以完成多个遍历。在这里,如果jvm支持合并CUDA,我们可以在一台可以进行并行处理的机器中使用类似于map-red的程序。这对于执行SPARQL查询的基于图形的数据库具有很大优势