【问题标题】:Perform Calculations on GPU in Java用 Java 在 GPU 上执行计算
【发布时间】:2016-01-06 06:17:23
【问题描述】:

我正在研究是否有一种方法可以使 Java 程序成为 Java 程序的一部分,特别是需要在计算机的 GPU 上而不是仅在 CPU 上执行许多重复的、稍微复杂的计算。我知道 LWJGL 之类的库允许 Java 程序利用 GPU,但我还没有找到一种直接的方法来简单地对其执行与图形无关的计算。

有没有办法,例如使用计算机的 GPU 加速以下代码?

    long t = System.currentTimeMillis();
    double x;
    for(int i=0; i < 1080; i++){
        for(int j=0; j<1920; j++){
            x = Math.sqrt(Math.tan(1d - Math.sin(i * j)));
        }
    }
    System.out.println(System.currentTimeMillis() - t);

当我测试上述单 CPU 运行的功能时,大约需要 1.25 秒才能完成。

【问题讨论】:

  • 查看 OpenCL,有 Java 的绑定:jocl.org
  • OpenCL 是否仅适用于 AMD/Nvidia GPU?
  • 是的,只要驱动程序支持它(大多数应该)。它是一个跨平台 API,不限于 GPU(例如,如果没有 GPU,它可以无缝回退到 CPU 执行相同的代码)。
  • 不! OpenCL 在 CPU、英特尔至强融核、除 AMD/NVIDIA 之外的其他 GPU 上运行,一直到 FPGA。
  • 为什么选择 GPU?在 CPU 上运行本机 C 代码会快得多。尝试 JNI 到 C。

标签: java performance opengl gpu


【解决方案1】:

您可能想试试aparapi。除此之外,任何围绕原生 OpenCL/CUDA 的 Java 包装器都可能有用。

【讨论】:

  • 我尝试过使用 aparapi,但是每当我尝试将它用于任何事情(例如将两个值相乘一百万次)时,CPU 的执行速度都比内核快得多
猜你喜欢
  • 2019-04-12
  • 2014-03-12
  • 2010-11-18
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 2018-04-01
  • 1970-01-01
  • 2020-06-06
相关资源
最近更新 更多