摘要:近年来某国产深度学习加速器发展迅速,硬件资源持续变化并引入一系列张量核心指令,使得开发者在该加速器进行卷积算子的手工适配和优化面临巨大挑战。为此,本文提出了一种面向该国产加速器的卷积代码生成器,以简化卷积算子的适配与优化过程。该生成器提供配置参数作为对外接口,用户仅需配置参数即可生成特定的卷积算子。生成器本身由三层架构组成:指令层封装底层指令,并根据硬件架构进行区分;组件层根据预设的硬件架构信息组织相应指令,从线程块和线程束角度提供高度抽象且可复用的功能组件。算子构建层则按照隐式卷积算法拼接功能组件,最终生成卷积算子。为保证卷积算子的计算性能,生成器从两方面进行优化:使用向量化算法和线程划分算法优化全局访存性能;使用转置算法转化乘累加指令的线程结构以优化写回性能。测试结果表明:该生成器的优化算法可显著提升算子性能;在两种硬件版本下,NHWC存储布局的卷积算子性能分别达到官方算子性能的95%与90%。该生成器为国产加速器的卷积算子适配优化提供了一种全新的解决方案。
文章目录
0概述
1相关背景
1.1国内外加速器对比
1.2 深度学习计算加速器
1.3算子生成研究
1.3.1模板库生成算子
1.3.2编译器生成算子
1.4卷积计算相关
1.4.1深度学习卷积计算
1.4.2卷积算法
2卷积代码生成器分级架构
2.1指令层
2.1.1单线程执行指令
2.1.2多线程协作指令
2.2组件层
2.2.1Fragment组件
2.2.2全局访存组件
2.2.3共享内存访存组件
2.2.4计算组件
2.3算子构建层