Page 96 - 《软件学报》2024年第6期
P. 96

2672                                                       软件学报  2024  年第  35  卷第  6  期


                    现有的优化和调优策略一般分为编译器的自动调优和调用手动优化高性能库两个大类, 二者的特性决定了它
                 们各自适合不同的场景. 自动调优在循环优化上有出色的效果, 在同类硬件上可以复用基础设施避免重复开发, 但
                 是由于缺乏可解释性, 这种优化和调优方法在新型硬件架构上需要准确的代价模型和耗时的搜索调优过程才能发
                 挥作用. 手动优化能够最大化地利用硬件特性, 可以达到极致性能表现, 但往往需要使用平台特定的编程模型或接
                 口, 即使同类硬件也需要重复开发优化, 造成大量的工程和维护开销.

                 2.3   编译基础设施   MLIR
                    MLIR [16] 是一种现代编译基础设施, 它致力于提供模块化、可复用、可扩展的多层中间表示. 目前, MLIR                         已
                 经逐渐形成一个编译生态, 尤其是在深度学习编译优化领域, 许多前端框架和后端硬件提供了对                               MLIR  的编译支
                 持  [24−26] . MLIR  的特点在于其所抽象出的多层中间表示. 每一层中间表示称作方言               (Dialect), 这是  MLIR  扩展机制
                 的核心概念. MLIR    提供一系列内置的核心方言, 包括高层级面向领域计算的方言                    (TOSA Dialect, Linalg Dialect).
                 循环变换级别的方言        (Transform Dialect, Affine Dialect, SCF Dialect). 硬件抽象级别的方言  (MemRef Dialect,
                 Vector Dialect). 特定后端级别的方言   (LLVM Dialect, GPU Dialect). 在每一种方言内可以定义操作     (operation)、类
                 计算负载的编译时评估计算开销, 并根据此评估结果自动选择并配置最优的代码生成策略.
                 型  (type)、属性  (attribute), 来提供特定抽象表示的语义.
                    MLIR  提供了强大的扩展机制和自动化能力, 用户可以使用声明式的方法灵活地扩展出自定义方言. 所有的
                 内置方言均可与自定义方言兼容, 并且可以复用所有的内置编译下降通路与优化. 这种扩展能力还使得                                 MLIR  支
                 持与其他已有的编译器对接, 便于支持更多的后端和硬件平台.

                 3   AutoConfig  概述

                    本节概述    AutoConfig  机制的设计思路、模块组成、使用方式和生态集成.

                 3.1   AutoConfig  的设计思路
                    深度学习编译器间的差异主要体现在优化方式和调优策略的设计方面. 如图                          2(a) 所示, 目前领域内广泛使用
                 如下两种优化和调优策略: (1) 计算与调度分离的编译优化方式, 结合编译器的自动调优机制; (2) 图级别编译器生
                 成特定优化算子, 结合手动调优的高性能算子库. 前者通过提供优化与调优编程接口, 将调优的复杂度交给编译器
                 的使用者; 后者通过使用硬件平台特定的编程模型来编写高性能库, 将调优的复杂度交给高性能库的编写者.
                    本文提出的     AutoConfig  是一种新的面向深度学习计算负载的编译优化和调优方法, 其核心设计思路是编写
                 可配置的代码生成重写模式, 结合优化分析模型自动配置调优过程, 将调优的复杂度交给编译器的设计者和开发
                 者. 这种设计思路可以利用编译器桥接软硬件的天然优势, 获取计算负载的语义信息和计算平台硬件信息, 实现可
                 配置的编译优化和调优机制. 如图          2(a) 所示, AutoConfig  采用优化分析模型自动配置调优策略, 并选择合适的优化
                 算法进行代码生成, 有效地权衡了多种优化算法和调优策略. 相比自动调优和手动优化, AutoConfig                        的设计能够达
                 成一次优化实现适配多种硬件平台的目标, 并且具有性能可解释、可迁移的特性.
                    可配置的代码生成重写模式是           AutoConfig  优化方法的基础. 通过采用粗颗粒度重写的优化策略, AutoConfig
                 可以在保障优化通用性和高性能的同时, 将优化算法实现为可配置的编译优化. 这种策略集成到编译工具链中, 使
                 得不同目标硬件平台的代码生成可以进行灵活的配置. 此外, 重写模式的配置过程依赖于优化分析模型, 它可以在


                    优化分析模型是      AutoConfig 调优方法的基础. 该模型对优化算法的总体计算开销进行建模, 将其分解为计算、
                 访存和特殊指令的开销总和. 编译优化的开发者在实现代码生成重写模式时, 也需配套构建参数化的优化分析模
                 型, 并根据硬件信息确定可配置参数取值范围. 在编译过程中, 优化分析模型通过具体的参数配置和动态测量的程
                 序特性来确定总开销. 各优化算法对应的预测总开销是选择代码生成策略的关键依据, 以确保最终的编译优化结
                 果能够最小化计算开销.
                    值得强调的是, AutoConfig   中的各模块构成了可以服务于任意编译优化和调优的基础设施, 并具有良好的可
   91   92   93   94   95   96   97   98   99   100   101