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's new in 0.2?

This new version includes support for with Intel FPGA support, GPU reductions, and dynamic reconfiguration. It can automatically explore all devices, and select the highest performing one without restarting execution. Furthermore, developers can write their own policies upon which the selection of the accelerator will be based. 


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