With built-in support for concurrent programming to make multi-threading easier, Java™ technology is already taking advantage of some of the benefits of AMD’s platform. But there’s a lot more going on between AMD and the Java community that you may not know about. We are building performance advantages directly into Java tools and environments, making developers’ jobs easier. Read on to learn more.
Originally an AMD product, Aparapi was released to open source on September 14, 2011. Aparapi is an API for expressing data parallel workloads in Java™ and a runtime component capable of converting the Java™ bytecode of compatible workloads into OpenCL™ so that it can be executed on a variety of GPU devices. Learn more on the AMD Aparapi page.
The primary goal of this project is to enable Java applications to take advantage of graphics processing units (GPUs) and accelerated processing units (APUs), whether they are discrete devices or integrated with a CPU, to improve performance. Learn more at the Project Summatra page.
Our work with the OpenJDK project has yielded faster performance over the years, and we continue to contribute to the project for key improvements. One such contribution was a small yet useful code change. Previously, the 32-bit OpenJDK JVM emitted VectorPath instructions to carry out left shift operations on certain data types. We made changes to the JVM source so that low latency DirectPath instructions get generated in certain left shift operations. This yielded approximately 33% improvement on a micro-benchmark that we used for testing this code change. More details on this RFE can be found here: http://bugs.java.com/view_bug.do?bug_id=6708714
Another contribution helps overcome a long standing problem in the HotSpot JVM, that is that there was no mechanism in the JVM to recover if the code cache of compiled Java™ methods became full. Our solution, developed in coordination with the Sun/Oracle Hotspot team, allows the program to continue normal operation, keeping the JIT compilers operating normally, and the application continues to run at full speed with basically no noticeable effect on the performance of the application. Learn more at our blog: Better uptime for long running Java™ applications.
Technical Articles & Presentations
AMD’s Prototype HSAIL-enabled JDK8 for the OpenJDK Sumatra Project, Eric Caspole, JVM Language Summit (2013): In this presentation from the JVM Language Summit, AMD’s Eric Caspole discusses the Sumatra OpenJDK project, GPU workload fundamentals, AMD APU and Heterogeneous System Architecture (HSA), and provides an AMD Heterogeneous System Architecture Intermediate Language (HSAIL)-enabled offload demo of JDK: View the presentation Ι Download the High Res Video Ι Download the Low Res Video
Graal and GPU Offload, by Thomas Wuerthinger and Vasanth Venkatachalam, JVM Language Summit (2013): In this JVM Language Summit presentation, AMD’s Vasanth Venkatachalam, along with Oracle’s Thomas Wuerthinger, discuss Truffle and Graal, andVasanth further reviews adding an HSAIL GPU back-end to Graal: View the presentation Ι Download the High Res Video Ι Download the Low Res Video
OpenJDK Sumatra Project: Bringing the GPU to Java, by Eric Caspole, APU13 (2013): At the AMD Developer Summit 2013, Eric discusses AMD’S prototype HSAIL-enabled JDK8 for the OpenJDK Smatra project.
The Role of Java in Heterogeneous Computing & How You Can Help, by Nandini Ramani, VP, Java Platform, Oracle Corporation, APU13 (2013): In this keynote from the 2013 AMD Developer Summit, Oracle Vice President Nandini Ramani discusses the role of Java in heterogeneous computing.
Bringing Spatial Love to your Java Application, by Steven Citron-Pousty, APU13 (2013): In this presentation from the 2013 AMD Developer Summit, Steven talks about MongoDB Spatial, JEE, PaaS and more.
Aparapi and HSA: Easing the developer path to APU/GPU accelerated Java applications, by Gary Frost and Vignesh Ravi, APU13 (2013): This presentation covers Java GPU enablement via Aparapi, Open Source framework Java Application, and discusses how developers can eﬃciently represent data parallel algorithms in Java using Stream API + Lambda expressions, plus much more.
GPU Accelerated 3D Graphics for Java, by Kevin Rushforth, Chien Yang, John Yoon and Nicolas Lorain, APU13 (2013): In this presentation from the 2013 AMD Developer Summit, Oracle Corporation’s Kevin Rushforth and Chien Yang discuss JavaFX Graphics, Transforms, Camera and Coordinate System, Z-buffer (depth test), 3D geometry, 3D attributes, 3D picking, MSAA, and SubScene.
A Tutorial on Adding New Instructions to the Oracle® Java™ HotSpot ™ Virtual Machine (2012): Architecture-specific code generation changes for Java programs often require modifying the Java Virtual Machine (JVM) to support new target machine instructions or sequences of these instructions. This article discusses how to add this support to the Oracle® Java HotSpot Virtual Machine, using as a running example the addition of an instruction sequence for a floating-point conditional move optimization. By the end of this article, the reader should better understand the process of adding new instructions or instruction sequences that support their own optimizations.
If you’re looking for something from a few years back, browse this section. This archive provides information, articles and presentations from earlier Java™ work, including optimizing Java performance in a virtual machine environment, Java™ performance when debugging is enabled and more. View the Java Zone archive.