哪些Java代码可以移动到GPU?

哪些Java代码可以移动到GPU?,java,gpu,rootbeer,Java,Gpu,Rootbeer,有了这个框架,GPU就可以为Java编程了 哪些Java代码应该用于rootbeer,哪些代码应该更好地在Java VM中运行 或者其他:哪种代码产生的开销更大,而且毫无意义?说起来有点傻,但显而易见的答案是“对于GPU优于CPU的问题”。现代GPU有超过一千个内核,但相对较少的内存,所以一般来说,这意味着不需要太多内存 巴赫在评论中提到了针对加密技术的暴力攻击,这是一个很好的例子。科学模拟是另一个很好的例子,事实上,几年前,一些研究机构(尤其是NASA)拥有Playstation 3运行模拟集

有了这个框架,GPU就可以为Java编程了

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


或者其他:哪种代码产生的开销更大,而且毫无意义?

说起来有点傻,但显而易见的答案是“对于GPU优于CPU的问题”。现代GPU有超过一千个内核,但相对较少的内存,所以一般来说,这意味着不需要太多内存


巴赫在评论中提到了针对加密技术的暴力攻击,这是一个很好的例子。科学模拟是另一个很好的例子,事实上,几年前,一些研究机构(尤其是NASA)拥有Playstation 3运行模拟集群。Wikipedia关于GPGPU计算技术的文章。

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


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

除了其他答案之外:还有一些Java特性不受rootbeer jet的支持

  • 本地方法
  • 倒影
  • 动态方法调用
  • 在显示器内睡觉
  • 垃圾收集(!)
  • 您应该避免使用具有这些特性的代码


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

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

    您想知道在GPU上执行什么样的算法通常有意义吗?我不知道这是否与您相关,但强制密码(加密术)这是一个将GPU调整为此类操作所需类型以获得时间优势的领域。我的问题针对的是rootbeer,而不是一般的GPU编程。前4点很清楚。如果我理解GC的问题,那么代码应该只包含静态方法或单例。是这样吗?不应该有频繁的对象分配,因为对象不能是垃圾?GC正在添加中。在完成此操作之前,您应该循环使用对象,而不是将引用设置为
    null
    ,并创建一个新对象。或者使用对象数为常量或只是增加的代码。可以使用动态内存分配,但不进行垃圾收集。因此,如果GPU上的内存不足,一个OutOfMemoryError会冒泡到CPU上。知道库现在在哪里吗?