TornadoVM 是一个旨在通过将计算密集型任务卸载到多核 CPU 和 GPU 上来加速 Java 程序设计的开源框架。它并非取代标准的 Java 虚拟机 (JVM),而是与 OpenJDK、GraalVM、Temurin 或 Zulu 等现有发行版协同运行。该框架负责管理 Java 堆与硬件加速器之间的内存,并将源代码 Java 代码编译为 OpenCL 和 Apple Metal 后端。这种架构允许开发者保持“一次编写,到处运行”的工作流,即代码可以在本地硬件上开发,并部署到配备高性能 Nvidia GPU 的生产服务器上。
版本 7.3 引入了重大的架构转变,最显著的变化是从 Java Native Interface (JNI) 过渡到用于后端通信的 Foreign Function & Memory (FFM) API。该项目还移除了对实验性 JVM Compiler Interface (JVMCI) 的依赖,转而采用统一的编译器元数据路径,在支持的 JDK(21 至 27)中结合使用反射、ASM 和 Unsafe 层。这些变化旨在为 Java 开发者提供一个更稳定且符合惯例的环境,以访问高性能库。
为了深化与 Nvidia 生态系统的集成,此次更新包含了一个支持 cuTile 编程模型并可直接调用 cuBLAS 和 CUTLASS 等库的优化 CUDA 后端。开发者可以根据对性能或可移植性的具体需求,选择将 JIT 生成的内核替换为这些经过手工优化的库调用。虽然并非所有的 Java 计算都适合卸载,但该框架针对数据并行工作负载进行了优化——例如没有迭代间依赖的循环——使 Java 应用程序能够直接从 JVM 中利用线性代数、快速傅里叶变换和深度神经网络处理。
