编写 Java。在 GPU 上运行。速度快。
TornadoVM 是一个适用于 Java 的 GPU 编程框架,可与 JDK 21+ 兼容(目前为 JDK 21、JDK 25、JDK 26 和 JDK 27)。它在运行时将 Java 字节码 JIT 编译为 NVIDIA CUDA、OpenCL C 和 Apple Metal (MSL),因此您现有的 Java 代码可在 **NVIDIA GPU(通过 CUDA)、AMD、Intel 和 Apple Silicon GPU、集成 GPU 以及多核 CPU 上运行。在 NVIDIA 硬件上,它还提供了更多功能:除了生成 CUDA 之外,TornadoVM 现在还直接调用 **NVIDIA 库生态系统 — cuBLAS、cuFFT、cuDNN — 并从纯 Java 中暴露了 Tensor Core mma.sync 指令。不需要 CUDA C。不需要维护 JNI 绑定。应用程序中不需要本机工具链。 最新版本: TornadoVM 6.1.0 (JDK 21 - JDK 27) — 本机 NVIDIA 库集成 (cuBLAS / cuFFT / cuDNN) 和 Tensor Core 内核,以及 Apple Silicon 的本机 Apple Metal 后端。变更记录 · 网站 · 文档
使用与在 CUDA 中使用相同的线程索引模型在 Java 中编写内核 - 然后构建任务图并执行。TornadoVM 在运行时将字节码 JIT 编译为 GPU 内核,并为您管理所有主机 ↔ 设备的数据传输。在 NVIDIA GPU 上,该内核会以 CUDA PTX 格式输出,并通过 NVRTC 编译为原生 cubin。
| Java + TornadoVM (内核 API) | 同一个内核在 CUDA C 中 |
|---|---|
```java
void mxv(KernelContext ctx,
FloatArray m,
FloatArray v,
FloatArray out,
int rows, int cols) {
int i = ctx.globalIdx;
if (i < rows) {
float sum = 0f;
for (int j=0; j// TornadoVM auto-manages device
// memory + kernel dispatch via a
// TaskGraph — no host plumbing,
// runs unchanged on all 4 backends.
|
暂无开放 Issues,或尚未同步最近议题。