【问题标题】:Which Java code can be moved to the GPU?哪些 Java 代码可以移动到 GPU?
【发布时间】:2012-08-12 18:11:12
【问题描述】:

有了rootbeer 框架,Java 的GPU 编程成为可能。

哪些 Java 代码应该用于 rootbeer,哪些代码应该更好地在 Java VM 中运行?

或其他:哪些代码会产生更多开销并且没有意义?

【问题讨论】:

  • 您是在问一般什么样的算法可以在 GPU 上执行?
  • 我不知道这是否与您有任何关系,但暴力破解密码(密码学)是针对此类事情所需类型的操作调整 GPU 的一个领域用于获得时间优势。
  • 我的问题是针对 rootbeer 而不是一般的 GPU 编程。

标签: java gpu rootbeer


【解决方案1】:

说起来有点傻,但显而易见的答案是“对于 GPU 优于 CPU 的问题”。现代 GPU 有超过一千个核心,但内存相对较少,所以总的来说,这意味着 lends itself well to parallelization 的东西,不会占用太多内存。

G. Bach 提到了对 cme​​ts 中加密货币的暴力攻击,这是一个很好的例子。科学模拟是另一个很好的例子,事实上,几年前一些研究机构(特别是 NASA)拥有 Playstation 3 的运行模拟集群。维基百科关于GPGPU计算lists several applications技术的文章。

【讨论】:

    【解决方案2】:

    除了其他答案:rootbeer jet 不支持翻译一些 Java 功能。

    1. 本机方法
    2. 反思
    3. 动态方法调用
    4. 在监视器内睡觉。
    5. 垃圾回收(!)

    你应该避免使用这些特性的代码。

    Rootbeer 的更新正在生产中,以提供垃圾收集和其他缺少的 Java 功能。

    【讨论】:

    • 前4点很清楚。如果我理解 GC 的问题,那么代码应该只包含静态方法或单例。这是正确的吗?不应该频繁分配对象,因为对象不可能是垃圾?
    • GC 正在添加中。在完成之前,您应该回收对象而不是设置对null 的引用并创建一个新对象。或者您使用具有常量或只是增加对象数量的代码。
    • 可以使用动态内存分配,但是没有垃圾回收。因此,如果 GPU 上的内存不足,则会向 CPU 发出 OutOfMemoryError。
    • 知道图书馆现在在哪里吗?
    【解决方案3】:

    要通过 GPU 获得加速,您需要对每个数据元素进行大量计算,因为数据传输非常慢。您通常希望在 GPU 上运行 2 或 3 个嵌套的 for 循环,至少有 1000 个线程。

    【讨论】:

      【解决方案4】:

      当前 GPU 的一个限制是它可以将一个简单的方法加载到每个内核并立即执行。通用 CPU 可以加载更多代码和数据并独立完成。

      有矢量样式的代码在 GPU 上可能会更快,我可以看到它有一天会成为一种选择,但大多数代码(如果不是按处理能力,按体积计算)将在 CPU 上。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-19
        • 1970-01-01
        • 1970-01-01
        • 2011-02-23
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多