甲骨文和英特爾開發支持SIMD的Java API以提升性能
Java Vector API 旨在提供一個機制用于在 Java 中編寫復雜的向量(vetor)算法。
甲骨文和英特爾正在開發一種 Java API 來為平臺添加對向量(vector)或單指令多數據流(SIMD)的“一級(first-class)”支持,這將會帶來巨大的性能提升。
作為專注于互連 JVM 和原生代碼的 Panama 項目的一部分,這個 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 擴展架構。
來自:InfoWorld