Dr Juan Fumero presented at QCon London on TornadoVM, a plug-in to OpenJDK and GraalVM that runs Java on heterogeneous hardware including Graphical Processing Units (GPUs) and Field Programmable Gate Arrays (FPGAs). Demos during the presentation showed code being sped up by hundreds of times when running on a GPU vs a CPU.

GPUs and FPGAs can offer 2-3 orders of magnitude speed improvement for highly parallelisable workload. But those speed improvements have been difficult to obtain as programming requires the use of low level languages such as OpenCL and VHDL. TornadoVM makes acceleration accessible to programmers using Java and Node.js, and annotations are used to mark parallelisable code blocks as a hint to the compiler.

TornadoVM supports multi core CPUs, GPUs from Nvidia, AMD and Intel, and Intel FPGAs. The choice of hardware accelerator is passed to TornadoVM as a parameter, and Dr Fumero demonstrated code running on the CPU, embedded Intel GPU, and Nvidia GPU present on his Mac laptop. TornadoVM also offers live task migration between different hardware types, which was also demonstrated. Tensor Processing Units (TPUs) aren’t yet supported, but Dr Fumero stated that it would be straightforward to add an additional backend to TornadoVM so long as OpenCL support is present. The TornadoVM team is presently working on adding support for Nvdia’s Parallel Thread Execution (PTX).

Dr Fumero and his University of Manchester colleagues don’t yet consider TornadoVM to be production ready, as there’s no organisation to provide support. They do however already have an industry case study of TornadoVM being used by Exus to speed up training for machine learning models working on health care data. Due to limitations in the underlying programming model, TornadoVM doesn’t support objects (except for trivial cases), recursion, dynamic memory allocation or exceptions.

The TornadoVM: Java for GPUs and FPGAs presentation is already available to QCon London attendees, and will be opened up to all InfoQ readers in due course. Dr Fumero has published his slides and demos.