Design of a custom vector operation API exploiting SIMD intrinsics within Java

Design of a custom vector operation API exploiting SIMD intrinsics within Java
复制标题

利用 Java 中的 SIMD 内在函数设计自定义向量运算 API

DOI:
10.1109/ccece.2010.5575190
复制
发表时间:
2010
期刊:
CCECE 2010
影响因子:
--
通讯作者:
V. Groza
V. Groza
中科院分区:
--
文献类型:
--
作者:
J. Parri;J. Desmarais;Daniel Shapiro;M. Bolic;V. Groza

文献摘要

被引文献

相似文献

单指令多数据(SIMD)操作的使用有助于满足高性能计算的需求。大多数语言,包括C/C++,都赋予用户直接利用这种硬件和固有并行性的能力。我们已经创建了一个可重定向的本机SIMD库,Java程序员现在可以使用它通过API中规定的Java方法直接访问SIMD内部函数,包括MMX,SSE 1,SSE 2和SSE 3。这个API让用户直接控制他们的高性能计算,而不是仅仅依赖于Java虚拟机(JVM)的SIMD优化,或者依赖于必须从CPU发送和接收数据的GPU。通过使用这个Java API和包含的后备库,可以在大型和复杂的向量操作上获得显著的性能提升。我们展示了一个示例,与仅依赖JVM中的SIMD优化相比,API在小型和大型数据集上都获得了2倍到3倍的加速。
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.