News

TornadoVM 2.0 release extends Java accelerator support for NVIDIA PTX, OpenCL, and SPIR-V

TornadoVM, an open-source plug-in for OpenJDK and GraalVM that compiles and offloads Java code to accelerators such as GPUs, released version 2.0 last month, adding support for new data types and memory-handling features to improve performance and reduce overhead on heterogeneous systems.

TornadoVM is a runtime and compilation framework that enables developers to run portions of conventional Java programs on heterogeneous hardware. It targets devices compatible with OpenCL, NVIDIA PTX, and SPIR-V, and its documentation also describes support for a range of CPUs, GPUs, and FPGAs through those back ends.

The project uses the Java Virtual Machine Compiler Interface, JVMCI, to compile Java bytecode at runtime into accelerator code for supported targets, including OpenCL C, PTX, and SPIR-V.

TornadoVM began as a research project under the APT Group at the University of Manchester and has been developed in the open, with the team publishing technical descriptions of its architecture.

In research material from the University of Manchester, TornadoVM is described as combining an API for composing pipelines of Java methods, an optimizing just-in-time compiler that extends the Graal compiler, and a runtime system that manages memory and schedules execution across devices such as GPUs, multicore CPUs, and FPGAs.

According to the release coverage and the project changelog, TornadoVM 2.0 includes:

  • GPU native INT8 support for NVIDIA PTX and OpenCL targets.
  • Support for compressed oops, commonly abbreviated as coops.
  • Zero-copy TornadoNativeArray instances using shallow memory segments.
  • FP32 to FP16 conversion support across back ends, plus support for byte and half-float arrays in local memory across back ends.
  • Additional execution improvements and bug fixes, including target-specific updates for OpenCL and NVIDIA PTX and changes related to CUDA 13.

Java is widely used in enterprise and research environments, but GPU and accelerator programming has often required native languages or specialized toolchains. TornadoVM’s approach is to keep Java as the programming surface while using JVM-level compilation hooks to generate accelerator code at runtime, allowing developers to express task, data, and pipeline parallelism through its API.

About the Author

John K. Waters is the editor in chief of a number of Converge360.com sites, with a focus on high-end development, AI and future tech. He's been writing about cutting-edge technologies and culture of Silicon Valley for more than two decades, and he's written more than a dozen books. He also co-scripted the documentary film Silicon Valley: A 100 Year Renaissance, which aired on PBS.  He can be reached at [email protected].