A proposed project for the OpenJDK open source implementation would fit GPU (graphics processor unit) support to Java. Among others, Oracle and AMD intend for the project to enable Java applications to seamlessly take advantage of a GPU, whether it is a discrete device or integrated with a CPU.
“This project will demonstrate the performance advantages of offloading Java compute to a GPU. We propose to use the HotSpot JVM and will concentrate on code generation, garbage collection, and runtimes,” said Oracle’s John Coomes, OpenJDK HotSpot Group Lead, and Gary Frost, of AMD.
“Performance will be improved while preserving compile time, memory consumption, and code generation quality. We anticipate that this project will also provide guidance on enabling GPU support for other JVM hosted language”.
The GPU proposal was called a “useful idea” by Forrester analyst John Rymer. “The team is essentially proposing to segment Java processing into work done by the graphics processor and work done by the CPU. Developers often structure their code this way today; the proposal is to make that structure an option using the standard Java APIs.”
But Rymer as well as Coomes and Frost cited potential obstacles. “I think it will be hard to pull off if the innovation requires changing the Java API and language. Those kinds of deep changes to Java take a long time for the industry to agree on and even longer to gain widespread adoption by customers,” Rymer said.
Frost and Coomes cited potential standardization issues. “As this project progress, we may identify challenges with the Java API and constructs which may lead to new language, JVM and library extensions that will need standardisation under the JCP process.
Coomes and Frost noted intentions to leverage Java 8 lambda language and library features. Project Lamdba addresses multicore programming support by adding closures and other features to Java. Java SE (Standard Edition) 8 is due next year. The GPU project would maintain one or more code repositories derived from the OpenJDK HotSpot repository and a developers mailing list.