beehive-lab/TornadoVM
Write Java. Run on GPUs. Fast.
它解决了什么问题
TornadoVM 允许 Java 开发人员在 GPU 和多核 CPU 上运行计算密集型任务,而无需编写原生的 C/C++ 或 CUDA 代码。它消除了管理 JNI 绑定和原生工具链的复杂性,使高性能计算 (HPC) 和 AI 工作负载能够直接从 JVM 执行。
它是如何工作的
它在运行时将 Java 字节码 JIT 编译为特定目标语言,如 NVIDIA CUDA、OpenCL C 和 Apple Metal (MSL)。它提供三个级别的 API 控制:
- Loop Parallel API: 使用
@Parallel注解自动推断线程映射。 - KernelContext API: 提供类似于 CUDA/OpenCL 的显式线程索引,以实现细粒度控制。
- TileContext API: 一种专门的 CUDA 路径,允许以 Tile 而非线程进行编程,利用 Tile 编译器优化 Tensor Core 指令。
在 NVIDIA 硬件上,它直接与 NVIDIA 库生态系统 (cuBLAS, cuFFT, cuDNN, cuDF) 集成,并公开 Tensor Core mma.sync 内在函数,允许这些原生调用在单个 TaskGraph 内共享设备缓冲区。
适用对象
需要使用 GPU (NVIDIA, AMD, Intel, Apple Silicon) 和多核 CPU 来加速机器学习、深度学习、计算机视觉、物理模拟或金融应用程序的 Java 开发人员。
亮点
- 多后端支持: 适用于 NVIDIA (CUDA)、AMD、Intel 和 Apple Silicon (Metal) GPU。
- 原生 NVIDIA 集成: 无需 JNI 绑定即可直接访问 cuBLAS, cuFFT, cuDNN 和 cuDF。
- Tensor Core 访问: 通过 TileContext API 公开
mma.sync指令和 Tile 编程。 - CUDA Graph 支持: 将执行计划记录并重放为单个 CUDA Graph,以减少启动开销。
- JVM 兼容性: 可插入现有的 OpenJDK 或 GraalVM 安装,无需替换 JVM。
相关
- 项目
- 项目
- 项目
- 项目
- Dispatch