Juan Fumero is a Research Fellow at the University of Manchester. His research topics are Heterogeneous High-Level Languages Virtual Machines, GPGPUs, and distributed computing. Currently, he is working as part of the TornadoVM team in a collaboration with Intel for bringing automatic and transparent Graphics Processing Unit (GPU) and (Field Programmable Gate Arrays) FPGA JIT compilation and execution for Java programs. Juan Fumero is the current lead architect of TornadoVM.
He received a Ph.D. degree from The University of Edinburgh on Accelerating Interpreted Programming Languages on GPUs for Java, R, and Ruby. Additionally, he has also worked as an intern at Oracle Labs and CERN, implementing compilers, and evaluating parallel techniques for multi-core systems.
The proliferation of heterogeneous hardware in recent years means that every system we program is likely to include a mix of computing elements; each of these with different hardware characteristics that enable programmers to improve performance while decreasing energy consumption. These new heterogeneous devices include multi-core CPUs, GPUs, and FPGAs. This trend has been followed by changes in software development norms that do not necessarily favour programmers.
In this talk, we present TornadoVM, a plug-in for OpenJDK that allows JVM programmers to automatically run their applications on multi-core CPUs, GPUs, and FPGAs. Furthermore, TornadoVM performs task-migration from one device to another at runtime, entirely transparent for the user. In this talk, we will summarize the TornadoVM project, and we will explain, via examples, how TornadoVM optimizes, offloads and executes applications on heterogeneous hardware, including GPUs and FPGAs for different backends, such as OpenCL, NVIDIA PTX and the brand new SPIR-V backend.