【技术实现步骤摘要】
优化循环的方法、可读存储介质及编译器
[0001]本专利技术一般地涉及神经网络领域。更具体地,本专利技术涉及编译程序时优化描述神经网络算子的循环的方法、可读存储介质及编译器。
技术介绍
[0002]在实现神经网络的算子时,开发者可以利用多种计算方法达到相同的计算结果,不同的计算方法会延伸出代码的局部性、并行性的差异。TVM是一种开源深度学习编译器,其通过提供图级别的优化和算子级别的优化,为不同的硬件后端生成高效的机器代码。
[0003]TVM基于张量表达式来定义算子,并提供一系列调度原语对算子代码做循环变换。用张量表达式描述的算子会被TVM翻译为TVM中间表示(intermediate representation,IR),中间表示是一种树状的、易于描述循环计算的高级表达方式。TVM在中间表示上实现了一系列分析和变换的优化遍,对算子进行调整,最终生成目标硬件平台上的高效代码。
[0004]深度学习应用中的重要算子,如卷积、矩阵乘和向量加等,都会被TVM编译生成中间表示上的多层嵌套循环,这类程序经过循环变换后会 ...
【技术保护点】
【技术特征摘要】
1.一种编译程序时优化描述神经网络算子的循环的方法,包括:遍历所述程序中的所有语句,判断每个语句的表达式是否为循环不变的,其中所述表达式关联至初始变量;如否,标记所述表达式为“不可外提”;分别利用不同的外提变量替换每个未被标记为“不可提升”的表达式;以及将所有外提变量的赋值语句插入至所述循环之前。2.根据权利要求1所述的方法,其中当所述初始变量为常数时,所述表达式为循环不变的。3.根据权利要求1所述的方法,其中当所述初始变量的赋值在所述循环外时,所述表达式为循环不变的。4.根据权利要求1所述的方法,其中当到达所述初始变量的使用为定值,且定值表达式为循环不变时,所述表达式为循环不变的。5.根据权利要求1所述的方法,其中当所述语句为通过所述表达式赋值给所述初始变量,且所述表达式被标记为“不可外提”时,所述初始变量不为循环不变的,则在所述标记步骤中标记所述表达式中的所述初始变量为“不可外提”。6.根据权利要求1所述的方法,其中当所述语句为循环语句时,所述表达式不为循环不变的,则在所述标记步骤中标记所述表达式中的所述初始变量为“不可外提”。7.根据权利要求1所述的方法,其中所述程序为TVM编译器生成的机器学习算子代码。8.根据权利要求7所述的方法,其中所述程序中的所有语句通过底层中间表示传递函数来遍历。9.根据权利要求7所述的方法,还包括:调用代价函数计算每个未被标记为“不可提升”的表达式的代价值;判断所述代价值是否大于或等于阈值;如所述代价值大于或等于所述阈值,执行所述插入步骤;以及如所述代价值不大于或等于所述阈值,标记所述表达式为“不可外提”。10.根据权利要求9所述的方法,其中所述阈值为1。11.根据权利要求1所述的方法,还包括:基于所述所有外提变量的赋值语句生成中间表示。12.根据权利要求1所述的方法,还包括:判断所述语句是否满足结合律;如所述语句满足结合律,根据每个表达式的类型,设定所述表达式的等级;以及基于所述语句中所有表达式的等级,对每个表达式排序;其中,所述判断每个语句的表达式是否为循环不变的步骤基于排序后的表达式进行判断。13.根据权利要求12所述的方法,还包括:判断所述语句是否包括条件表达式且条件成立与否对应同一个返回值;以及如所述语句包括条件表达式且条件成立与否对应同一个返回值,合并具有相同返回值的判断条件,以更新所述条件表达式;其中,所述设定步骤根据更...
【专利技术属性】
技术研发人员:请求不公布姓名,
申请(专利权)人:中科寒武纪科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。