《38.OpenJDK-Vector-API-RISCV.pdf》由會員分享,可在線閱讀,更多相關《38.OpenJDK-Vector-API-RISCV.pdf(23頁珍藏版)》請在三個皮匠報告上搜索。
1、OpenJDK Vector API在RISC-V上的實現RuyiSDK OpenJDK Team張定立 曹貴 Table of Contents1.OpenJDK Vector API介紹2.OpenJDK Vector API實現示例3.OpenJDK Vector API在RISC-V平臺未來工作OpenJDK Vector API 介紹參考資料:1 https:/ichi.pro/de/apples-m1-secret-coprozessor-111709032268257SISD&SIMDOpenJDK Vector API 介紹JEP 338:Vector API(Incubato
2、r)JDK16JEP 414:Vector API(Second IncubatorJEP 417:Vector API(Third Incubator)JEP 426:Vector API(Fourth Incubator)JEP 438:Vector API(Fifth Incubator)JEP 448:Vector API(Sixth Incubator)JDK21VectorAPI JEPsProject PanamaIncubatorVectorAPI 示例參考資料:1 https:/ Vector API 轉換為數據并行加速代碼OpenJDK Vector API 介紹OpenJ
3、DK Vector API 介紹RVV(RISC-V“V”Extension)是RISC-V的標準擴展。主要由 KrsteAsanovic 設計。RVV目前為 1.0 版本,frozen for public reviewhttps:/ https:/ 7.0+Compiler:GCC開發環境及測試狀態JTReg tier1-tier3 w/and w/o UseRVV75 tests under incubator/vector w/and w/o UseRVVOpenJDK Vector API 介紹OpenJDK Vector API 介紹VectorAPI以外RVV的使用Array e
4、qualsClearArrayOpenJDK Vector API 介紹封裝的高頻調用RISC-V指令封裝的vset指令封裝的vector store指令OpenJDK Vector API 介紹Arithmetic Compress/ExpandReductionShiftLoad/StoreRearrange/ShuffleCastMaskVectorAPI Opcode類型OpenJDK Vector API 介紹RISC-V Port Supported vector match rule8276799:Implementation of JEP 422:Linux/RISC-V Po
5、rt8307609:RISC-V:Added support for Extract,Compress,Expand and other nodes forVectorAPIOpenJDK Vector API 實現示例Int類型的AddReductionVI實現AddReductionVI的C2 instruct封裝的reduce函數OpenJDK Vector API 實現示例VectorAPI IntVector提供的reduceLanes 接口OpenJDK Vector API 實現示例C2 未提供VectorAPI實現的調用Reduction的方法簽名Reduction的默認實現O
6、penJDK Vector API 實現示例C2 提供VectorAPI 實現的調用Reduction的VectorAPI實現RISC-V Port Supported vector masked match ruleOpenJDK Vector API 實現示例8276799:Implementation of JEP 422:Linux/RISC-V Port8307609:RISC-V:Added support for Extract,Compress,Expand and other nodes forVectorAPISVE與RVV的mask操作對比OpenJDK Vector A
7、PI 實現示例參考資料:1 https:/arxiv.org/pdf/1803.06185.pdf2 https:/ predicate registerRVV mask registerSVE與RVV的mask操作對比(VectorLongToMask)OpenJDK Vector API 實現示例SVE的實現(50行代碼)RVV的實現(2條指令)SVE與RVV的mask操作對比(實際向量長度小于寄存器寬度,以AddReductionVI為例)OpenJDK Vector API 實現示例MaskGenAddReductionVISVE AddReductionVIAddReductionV
8、I-predicatedRVV AddReductionVIset AVL非masked及masked實現的loadmaskOpenJDK Vector API 實現示例與Zbb結合使用OpenJDK Vector API 實現示例RISC-V Port Supported vector match ruleVectorMaskLastTrue的C2 instructOpenJDK Vector API 在RISC-V平臺的未來工作優化冗余的vset指令持續跟進上游優化及JEPRVV1.0的板子上進行Benchmark及JMH測試OpenJDK Vector API 在RISC-V上的實現謝謝大家!