030、自动调优与搜索:AutoML在MLIR中的应用

张开发
2026/4/20 13:45:59 15 分钟阅读

分享文章

030、自动调优与搜索:AutoML在MLIR中的应用
030、自动调优与搜索:AutoML在MLIR中的应用从一次深夜调试说起上周团队里的小张跑来找我,说同一个卷积算子,在A架构上比B架构慢了整整三倍。我让他把MLIR的编译流水线dump出来,一行行对比。结果发现,问题出在tiling参数的自动选择上——编译器默认的启发式规则在A架构上选了个糟糕透顶的配置。小张嘟囔着:“这参数组合多得跟天文数字似的,难道要我们手动一个个试?”这句话点醒了我。这不正是AutoML该上场的时候吗?MLIR的中间表示层,恰恰是嵌入自动搜索的最佳土壤。MLIR为什么需要自动调优?传统编译器优化靠的是硬编码的规则和成本模型。但在异构计算时代,硬件变体太多:CPU的缓存层次、GPU的线程块大小、AI加速器的张量核心……每个架构都有自己的“脾气”。手动写规则?写不完,也调不动。MLIR的妙处在于,它把计算图拆成了多层抽象。你在linalg层看到的矩阵乘,到底该怎么tile、怎么向量化、怎么映射到硬件指令,这些决策点都暴露在IR转换过程中。每个决策点都是一组待搜索的参数。搜索空间怎么定义?看个实际例子。这是我们在做卷积优化时定义的一个简化搜索空间:// 搜索空间定义(伪代码风格) search_space { // tile大小,这几个值是我们从硬件手册里推测的候选值 tile_si

更多文章