Title :
Design of a custom vector operation API exploiting SIMD intrinsics within Java
Author :
Parri, Jonathan ; Desmarais, John-Marc ; Shapiro, Daniel ; Bolic, Miodrag ; Groza, Voicu
Author_Institution :
Comput. Archit. Res. Group, Univ. of Ottawa, Ottawa, ON, Canada
Abstract :
The use of Single Instruction Multiple Data (SIMD) operations can be instrumental in meeting the needs of high performance computations. Most languages, including C/C++, give a user the power to directly exploit this hardware and inherent parallelism. We have created a retargetable native SIMD library which Java programmers are now able to use to directly access SIMD intrinsics including MMX, SSE1, SSE2 and SSE3 through prescribed Java methods in an API. This API gives users direct control over their high-performance computations instead of solely relying on the SIMD optimizations of the Java Virtual Machine (JVM), or relying on a GPU which must send and receive the data from the CPU. Through the use of this Java API and the included backing library, substantial performance gains can be achieved on large and complex vector operations. We show an example for which the API obtains a 2x to 3x speedup for both small and large data sets as compared to solely relying on the SIMD optimizations in the JVM.
Keywords :
Java; application program interfaces; coprocessors; parallel processing; software libraries; virtual machines; GPU; Java Virtual Machine; custom vector operation API; native SIMD library; single instruction multiple data operation; Computer architecture; Java; Libraries; Manuals; Optimization; Parallel processing; Registers; Java API; Parallelism; SIMD; SSE; Streaming SIMD Extensions; Vector Operations;
Conference_Titel :
Electrical and Computer Engineering (CCECE), 2010 23rd Canadian Conference on
Conference_Location :
Calgary, AB
Print_ISBN :
978-1-4244-5376-4
Electronic_ISBN :
0840-7789
DOI :
10.1109/CCECE.2010.5575190