GPU acceleration is coming to Java, according to speakers at the annual JavaOne conference.
The news of support for GPU accelerators in Java came from two sources - IBM’s Chief Technology Officer of Java, John Duimovich and Mark Reinhold, Oracle’s Chief Architect, the Java Platform Group.
In his keynote address, shown in the video, John Duimovich made the announcement that GPU acceleration is coming to the Java platform, and that the incredible computing power of GPUs will speed up both client and server systems.
He pointed out that GPU accelerators "pack incredible compute power", and that making use of their 10 times speedups for Java workloads can accelerate complex computations that process lots of data.
In the keynote Duimovich showed the effect of GPU acceleration on sorting standard Java arrays, with the time for a sort running from two times faster to 48 times faster depending on the array length.
In a report of Duimovich's keynote, Sumit Gupta of NVidia said that the benefits are possible in Java JDK 8 by taking advantage of existing CUDA libraries to accelerate the Java libraries for parallel operations. CUDA is a parallel programming platform and programming model that has been implemented in C, C++, Fortran, and Python.
According to Duimovich, IBM will enable IBM runtimes for server-based GPU accelerators and explore acceleration in ordinary workloads under existing APIs.
In his Technical Keynote at JavaOne, Mark Reinhold, gave some details of what Java SE9 might hold. Here again GPUs were mentioned. Reinhold said that as GPUs are increasingly used to process big data it would be good to make Java work directly with the GPU rather than having to call out to some primitive interface. An OpenJDK called Sumatra has people working on this.
Other things for the future, according to Reinhold, include of the need for reification and eliminating the “annoying dichotomy between primitive and reference types” would be of value. This would provide an alternative to the way Java’s generics are currently based on the notion of erasure to provide migration compatibility, but that this limits what can be expressed in the types.
Reinhold also brought up JNI (Java Native Interface) 2.0 and said:
“It just shouldn’t be so hard to integrate Java with native code after all these years.”
Memory efficient data structures that make it possible to load more data into memory were another area for potential improvement, with Reinhold saying that “all this boxing and pointer chasing makes it hard to do big data well. We could have less boxing and pointer chasing and load a lot more data into memory.”
The final forward looking thought was that of a truly modular platform:
“The compact profile in Java 8 is a start but it is not flexible enough. We need to continue to unify the Java SE and Java ME platforms.”