TornadoVM is a practical heterogeneous programming framework for Java, Tornado enables automatic Just-In-Time (JIT) compilation and acceleration of Java programs on any OpenCL compatible device, such as multi-core CPUs, GPUs and FPGAs.

Tornado provides a minimal parallel task-based API (Application Programming Interface) that programmers can use to express computation to be offloaded and accelerated on GPUs and FPGAs and multi-core CPUs.

Furthermore, Tornado includes a runtime that automatically manages and optimises memory transfers between heterogeneous devices and the main CPU. The Tornado JIT compiler extends the new Oracle Graal JIT compiler with new information that guides the compilation and optimisation process for heterogeneous architectures, allowing to reuse and easily extend typical JVM optimisations for new heterogeneous devices.


What is new in 0.3?

  • New Matrix 2D and Matrix 3D classes with type specializations.
  • New API-call `TaskSchedule#batch` for batch processing. It allows programmers to run with more data than the maximum capacity of the accelerator by creating batches of executions.
  • FPGA full automatic compilation pipeline.
  • FPGA options simplified:
    •  `-Dtornado.precompiled.binary=<binary>` for loading the bitstream.
    • `-Dtornado.opencl.userelative=True` for using relative addresses.
    • `-Dtornado.opencl.codecache.loadbin=True` removed.
  • Reductions support enhanced and fully automated on GPUs and CPUs.
  • Initial support for reductions on FPGAs. * Initial API for profiling tasks integrated.


Reference Architecture: 
GPLV2 with CLASSPATH Exception, Apache 2, MIT