如何使用Java的Intel i7 Vector处理器(AVX)?这是一个简单的问题,但答案似乎很难找到.
phu*_*clv 12
据我所知,大多数当前的 Java JVM JITters 不支持自动矢量化,或者只是为非常简单的循环执行此操作,因此您很不走运。
在 Mono 的 .NET 实现中,有Mono.Simd手动矢量代码发射,后来 MS 引入了System.Numeric.Vectors. 不幸的是,Java 中没有类似的东西。我不知道 Java 的向量类是否使用 SIMD 进行了矢量化,但我认为不是。
如果您想使用像 AVX 这样的 CPU 特定功能,那么您唯一的选择就是 JNI。用 C 或 C++ 编写瓶颈部分并从 Java 中调用它
Scala 提供了另一种解决方案,可以在不修改 JVM 的情况下使用矢量化代码,您可以在我们如何使 JVM 速度提高 40 倍中阅读
现在正在开发一个新的 Vector API 来手动编写矢量代码
提供孵化器模块 jdk.incubator.vector 的初始迭代,以表达向量计算,这些计算在运行时可靠地编译为支持的 CPU 架构上的最佳向量硬件指令,从而实现优于等效标量计算的性能。
阅读更多:
| 归档时间: |
|
| 查看次数: |
4098 次 |
| 最近记录: |