【问题标题】:Java GPU programming [closed]Java GPU编程[关闭]
【发布时间】:2011-03-24 00:49:15
【问题描述】:

是否可以在 Java 中进行 GPU 编程? 我的意思是不使用本机库。

当我们切换到 gpu 时,可以期待多少性能提升?

编辑:

我不是在看游戏编程,我想做的是硬核数字运算。

【问题讨论】:

  • 你的意思是用Java编写着色器程序吗?还是使用 Java 将用着色器语言(GLSL 或 HLSL)编写的着色器加载到 GPU 上并运行它? AFAICT,没有任何 Java -> GPU 字节码编译器(或从 Java 字节码到 GPU 字节码的转换器),所以你不能用 Java 编写你的 GPU 程序。
  • 大家好,你们提出了很多我不知道的关键词!!就像我不知道什么是着色语言,但在快速谷歌搜索后发现。好的,根据您的回复,我将进行编辑

标签: java performance gpu


【解决方案1】:

支持。 Java3D、LWJGL 和 JOGL 支持 GLSL(OpenGL 着色语言)。

编辑:
如果您想在 GPU 上进行平台中立的通用计算,您可以使用 OpenCL。尽管功能集和执行环境千差万别,但该框架允许您编写对所有处理单元一视同仁的代码。不过,与 Java 相比,这是非常低级的编程。

看来您的理想是使用 OpenCL 支持编写的 JVM。在网上搜索,我发现对这个想法有点兴趣,但没有任何主要支持的证据。

人们可以期待多少性能改进

这取决于您运行的系统以及您正在处理的数据类型(矩阵和矢量数学在 GPU 上非常有效)。在像我这样具有两个强大的 GPU 和一个适度的单核 CPU 的系统上,您可能会获得一些重大收益。但是,在具有中等 GPU 和四核 CPU 的计算机上,性能提升可能难以克服开销。

【讨论】:

【解决方案2】:

如果您仍在考虑在不使用本机库的情况下在 GPU 上使用 Java 进行硬核数字运算,您可能会对这篇博客文章感兴趣 http://ateji.blogspot.com/2011/02/java-on-gpu-with-ateji-px.html 到目前为止,我们(我是 Ateji 团队的一员)在可以大规模并行化的 Java 应用程序上看到了高达 60 倍的性能。

【讨论】:

  • 我在您的链接博客中发布了一个问题。真想有这样的功能。
【解决方案3】:

Rootbeer1 刚刚在 github 上发布:https://github.com/pcpratts/rootbeer1

使用 Rootbeer,您几乎可以使用任何 Java 进行编程,但以下除外:

  1. 本机方法和字段
  2. 反思
  3. 动态方法调用
  4. 垃圾回收
  5. 睡在显示器里

这意味着您可以使用具有复合类型的任意对象图。

【讨论】:

    【解决方案4】:

    def 检查 rootbeer1,但您需要先确保您有一个 CUDA 接受的 GFX 卡,然后再开始使用它并完成所有 NVIDIA 设置等

    下载链接: 谷歌CUDA下载

    入门指南 http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Getting_Started_Windows.pdf

    【讨论】:

      猜你喜欢
      • 2015-05-27
      • 2011-08-22
      • 2010-09-18
      • 2014-04-14
      • 2013-08-03
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2019-08-17
      相关资源
      最近更新 更多