A proposal currently floating in the Java community would use hardware acceleration to improve bulk calculations in the platform.
Project Trinity would explore enhancing execution of bulk aggregate calculations over Streams by offloading calculations to hardware accelerators. Streams in Java allow developers to express calculations so that data parallelism can be efficiently exploited, and the Stream capability in Java Standard Edition 8 is for processing data declaratively while leveraging multicore architectures.
“Such calculations are prime candidates for leveraging enhanced data-oriented instructions on CPUs, such as SIMD instructions or offloading to hardware accelerators, such as the SPARC Data Accelerator co-processor,” said Karthik Ganesan, from Oracle’s performance and applications engineering group, in his proposal made Friday in an email-based OpenJDK discussion forum.
The project would explore how libraries like Streams can be enhanced to use data processing hardware features for more efficient processing. Success would be measured based on improved speed and resource efficiency for a range of calculations under offload, ease of hardware acceleration, and ensuring there’s no time or space overhead for non-accelerated calculations.
Trinity also explores ideas like building a Streams-style library optimized for offload to hardware accelerators or a GPU and optimizing the Graal compiler to automatically transform suitable Streams pipelines and use data-processing hardware features. Project Valhalla, which focuses on advanced JVM and language features like value types, could factor into the mix as well to expand the range of effective acceleration to Streams of value types.
Votes on Trinity are due by May 4, but early feedback on the proposal was mixed. One person on the mailing list suggested using the existing Project Sumatra, which focuses on enabling Java applications to take advantage of GPUs, for the goals proposed by Trinity. Ganesan responded that Sumatra was about translating byte code to execute on a GPU, while Trinity was about APIs for analytic operations, which can be offloaded to accelerators. Another commenter suggested that Trinity also factor in Project Panama, about interconnecting the JVM and native code.