《金鐘暉-CoreJava-Dragonwell+VectorAPI 助力Java高性能新時代.pdf》由會員分享,可在線閱讀,更多相關《金鐘暉-CoreJava-Dragonwell+VectorAPI 助力Java高性能新時代.pdf(12頁珍藏版)》請在三個皮匠報告上搜索。
1、Dragonwell+VectorAPI 助力Java高性能新時代演講人:金鐘暉英特爾數據中心和AI事業部高級應用軟件工程師CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava20
2、23CoreJava20231.Java 高性能計算遇到的挑戰2.VectorAPI:Java在特定領域進行高性能計算的利器3.如何才能更好利用VectorAPI?4.阿里巴巴和英特爾在Dragonwell上的合作CONTENT目錄CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023Core
3、Java2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava20231.Java 高性能計算遇到的挑戰 向量化(Vectorization)高性能計算的標配 多媒體,游戲娛樂,大數據處理,機器學習,人工智能都重度依賴于向量化運算;使用向量化計算可以獲得數倍的性能提升。向量化運算使用的SIMD(Single Instruction Multiple Data)硬件單元普遍存在于目前主流硬件平臺上 Java進行向量化運算限制較多,要么依賴于JVM的自動向量化,要么通過JNI(Java Native Interface)調用本地實現
4、 利用SIMD硬件的途徑:自自動動向向量量化化調調用用本本地地語語言言庫庫直直接接針針對對 SIMD 單單元元編編程程C/C+、匯編等本地語言是是是(Intrinsic/匯編)Java是是(JNI)是(VectorAPI)CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2
5、023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava20232.VectorAPI:Java在特定領域進行高性能計算的利器 VectorAPI可以清晰簡潔地表達范圍廣泛的向量計算,并將Java代碼在運行時可靠地編譯為支持的CPU架構上的最佳向量硬件指令 VectorAPI是架構不可知的,可以在支持向量運算的多個CPU架構上實現運行 優雅降級:如果向量運算在運行時不能完全表示為一系列硬件向量指令,VectorAPI將會優雅降級并且仍然起作用 VectorAPI(Incubator,JEP 338,JEP:JDK Enhanceme
6、nt Proposals)最初于 2018 年 4 月開始創建,在 OpenJDK16 作為孵化器項目(2020年10月)被引入。隨著后續 OpenJDK 版本的升級,VectorAPI 也得到了同步升級OpenJDK 17-JEP 414,Second IncubatorOpenJDK 18-JEP 417,Third IncubatorOpenJDK 19-JEP 426,Fourth IncubatorOpenJDK 20-JEP 438,Fifth Incubator 每次 VectorAPI 的升級都會帶來性能提升,更多功能和 Bugfix。CoreJava2023CoreJava2
7、023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023一段使用VectorAPI的代碼在這個例子中,當使用VectorAPI后,在支持AVX-512的硬件平臺上,一次加法可以處理(512/32
8、=16)16個浮點數;而傳統加法一次只能處理一個浮點數。CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023 高性能計算、AI、多媒體領域廣泛使用的
9、BLAS(BasicLinearAlgebraSubprograms,基本線性代數子程序),可以得到2.2X4.5X的提升。使用VectorAPI的示例(1)CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJ
10、ava2023CoreJava2023CoreJava2023 圖像處理Sepia過濾,最多得到6倍提升:使用VectorAPI的示例(2)CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023Co
11、reJava2023CoreJava2023 特定的數據庫應用得到2倍以上提升:使用VectorAPI的示例(3)CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023Cor
12、eJava2023 Parquet-Decoder有48倍提升:https:/ Incubator 15需要改寫應用代碼業界現狀:主流的JDK版本 8/11不支持VectorAPI主流的框架和應用對較新JDK的支持度不夠JDK版本的遷移的成本高昂解決手段從OpenJDK入手:移植 VectorAPI到主流OpenJDK版本從應用和框架入手:改寫應用和框架,支持高版本OpenJDK3.如何才能更好利用VectorAPI?CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJ
13、ava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023 Dragonwell:是OpenJDK 的下游版本,是阿里巴巴針對 10萬+服務器上運行的在線電商、金融、物流應用優化的 OpenJDK 實現。Dragonwell 是 OpenAnolis 的默認 JDK,Alibaba 的眾多 Java 應用,正在逐步遷移到 Drag
14、onwell 上。https:/ 雙方緊密合作,移植VectorAPI到Dragonwell11上 移植難點:v涉及代碼量巨大 300+文件,29萬+行源碼v需要和上游OpenJDK保持關聯v性能需要和上游OpenJDK接近v穩定可靠是強需求 JEP338(Incubator)已經合并到Dragonwell11主分支 JEP414(2nd Incubator)的移植正在進行中;后續版本也在計劃中 應用層的優化 數據庫/大數據領域探索4.阿里巴巴和英特爾在Dragonwell上的合作CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2
15、023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023感謝聆聽演講人:金鐘暉CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023CoreJava2023