TornadoVM: Running Java on GPUs and FPGAs

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.

Source
HN

1 Like

That was a pretty interesting presentation. After the presentation I asked him about more dynamic languages such as Clojure, which should work since they are compiling JVM bytecode to OpenCL. He didn’t know at that point, however, but suggested to give it a try.

As I understand it, the annotations put on java methods are only hints for the compiler, and any code that is not parallelizable will simply run on the JVM. My memory might be a little off though. Handling recursion is not a goal for TornadoVM though, but perhaps that is where it is actually a good thing that Clojure does loop/recur as a workaround for the missing tail call optimisation in the JVM.