当前位置: 首页 > 知识库问答 >
问题:

如何在Java中使用英特尔AVX?

萧升
2023-03-14

如何使用Java中的Intel AVX矢量指令集?这是一个简单的问题,但答案似乎很难找到。

共有3个答案

拓拔德馨
2023-03-14

要从Java使用这些操作,您需要一个类似JavaCV的库。该库为英特尔处理器和NVIDIA等GPU启用矢量操作。

邢新
2023-03-14

根据工作的不同,你可能不需要做太多。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

不过,直接使用指令和内部函数并不容易。

益富
2023-03-14

正如我所知,大多数当前的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

  • 用于Java*软件的Vector API开发程序

阅读更多:

  • 是否有任何JVM的JIT编译器生成使用矢量化浮点指令的代码?
  • Java中的SIMD向量/矩阵?
  • OpenJDK中自动矢量化的状态是什么?
  • Java中的矢量化算法
 类似资料:
  • 我正在使用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选项的内容都将被提供给反汇编程序,这些选项与您从中看到的选项相同