Java Vector API 旨在提供一个机制用于在 Java 中编写复杂的向量 (vetor) 算法.
甲骨文和英特尔正在开发一种 Java API 来为平台添加对向量 (vector) 或单指令多数据流(SIMD) https://www.infoworld.com/article/3175127/software/simd-intrinsics-aren-t-so-scary-but-should-we-use-them.html 的 "一级(first-class)" 支持, 这将会带来巨大的性能提升.
作为专注于互连 JVM 和原生代码的 Panama 项目 https://www.infoworld.com/article/3187868/application-development/oracles-java-on-java-experiment-picks-up-steam.html 的一部分, 这个 API 旨在提供 incubator 模块 jdk.incubator.vector 的初始迭代, 以用于表达向量计算 -- 在运行时阶段编译为所支持的 CPU 架构上的最佳硬件指令. 计划支持 Graal 编译器, 项目的目标包括:
提供清晰简洁的 API, 能够表达各种矢量计算
在 x64 架构上提供可靠的运行时编译和性能
兼容不同的架构
优雅降级: 如果矢量计算无法在运行时阶段作为序列完全表达, 或者因为 x64 架构不支持某些指令, 或其他 CPU 架构不被支持, 那么 Vector API 的实现会优雅地降级, 但仍然会起作用. 开发者也会收到有关此问题的警告
如果甲骨文和英特尔能兑现这个承诺, Java Vector API 将会提供一种这样的机制 -- 利用 HotSpot 虚拟机中的现有支持进行矢量化, 从而在 Java 中编写复杂的矢量算法. 使用向量运算, 一定程度的并行可以在单个 CPU 周期内完成更多工作. 因此, 可以获得显著的性能提升. API 中的用户模型 (user model) 将利用底层的矢量硬件, 从而使得矢量化更具可预测性.
在这一方面, 甲骨文和英特尔表示, 该提案并未引用一个特定的 Java 版本作为 API 依赖的版本, 但该项目的范围仅适用于 Java SE. 另外, 该项目存在一个这样的风险 -- 在 x64 架构上, API 可能会偏向于 SIMD, 不过其他架构也将会被考虑在内, 特别是 ARM Scalar Vector 扩展架构.
来源: http://news.51cto.com/art/201808/581569.htm