当前位置:首页 > 报告详情

010--徐凯亮.pdf

上传人: 山哈 编号:725262 2025-07-04 10页 400.50KB

1、RVV 编译选项对性能影响的探究徐凯亮 黄知柏上海交通大学 tcloud 实验室RISC-V 中国峰会 20241/10RVV 的重要性 RVV:RISC-V Vector Extension,变长向量 备受关注的 RISC-V 高性能之路 RVA23(v0.5:Candidate for Freeze Milestone Vote)的必选 后续高性能扩展(Zvb*,Zvk*)的依赖 工具链、配套环境跟进支持 现在 RVV 用起来性能怎么样了?超算中向量指令集的使用Evaluating Auto-Vectorizing Compilers throughObjective Withdrawal

2、 of Useful Information.DOI:10.1145/3356842.2 2/10/10RVV 编译汇编saxpy:vsetvli a4,a0,e32,m8,ta,ma vle32.v v0,(a1)sub a0,a0,a4 slli a4,a4,2 add a1,a1,a4 vle32.v v8,(a2)vfmacc.vf v8,fa0,v0 vse32.v v8,(a2)add a2,a2,a4 bnez a0,saxpy ret编译器 intrinsicvoid saxpy(size_t n,const float a,const float*x,float*y)for(

3、size_t vl;n 0;n-=vl,x+=vl,y+=vl)vl=riscv_vsetvl_e32m8(n);vfloat32m8_t vx=riscv_vle32_v_f32m8(x,vl);vfloat32m8_t vy=riscv_vle32_v_f32m8(y,vl);riscv_vse32_v_f32m8(y,riscv_vfmacc_vf_f32m8(vy,a,vx,vl),vl);自动向量化void saxpy(size_t n,const float a,const float*x,float*y)for(size_t i=0;i n;i+)yi=a*xi+yi;简单的编程

4、方式需要编译器支持3/10编译器自动向量化能力实验编译器GCC 14.1.0Clang/LLVM 18.1.6支持情况(2023)GCC 13:RVV intrinsic(2024)GCC 14:RVV 自动向量化借用 ARM SVE 等(2022)LLVM 14 开始陆续支持相关选项优化等级-O2/-O3/-Ofast-O2/-O3/-Ofast目标架构-march=rv64gcv_zvlNNNb-march=rv64gcv_zvlNNNb向量化-ftree-vectorize-fvectorizeLMUL-mrvv-max-lmul=dynamic,m1,m2,m4,m8-mllvm-ri

5、scv-v-register-bit-width-lmul=LMUL向量长度-mrvv-vector-bits=scalable,zvl-mrvv-vector-bits=scalable,zvl,VLEN-mllvm-riscv-v-vector-bits-min,max=VLEN 编译器已经有功能支持,那么编译的 RVV 程序性能如何?4/10参考加速比例:用 intrinsic 的加速比应用 llama.cpp,RVV intrinsic 加速计算 vs 标量计算(-march=rv64gcv)设备 香蕉派 BPI-F3,CPU 进迭时空 SpacemiT K1(后同)负载 Mamba

6、2.8b 模型(4bit 量化)达成加速比模型加载(s)每秒处理提示词每秒推理总时间(s)标量16.720.520.46148.16向量9.602.951.77738.95加速比1.74x5.67x3.85x4.99x intrinsic 可以取得很好的加速比,那自动向量化呢?5/10对比成熟向量:micro benchmark测试套件 TSVC向量加速比例(几何平均)x64 23%RV64 GCC 24%RV64 Clang 25%micro benchmark 上可以达到

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要探讨了RVV(RISC-V Vector Extension)编译选项对性能的影响。关键点如下: 1. RVV是RISC-V高性能扩展的重要部分,对工具链和支持环境有依赖。 2. 通过实验比较了使用RVV intrinsic和自动向量化编译的程序的加速比。在香蕉派BPI-F3上,使用intrinsic的加速比达到4.99x。 3. 微型基准测试显示,RV64架构的GCC和Clang编译器自动向量化性能可以达到成熟架构水平,GCC自动向量化(O3优化)默认LMUL=1时,比标量加速19%。 4. 但自动向量化并不总是有效,部分应用上可能出现负收益,原因包括编译器的代价模型与实际不匹配。 5. VLS(向量定长)相比VLA(向量变长)有性能优势,但优势不大。 结论:RVV自动向量化对宏观性能提升有限,不适合全面开启;与成熟向量架构性能存在差距,需进一步调优。
"RVV性能加速比有多强?" "自动向量化对RVV有何影响?" "VLS与VLA哪个性能更优?"
客服
商务合作
小程序
服务号
折叠