Ohhnews

分类导航

$ cd ..
InfoQ Java原文

TornadoVM 7 使 Java 应用能够运行 GPU 原生工作负载

#tornadovm#java#gpu计算#开源框架#异构计算

TornadoVM 7 让 Java 应用能够运行 GPU 原生工作负载

2026 年 10 月 21 日 · 3 分钟阅读 · 作者:Ben Evans

TornadoVM 是一个面向 Java 的开源异构 GPU 编程框架,现已达到 7.3 版本,这是该项目的一个重要里程碑。InfoQ 此前曾在 2025 年 12 月 和 2022 年 报道过该项目。

TornadoVM 会自动加速多核 CPU 和 GPU 上的 Java 程序。它不会取代现有 JVM,而是与它们协同工作,并在 Java 中提供丰富的 GPU 编程生态,可与 OpenJDK、GraalVM、Temurin 或 Zulu 等任何主流 JDK 发行版配合使用。它将 Java 代码卸载到硬件后端,管理 Java 堆与加速器之间的内存,并运行生成的计算内核。这使其成为现代云和机器学习工作负载的有用基础组件。

在开发阶段,TornadoVM 会将 Java 源代码编译到 OpenCL 和 Apple Metal 后端。其理念是:你可以在笔记本电脑上本地开发并使用本地可用硬件,然后部署到配备 NVIDIA GPU 的服务器上,从而获得显著的性能提升——这相当于面向现代机器学习工作负载的“一次编写,随处运行”。

版本 7 带来了多项架构变更。各后端现在使用外部函数与内存(FFM)API 取代 Java 本地接口(JNI)。实验性的 JVM 编译器接口(JVMCI)依赖也已被移除。据团队介绍,TornadoVM 现在通过“反射 + ASM + Unsafe 层”获取“所有编译器元数据”,这是在每个受支持的 JDK(21、25、26 和 27)上唯一且统一的路径。

该版本还通过优化的 CUDA 后端加深了与 NVIDIA 生态的集成。这包括支持 cuTile 编程模型(通过新的 TileContext),以及能够直接从 TornadoVM 任务图(TaskGraphs) 中调用 cuBLAS 和 CUTLASS 等 CUDA 库。开发者可以根据性能和可移植性需求,将 JIT 生成的内核替换为 CUDA 库调用,或将两者串联起来。同样,TornadoVM 还通过混合 API 为 Apple 的 MXL 库添加了相同的功能。最后,还新增了对多 GPU 执行的支持。

并非所有 Java 计算都能从卸载中获益。最合适的候选是数据并行工作负载,例如迭代之间没有依赖关系的循环,因为这些迭代可以在加速器上并行运行。近期 TornadoVM 版本的目标之一是提供一个符合 JVM 使用习惯的环境,以访问 NVIDIA 针对不同硬件平台调优的库。其目标是让 Java 开发者能够使用线性代数、快速傅里叶变换(用于信号分析)、深度神经网络以及针对稀疏矩阵手工优化的矩阵乘法等功能。

TornadoVM 已与 Quarkus、Lang4j、Flink、Spring AI 等库集成,也可通过 SDKMan 获取。例如,以 Apache Flink 与 TornadoVM 的集成为例:核心思路是开发者像平常使用 Table API 一样编写标准查询。通过一个配置标志来指示该查询可能需要在 GPU 上加速。随后,当计算到达任务管理器时,框架会检查其执行所在节点是否有可用的 GPU;如果有,就连接到库提供程序——该程序会分析查询的中间表示(IR),以判断该计算是否真正适合在 GPU 上执行。

总的来说,作为 Java 程序员,TornadoVM 提供了四种为 NVIDIA GPU 编程的方式——首先是并行 API,它实际上只是一个用于标注循环的注解,并向编译器提示该循环可能可以并行化。从长期来看,这个简单的 API 不足以让生产应用获得理想性能,因此又增加了其他 API——例如内核上下文 API 以及前面提到的 TileContext。

在发布 7.3 版本的同时,TornadoVM 团队还推出了 jitLLM v2.0,这是基于 TornadoVM 构建的下一代 Java AI 推理引擎。团队将 jitLLM 定位为在性能上可与 llama.cpp 和 Ollama 直接竞争的方案,并以单个 JAR 文件的形式发布。TornadoVM 和 jitLLM 都正通过 Beestream.ai 进行商业化,这是由 TornadoVM 团队创立的衍生公司。更多细节可在 TornadoVM 网站上找到,也可在比利时 Devoxx 近期的视频中了解,包括《使用 TornadoVM 的混合 API 从 Java 接入 NVIDIA 生态》。

关于作者

Ben Evans 是 Red Hat 的资深首席软件工程师。此前,他曾担任 New Relic 的插桩(Instrumentation)首席架构师。他还共同创立了 JVM 性能优化公司 jClarity(该公司于 2019 年被 Microsoft 收购)。他曾是 JCP 执行委员会成员,并帮助定义 Java 生态标准长达 6 年。Ben 是 Java Champion;曾三次获得 JavaOne Rockstar Speaker 称号;著有《Optimizing Java》、新版《Java in a Nutshell》以及《The Well-Grounded Java Developer》。他经常就 Java 平台、性能、架构、并发、初创公司及相关主题发表演讲。显示更多 显示更少

此内容属于 Java 主题

关注主题

相关主题:
相关编辑内容

相关赞助商

相关赞助商

为时序规模打造的 PostgreSQL

使用 PostgreSQL 处理海量时序数据,同时不牺牲性能。了解 Tiger Data 如何实现高速摄取、快速查询和可扩展存储。

了解更多。

相关内容

相关赞助商

  • IIoT PostgreSQL 性能包络

    你的 PostgreSQL 试点今天很快。但当数千个传感器变成数十亿行时会发生什么?了解如何定义性能限制、预测存储成本,并为生产 IIoT 工作负载选择扩展策略。

  • 理解 Postgres 对实时数据分析的性能限制

    停止 PostgreSQL 优化跑步机。了解为什么索引、调优、分区和副本会带来递减回报——以及 MVCC、行存储和 WAL 如何为高频时序工作负载造成架构限制。

  • 赞助商:Tiger Data

相关内容

InfoQ 新闻通讯

每周二发送的 InfoQ 上周内容汇总。加入超过 250,000 名资深开发者社区。

查看示例

输入您的电子邮件地址

选择您的国家/地区

  • 我同意 InfoQ.com 按照本隐私声明所述处理我的数据。

我们保护您的隐私。

InfoQ 新闻通讯

每周二发送的 InfoQ 上周内容汇总。加入超过 250,000 名资深开发者社区。

查看示例

  • 快速了解各种创新者和早期采用者技术发布的内容
  • 了解你不知道自己不知道的东西
  • 及时获取你感兴趣主题的最新信息

输入您的电子邮件地址

选择您的国家/地区

  • 我同意 InfoQ.com 按照本隐私声明所述处理我的数据。

我们保护您的隐私。

正在构建生产级 AI 系统?

用资深实践者在生产环境中运行智能体、评估、模型服务和 AI 辅助工程时的决策与权衡来检验你的方法。了解哪些做法有效、哪些失败,以及他们会如何改进。把这些经验带回团队,以做出更明智的架构和交付决策。立即注册:QCon AI 纽约 · 2026年12月15–16日
首页 · 创建账户 · 登录 · QCon 会议 · 活动 · 为 InfoQ 撰稿 · InfoQ 编辑 · 关于 InfoQ · 关于 C4Media · 媒体资料包 · InfoQ 开发者营销博客 · 多元化

活动

关注我们

YouTube 23.2万关注者 · LinkedIn 2.6万关注者 · Instagram 新 · RSS 1.9万读者 · X 5.71万关注者 · Facebook 2.1万点赞 · Bluesky 新

掌握最新动态

[LOADING...]
[LOADING...]
[LOADING...]

一般反馈:feedback@infoq.com
广告:sales@infoq.com
编辑:editors@infoq.com
营销:marketing@infoq.com

InfoQ.com 及所有内容版权 © 2006-2026 C4Media Inc. 隐私声明、条款和条件、Cookie 政策、Cookie 设置 关闭 BT