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

张洪滨 等: AutoConfig: 面向深度学习编译优化的自动配置机制                                            2679






                        (a1) 向量抽象长度为 128 的 MLIR 的融合乘加示例程序








                                                                     (b1) 向量抽象长度为 1 024 的 MLIR 的融合乘加示例程序



                     (a2) 向量抽象长度为 128 的融合乘加 MLIR 示例程序翻译至 LLVM IR

                              节所提及的, 本文所选择的配置项均为





                                                                 (b2) 向量抽象长度为 1 024 的融合乘加 MLIR 示例程序翻译至 LLVM IR











                       (a3) 向量抽象长度为 128 的融合乘加 MLIR 对应的汇编代码          (b3) 向量抽象长度为 1 024 的融合乘加 MLIR 对应的汇编代码
                     (a) 向量抽象长度为 128 的 MLIR 的融合乘加编译通路             (b) 向量抽象长度为 1 024 的 MLIR 的融合乘加编译通路
                                 图 3 不同向量配置下的融合乘加计算负载与               SIMD  寄存器的使用情况

                 5.1.2    Cache 信息提取与分析
                    优化算法的访存模型对实际性能有重要的影响, 因此编译优化生成代码对                         Cache 的利用十分关键. 本节对      L1
                 数据  Cache 进行信息收集和分析, 主要关注         Cache 容量和  Cache 块尺寸. 这些信息可以辅助编译器制定循环分块
                 或者循环顺序的策略, 尽可能利用          Cache 降低访存开销.
                    以实验平台     Intel(R) Xeon(R) Gold 5218R CPU  为例, L1 数据  Cache 的容量为 32 KB, 而每个  Cache 块的大小
                 为 64 字节. 这个 Cache 块的大小可以看作与 vector<16xf32> 向量抽象尺寸相当, 这与            AVX512  的寄存器长度恰
                 好一致. 当使用    vector<16xf32> 的整数倍作为向量抽象时, 数据之间并不会存在               Cache 命中或未命中的相互影
                 响. 正如 第  5.1.1                              16  的整数倍. 因此, 对于本文这种以向量化为核心的优
                 化策略, Cache 的状态不会对优化分析模型的准确性产生显著的影响. 对于访存密集型的优化任务, Cache 相关
                 的可配置项是非常重要的, 并应当纳入优化分析模型. 针对这种优化任务, Cache 容量的抽象表示和                             Cache 的结
                 构都是必须进行详细提取和分析的要素. 以该实验平台为例, 访存操作一共可以在                               L1  数据  Cache  中存放
                 vector<8192xf32>, 以及对应的二维向量表示, 例如       vector<8x1024xf32>、vector<4x512xf32> 等. L1  数据  Cache
                 采用  8  路组相连的设计, 每一路      64  个  Cache 块. 因此, 在优化过程中还需要关注访存操作的抽象长度是否会超
                 出每一路的    Cache 块数量. 为了达到高效的访存模式, 高层代码优化策略可以根据以上分析采用特定的循环分
   98   99   100   101   102   103   104   105   106   107   108