如何使用Java中的Intel AVX矢量指令集?这是一个简单的问题,但答案似乎很难找到。
要从Java使用这些操作,您需要一个类似JavaCV的库。该库为英特尔处理器和NVIDIA等GPU启用矢量操作。
根据工作的不同,你可能不需要做太多。AVX2由JVM自动用于阵列和字符串上的某些操作,支持平台包括Haswell Forwards和Xeon v3 Forwards。
https://software.intel.com/en-us/articles/java-application-performance-improvement-with-intel-xeon-processor-e7-v3
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX2
从Ryzen 3/Epyc Rome,您还可以在AMD处理器上获得单周期AVX2:https://www.anandtech.com/print/14525/amd-zen-2-microarchitecture-analysis-ryzen-3000-and-epyc-rome
不过,直接使用指令和内部函数并不容易。
正如我所知,大多数当前的Java JVM抖动不支持自动矢量化,或者只支持非常简单的循环,所以你运气不好。
在Mono的. NET实现中,有Mono. Simd用于手动矢量代码发射,后来MS引入了System. Number. Vector。不幸的是,Java中没有类似的东西。我不知道Java的向量类是否使用SIMD进行矢量化,但我不认为是这样。
如果您想使用特定于CPU的特性,如AVX,那么您唯一的选择就是JNI。用C或C编写瓶颈部分并从Java调用
Scala的另一个解决方案是在不修改JVM的情况下使用矢量化代码,您可以从我们如何使JVM速度提高40倍中了解到这一点
现在有一个新的Vector API正在开发中,用于手动编写向量代码
提供孵化器模块jdk的初始迭代。恒温箱向量,用于表示在运行时可靠编译为支持的CPU体系结构上的最佳向量硬件指令的向量计算,从而实现优于等效标量计算的性能。
https://openjdk.java.net/jeps/338
阅读更多:
我正在使用Intel Ivy Bridge CPU,希望使用RDRAND操作码(https://software.intel.com/en-us/articles/intel-digital-random-number-generator-drng-software-implementation-guide)在C#中。 如何通过C#调用此CPU指令?我在这里看到了一个从c#执行汇编代码的示例:C#
本人背景算法工程师,cv方向论文两篇,nlp实习经历。 一轮 25min 自我介绍 询问项目论文 问题:resnet架构、c++程序执行过程 反问 二轮 40min 自我介绍 询问项目论文(论文很细致,结构、损失、数据集、实验结果、创新点) 问题:Transformer架构、核心公式以及采用什么的正则化、BN和LN的区别。其实大部分是根据论文内容发散 反问 三轮HR面 25min 没有自我介绍 问
我有一个带有四个麦克风卡(mic0-mic3)的服务器,它工作得很好。我想禁用一些麦克风,例如mic3,现在只有mic0-mic2可用。我该怎么办?
我试图在一个应用程序中使用quartz和SQLite。当我阅读这里的文档时,我注意到它们在可用的数据库中没有提到SQLite。他们说: JDBCJobStore几乎可以与任何数据库一起工作,它已经被Oracle、PostgreSQL、MySQL、MS SQLServer、HSQLDB和DB2广泛使用。要使用JDBCJobStore,必须首先创建一组数据库表供Quartz使用。您可以在Quartz发
我想安装英特尔 HAXM(使 Android 模拟器更快),但安装程序显示我的计算机“不支持虚拟化技术 (VT-x)”。 在BIOS中,我看到我启用了虚拟化技术,并且我还有运行良好的Windows Phone模拟器(需要这项技术)。 我下载了Intel Identification Utility,它说我的Processor不支持这项技术(尽管上面的事实和互联网上的搜索表明我的i5确实支持这项科技
问题内容: 每次与Hotspot一起使用时,都不得不烦恼我,不得不阅读可怕的AT&T语法。 有没有办法告诉它使用英特尔语法? 问题答案: 您所需要做的就是将一些选项解析到dis-asm.h和binutils代码上 对于Intel Asm(我也更喜欢),只需添加以下内容 如果您需要组合选项,请像这样用逗号分隔 任何未被识别为hsdis选项的内容都将被提供给反汇编程序,这些选项与您从中看到的选项相同