甲骨文和英特尔正在开发Java API,以向平台添加一流的向量或SIMD(单指令,多个数据)支持,这可能会大大提高性能。
该API是“巴拿马项目”的一部分 ,该项目侧重于JVM和本机代码的互连,旨在提供孵化器模块jdk.incubator.vector
的初始迭代,以表达矢量计算,这些矢量在运行时编译为支持的CPU架构上的最佳硬件指令。 计划要求对Graal编译器提供支持。 该项目的目标包括:
- 提供清晰简洁的API,能够表达各种矢量计算。
- 在x64体系结构上可靠的运行时编译和性能。
- 建筑不可知论。
- 平稳降级,如果由于x64架构不支持某些指令或不支持其他CPU架构而无法在运行时将矢量计算完全表示为序列,则Vector API实现将正常降级但仍可正常运行。 开发人员可能会收到关于此的警告。
如果Oracle和Intel兑现了诺言,则Java Vector API将提供一种使用HotSpot虚拟机中的现有支持进行矢量化的,用Java编写复杂矢量算法的机制。 通过向量运算,一定程度的并行度允许在单个CPU周期内完成更多工作。 因此,可以显着提高性能。 API中的用户模型将使用基础矢量硬件使矢量化更加可预测。
在这一点上,尽管该项目的范围旨在用于Java的标准版本,但该提案并未引用该API所用的特定Java版本。 该项目存在API可能偏向于x64体系结构上的SIMD的风险。 但甲骨文和英特尔表示,还将考虑其他架构,特别是ARM Scalar矢量扩展架构。