1、基于MLIR的RISC-V编译优化实践以Buddy Compiler为例演讲人:周旭林、张洪滨作者:周旭林(ISCAS)张洪滨(ISCAS)高世豪(ISCAS)王润(ETH)张煦正(BJUT)陈威威(BJUT)刘尚昊(BUAA)概述:基于MLIR的RISC-V编译优化实践1面向RISC-V CPU的AI模型向量化vsetvli zero,s3,e32,m2,ta,mavle32.v v10,(s4),v0.tadd s4,s2,s1slli s4,s4,2add s4,a4,s4vle32.v v12,(s4),v0.tvmul.vx v10,v10,t6vadd.vv v10,v10,v12
2、vse32.v v10,(s4),v0.tadd s1,s1,s3sub t5,t5,s3bgtz t5,.LBB1_7Buddy CompilerV拓展汇编指令概述:基于MLIR的RISC-V编译优化实践2Buddy Compiler的技术路线面向RISC-V CPU的AI模型向量化vsetvli zero,s3,e32,m2,ta,mavle32.v v10,(s4),v0.tadd s4,s2,s1slli s4,s4,2add s4,a4,s4vle32.v v12,(s4),v0.tvmul.vx v10,v10,t6vadd.vv v10,v10,v12vse32.v v10,(s
3、4),v0.tadd s1,s1,s3sub t5,t5,s3bgtz t5,.LBB1_7Buddy CompilerV拓展汇编指令概述:基于MLIR的RISC-V编译优化实践3Buddy Compiler的技术路线Vector方言LLVM方言V拓展方言Linalg方言面向RISC-V CPU的AI模型向量化依托MLIR的多级别方言发挥V拓展向量化潜力vsetvli zero,s3,e32,m2,ta,mavle32.v v10,(s4),v0.tadd s4,s2,s1slli s4,s4,2add s4,a4,s4vle32.v v12,(s4),v0.tvmul.vx v10,v10,
4、t6vadd.vv v10,v10,v12vse32.v v10,(s4),v0.tadd s1,s1,s3sub t5,t5,s3bgtz t5,.LBB1_7Buddy CompilerV拓展汇编指令概述:基于MLIR的RISC-V编译优化实践4Buddy Compiler的技术路线Vector方言LLVM方言V拓展方言Linalg方言面向RISC-V CPU的AI模型向量化依托MLIR的多级别方言发挥V拓展向量化潜力vsetvli zero,s3,e32,m2,ta,mavle32.v v10,(s4),v0.tadd s4,s2,s1slli s4,s4,2add s4,a4,s4vl
5、e32.v v12,(s4),v0.tvmul.vx v10,v10,t6vadd.vv v10,v10,v12vse32.v v10,(s4),v0.tadd s1,s1,s3sub t5,t5,s3bgtz t5,.LBB1_7Buddy CompilerV拓展汇编指令基于V拓展的多层级BenchmarkMatmulSoftmaxLinear模型层模块层linalg.matmullinalg.batch_matmullinalg.softmax算子层算子层(方言实现)AI编译框架Buddy Compiler5AI编译框架Buddy Compiler6前端图基础设施支持Pytorch模型接入
6、AI编译框架Buddy Compiler7前端图基础设施支持Pytorch模型接入中端实现模型算子通用优化AI编译框架Buddy Compiler8前端图基础设施支持Pytorch模型接入后端添加自定义方言(V拓展优化支持的关键!)中端实现模型算子通用优化AI编译框架Buddy Compiler9前端图基础设施支持Pytorch模型接入后端添加自定义方言多层级V拓展Benchmark中端实现模型算子通用优化AI编译框架Buddy Compiler10前端图基础设施支持Pytorch模型接入后端添加自定义方言多层级V拓展Benchmark中端实现模型算子通用优化MLIR界的“godbolt”!V