【问题标题】:Running the JVM on CUDA在 CUDA 上运行 JVM
【发布时间】:2023-03-25 06:35:01
【问题描述】:

我见过使用Java访问CUDA api,然而

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

我在这里看到的优势是,我可以购买一个不错的 NVidia GPU,并且能够运行 Java 应用程序而无需在 CPU 上进行太多处理,从而节省 CPU 用于其他一些用途。

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

【问题讨论】:

  • 据我所知,没有针对 CUDA 的 JIT。然而,有几个 OpenGL 绑定。您是否考虑过研究 OpenCL?
  • @ThorbjørnRavnAndersen:LLVM 有 PTX 后端(pressroom.nvidia.com/easyir/…)。 PTX 也被 JITted 到驱动程序内部的 SASS 中。
  • @MaciejPiechotka no Java-JIT.

标签: java cuda jvm


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-03
      • 1970-01-01
      • 2010-09-30
      • 2015-08-11
      • 2013-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多