AMD, Oracle Team for OpenJDK 'Sumatra' Java GPU Project
Advanced Micro Devices has announced its participation in an OpenJDK project to enable Java applications to take advantage of graphic processing unit (GPU) acceleration.
During a strategy keynote at the JavaOne 2012 conference in San Francisco, AMD announced its participation in the OpenJDK Project “Sumatra” in collaboration with Oracle and other members of the OpenJDK community to help bring heterogeneous computing capabilities to Java for server and cloud environments.
The OpenJDK Project “Sumatra” will explore how the Java Virtual Machine (JVM), as well as the Java language and APIs, might be enhanced to allow applications to take advantage of GPU acceleration, either in discrete graphics cards or in high-performance graphics processor cores such as those found in AMD accelerated processor units (APUs).
As emerging server and cloud platforms tap into the heterogeneous compute capabilities of APUs and discrete GPUs to achieve enhanced power and performance capabilities, developers are requiring mainstream programming models such as Java to help them harness the advantages of GPU acceleration, said Gary Frost, a software engineer and principal member of the technical staff at AMD, told eWEEK. Project “Sumatra” may also provide guidance on enabling heterogeneous compute support for other Java Virtual Machine- (JVM-) based) languages such as Scala, JRuby and Jython.
“Affirming our plans to contribute to the OpenJDK Project represents the next step towards bringing heterogeneous computing to millions of Java developers and can potentially lead to future developments of new hardware models, as well as server and cloud programming paradigms,” said Manju Hegde, corporate vice president, Heterogeneous Applications and Developer Solutions at AMD, in a statement. “AMD has an established track record of collaboration with open-software development communities from OpenCL to the Heterogeneous System Architecture (HSA) Foundation, and with this initiative we will help further the development of graphics acceleration within the Java community.”
“We expect our work with AMD and other OpenJDK participants in Project “Sumatra” will eventually help provide Java developers with the ability to quickly leverage GPU acceleration for better performance,” said Georges Saab, vice president of software development in the Java Platform Group at Oracle, in a statement. "We hope individuals and other organizations interested in this exciting development will follow AMD's lead by joining us in Project “Sumatra."
AMD’s Frost said AMD set out to solve the issue of Java leveraging GPUs in an open-source project known as Aparapi, which is a contraction of “A PAR(allel) API,” he added. Aparapi enables Java developers to take advantage of the compute power of GPU and APU devices by executing data parallel code fragments on the GPU rather than being confined to the local CPU. It does this by converting Java byte code to OpenCL at runtime and executing on the GPU; if for any reason Aparapi can't execute on the GPU, it will execute in a Java thread pool, according to the Aparapi page on the Google Code site.
“We were going well with Aparapi but decided we needed to collaborate with Oracle and others rather than just working from the outside,” Frost said. He added that for the GPU compute additions to be successful, Project Sumatra will have to build on top of Java 8, which will feature support for lambda functions. “The time frame for rolling out a Sumatra-enabled JVM is after Java 8 or closer to Java 9,” he said.
An August 2012 proposal for the Sumatra project said: “We will start exploring leveraging the new Java 8 Lambda language and library features. As this project progresses, we may identify challenges with the Java API and constructs which may lead to new language, JVM and library extensions that will need standardization under the JCP [Java Community Process] process.”
Individuals and organizations interested in participating can join the OpenJDK Community and Project “Sumatra” by visiting openjdk.java.net.