AI 编译器后端优化
AI 编译器分为多层架构,最顶层由各种 AI 训练框架编写的神经网络模型架构,一般由 Python 编写,常见的 AI 训练框架有 PyTorch、MindSpore、PaddlePaddle 等。在导入 AI 编译器时需要用对应框架的 converter
功能转换为 AI 编译器统一的 Graph IR,并在计算图级别由 Graph Optimizer
进行计算图级优化,也叫前端优化。
前端优化主要的计算图优化包括图算融合、数据排布转换、内存优化、死代码消除,这些优化是硬件无关的通用优化。在得到优化后的计算图后,将其转换为TensorIR
,送入OpsOptimizer
进行算子级优化,也叫后端优化,这类优化是硬件相关的,主要包括循环优化、算子融合、tiling、张量化。在算子级优化结束后,即进入代码生成阶段。本文将重点介绍 AI 编译器的后端优化相关功能。
后端优化
后端优化基本概念
在 AI 编译器中存在两层中间表示,相应也存在两类优化,即前端优化和后端优化。
前端优化:针对计算图整体拓扑结构优化,不关心算子的具体实现。主要优化流程为对算子节点进行融合、消除、化简,使得计算图的计算和存储开销最小。