《赵英全_MLIR编译器基础设施模糊测试.pdf》由会员分享,可在线阅读,更多相关《赵英全_MLIR编译器基础设施模糊测试.pdf(39页珍藏版)》请在三个皮匠报告上搜索。
1、MLIR编译器基础设施模糊测试赵英全MLIRMLIR编译器编译器LLVM IRByteCodeSIL IRXLA HLO Dialect(方言):定义操作、属性和类型如:用于表示计算图的 tosa dialect1scfmemref.tosa如:tosa 方言的Lowering Passlevel 1level 2Pass(转换):遍历程序并执行转换和优化2.Multi-Level IR(Compiler Infrastructure)为不同领域设计独立的中间代码表示和实现新的基础设施成本高昂且容易出错不同编译系统通常涉及许多共同的代码优化(例如,循环展开优化)12MLIR多级多级中间表示(中
2、间表示(Multi-Level IRMulti-Level IR)1:applied passes:-pass-pipeline=builtin.module(func.func(tosa-to-linalg-named,linalg-generalize-named-ops)and-one-shot-bufferize-func-bufferize-convert-linalg-to-loops-canonicalize%2=tosa.transpose%1,%0:(tensor,tensor)-tensor1MLIR 程序可以通过转换为低级可执行方言(例如 llvm 方言)来执行MLIR的
3、质量保证(测试)非常重要!MLIRMLIR powered tools%0=memref.get_global _constant_1x2x3xi32:memref%alloc=memref.alloc()alignment=64:i64:memrefscf.for%arg0=%c0 to%c2 step%c1 scf.for%arg1=%c0 to%c3 step%c1%1=memref.load%0%c0,%arg0,%arg1:memref memref.store%1,%alloc%arg0,%arg1,%c0:memref 编译器测试编译器测试-测试程序生成测试程序生成传统编译器测试
4、流程1.A Survey of Compiler Testing.Junjie Chen,Jibesh Patra,Michael Pradel,Yingfei Xiong,Dan Hao,Lu Zhang.ACM Computing Surveys(CSUR)202051%7%25%1MLIR测试程序生成测试程序MLIR测试程序间接测试多样性有限2MLIR测试效果差MLIRSmith(ASEMLIRSmith(ASE 23)23)MLIR测试程序生成多样性(Dialect中的操作)有效性(保障语法和语义的正确性)MLIR 语法测试程序模版attribute:op=memref.alloc,k
5、ey=alignment C1=operand:visible_vals=%alloc,.,op=memref.store,attrs=,types=f32 V6 =%alloc实例化规则测试程序模版实例化程序模板构建程序模板构建func.func parallel_store(%cst:f32,%lb:index,%rb:index,%step:index)MLIR 程序模板的语法规则程序模版示例V 和 C 分别是操作数和属性的占位符语法正确性signature returntypebody%alloc=memref.alloc V1 alignment=C1:memref scf.para
6、llel(%iv)=V2 to V3 step V4 return memref.store V5,V6 V7 scf.yield 程序模板实例化程序模板实例化 func.func parallel_store(%cst:f32,%lb:index,%rb:index,%step:index)%alloc=memref.alloc(%rb)alignment=C1:memref scf.parallel(%iv)=(%lb)to(%rb)step(%step)memref.store%cst,V6 V7 scf.yield return%iv%allocq attribute:op=memre