Performance comparison between Java and JNI for optimal implementation of computational micro-kernels
Nassim A. Halli, Henri-Pierre Charles, Jean-Fran\c{c}ois Mehaut

TL;DR
This paper compares Java and JNI implementations for computational micro-kernels, analyzing how static optimizations and various performance techniques affect execution efficiency in high-performance computing contexts.
Contribution
It provides a systematic analysis of the performance trade-offs between Java and JNI implementations, highlighting the impact of static optimizations and various performance enhancement schemes.
Findings
JNI call overhead can be offset by larger computational workloads.
Vectorization and data alignment significantly improve JNI performance.
Static compilation offers better optimization control than JIT for micro-kernels.
Abstract
General purpose CPUs used in high performance computing (HPC) support a vector instruction set and an out-of-order engine dedicated to increase the instruction level parallelism. Hence, related optimizations are currently critical to improve the performance of applications requiring numerical computation. Moreover, the use of a Java run-time environment such as the HotSpot Java Virtual Machine (JVM) in high performance computing is a promising alternative. It benefits from its programming flexibility, productivity and the performance is ensured by the Just-In-Time (JIT) compiler. Though, the JIT compiler suffers from two main drawbacks. First, the JIT is a black box for developers. We have no control over the generated code nor any feedback from its optimization phases like vectorization. Secondly, the time constraint narrows down the degree of optimization compared to static compilers…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsParallel Computing and Optimization Techniques · Logic, programming, and type systems · Embedded Systems Design Techniques
