Session + Live Q&A
Level Up Your Java Performance with TornadoVM
Heterogeneous hardware such as Graphics Processing Units (GPUs) and Field Programmable Gate Arrays (FPGAs) are widely used for specific domains of applications such as Machine Learning, Data Science, Numerical Analytics and Fintech, due to the offer of a higher level of performance.
The increased performance, however, comes at the cost of programmability since different programming models and frameworks are required to program different classes of devices (GPUs, FPGAs, CPUs), thereby leading to code fragmentation. This makes the programmability of these devices more difficult to develop, and harder to understand and maintain, especially from high-level programming languages such as Java.
This talk will give an overview of the TornadoVM project, a parallel programming framework, and a Virtual Machine for transparently offloading Java programs onto GPUs and FPGAs. We will explain why and when it is beneficial to run on heterogeneous hardware. Besides, we will explain how developers can program and benefit from the GPUs and FPGAs processing power from Java using TornadoVM. Finally, we will give an overview regarding how TornadoVM compiles, optimizes and selects the best possible device for execution for different backends, totally transparent to the user.
Main Takeaways
1 Find out about TornadoVM, a plugin for JDK that allows software developers to accelerate their Java applications by using heterogeneous devices.
2 Learn how to program and get performance benefits by accessing GPUs/FPGAs directly from Java via TornadoVM.
Juan, what is the focus of your work these days?
I'm a Research Fellow at the University of Manchester. I work in the Advanced Processor Technology Group (APT) at the University. We do research on new parallel programming models and ways to improve programmability for modern computer architectures, such as GPUs and FPGAs. We do research at the programming language level as well as the runtime system and compiler levels. One of the use cases we have is the TornadoVM, which is a high performance computing platform for the JVM. So Java developers can run their applications on heterogeneous hardware, ideally with minimal effort.
How would you describe the persona and the level of the target audience for your presentation?
I think the target audience is developers and software engineers that are interested in accelerating applications by using GPUs and FPGAs from Java, and not necessarily experts on parallel hardware. So these developers are interested in getting some hints about how this acceleration can be done from Java, where to start looking, and some ideas about how to program. My talk also targets developers who want to achieve better performance because they are running specific domains of applications, such as ML, DL, Fintech. These developers usually require high powered devices. And I think TornadoVM is a good target, if their applications are written in Java.
What do you want these people to walk away from your talk with?
I would like people to remember what TornadoVM is and the reasons to use it. Why are we creating this technology now? What can we achieve? and how? Also, I would like people to remember that TornadoVM can offer a bit of extra performance for a specific domain of applications. So if your application is a good target for the device being used, you might get extra performance. Besides, I would like people to remember that TornadoVM is not a replacement of the existing Java VM, but rather a complement, in which developers can access heterogeneous hardware and increase performance for certain specific domains of applications like machine learning, deep learning, computer vision, and fintech, just to name a few.
Speaker
Juan Fumero
Lead Architect of the TornadoVM Project & Research Fellow @OfficialUoM
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 project for bringing automatic GPU and FPGA JIT...
Read moreFind Juan Fumero at:
From the same track
Cloud Native JVMs (Part 1): Cloud Native Compilation
Monday Nov 1 / 02:10PM EDT
JVMs power and run our applications and common infrastructure. JVM based languages (Java, Scala, Kotlin, Clojure, Groovy, JRuby, etc.) power dominant portions of most companies' compute footprint. And in the cloud, that same dominance continues. But JVMs, like other managed code...
Gil Tene
CTO @AzulSystems
Understanding JIT Optimisations By Decompilation
Monday Nov 1 / 12:10PM EDT
How does the JIT compiler transform your code as it optimises it? We can try to understand what the compiler has done by looking at JIT logs, compiler data structures, and directly at the machine code, but these are all advanced options needing expert-level knowledge of compilers. How can we make...
Chris Seaton
Researcher (Senior Staff Engineer) @Shopify
Java 17: The Path, Features, Tips and Tricks Panel
Monday Nov 1 / 03:10PM EDT
Java 17 has arrived. With 14 new JEPs and thousands of updates, Java 17 delivers performance, stability, and security enhancements to continue to improve on the already solid platform. Java 17 is the latest long-term support (LTS) release under Java’s 6-month release cadence. Join our...
Simon Ritter
Deputy CTO @Azul
Kristen O'Leary
Senior Developer Relations Engineer @Google
Rory Preddy
Senior Cloud Advocate @Microsoft