《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-8257SISD&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上的实现谢谢大家!