java - Project Sumatra 在其他 JVM 语言中的应用

标签 java jvm gpu

我最近才发现Project Sumatra ,旨在将 JVM 引入显卡。从他们的网页来看,这包括一个用于 Java 的自定义编译器(称为 Rootbeer)。

这都是好消息,但是,如果这意味着 Sumatra 项目也适用于其他 JVM 语言,我想听听对项目内部有更多了解的人的意见?是否可以直接从 Scala 或 Clojure 调用 Aparapi?或者您是否必须使用 Java 开发一些核心功能,然后通过其他 JVM 语言访问这些功能?

最佳答案

我刚刚遇到这个问题。抱歉花了这么长时间。全面披露我是苏门答腊的 Aparapi 发明者/领导者和共同发起人。

与 Aparapi 不同,Sumatra 具有从 JVM 内部的 Java 方法的 IR(中间表示)工作的优势。这意味着最终它将根据在此抽象级别发现的模式来检测 GPU 卸载的机会。 Aparapi 必须从字节码中逆向工程机会。

Sumatra 很可能最初会关闭用户提示,而不是尝试自动并行化代码。目前的主要焦点是 Java 8 的新“lambda”特性及其配套的“stream API”。所以 Aparapi 要求用户从内核基类继承。 Sumatr a 可能会使用以下建议的“显式”并行提示:-

IntRange.range(1024).parallel().forEach(gid->{out[gid]=a[gid]+b[gid];});

虽然对于明显的情况,比如

for (int id=0; i< 1024; i++){ out[gid]=a[gid]+b[gid];

卸载这个循环应该是完全可能的。因此,对其他基于 JVM 的语言的支持将取决于我们寻找自动并行化机会的雄心程度。我怀疑来自其他语言(JavaScript (Nashorn)、JRuby、Scala、JPython 等)的许多模式都可以被检测到。

关于java - Project Sumatra 在其他 JVM 语言中的应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12685126/

相关文章:

java - 将图像文件从 android 上传到 aspx 网络服务器

java - 有效地进行 Java String 替换

java - 处理动态 OSGi 服务依赖关系的最佳方法

docker - 是否可以在没有 GPU 的服务器上构建基于 `nvidia/cuda` 的图像?

cuda - 用CUDA求解线性系统AX = B

java - SQL中请求随机行对应的Spring JPA方法名

java - 为什么在执行 perform GC 后分配的永久代大小会增加?

java - Scala 中隐藏的性能成本?

java - 有没有办法获得引用地址?

c++ - 将带有数组的结构加载到 SSBO 时会发生什么?