规范化语句中的表达式的编译方法、可读存储介质及编译器技术

技术编号:36974252 阅读:19 留言:0更新日期:2023-03-25 17:54
本发明专利技术涉及规范化语句中的表达式的编译方法、可读存储介质及编译器,其中本发明专利技术的计算装置包括在集成电路装置中,该集成电路装置包括通用互联接口和其他处理装置。计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。集成电路装置还可以包括存储装置,存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据存储。于计算装置和其他处理装置的数据存储。于计算装置和其他处理装置的数据存储。

【技术实现步骤摘要】
规范化语句中的表达式的编译方法、可读存储介质及编译器


[0001]本专利技术一般地涉及神经网络领域。更具体地,本专利技术涉及规范化语句中的表达式的编译方法、可读存储介质及编译器。

技术介绍

[0002]在实现神经网络的算子时,开发者可以利用多种计算方法达到相同的计算结果,不同的计算方法会延伸出代码的局部性、并行性的差异。TVM是一种开源深度学习编译器,其通过提供图级别的优化和算子级别的优化,为不同的硬件后端生成高效的机器代码。
[0003]TVM基于张量表达式来定义算子,并提供一系列调度原语对算子代码做循环变换。用张量表达式描述的算子会被TVM翻译为TVM中间表示(intermediate representation,IR),中间表示是一种树状的、易于描述循环计算的高级表达方式。TVM在中间表示上实现了一系列分析和变换的优化遍,对算子进行调整,最终生成目标硬件平台上的高效代码。
[0004]深度学习应用中的重要算子,如卷积、矩阵乘和向量加等,都会被TVM编译生成中间表示上的多层嵌套循环,这类程序经过循环变换后会产生与循环迭代变量相关的复杂表达式。现有非TVM的编译器的循环不变量外提优化方式是将计算结果保存在物理寄存器中,以避免每次使用时都重复计算。然而,现有的TVM编译器的高级中间表示无法感知物理寄存器的存在,盲目地参考非TVM的编译器外提所有循环不变量会带来不必要的寄存器压力,反而降低算子的性能。因此直接将现有非TVM编译器中的循环不变式外提算法应用到TVM的编译器中无法得到理想的优化效果。/>[0005]其次,优化算法在对循环不变式的检测过程中,表达式中操作数的顺序会影响不变式的发现。现有的优化算法对深度学习算子中经常出现的复杂嵌套条件表达式的检测能力有限,换言之其优化程度不佳。
[0006]最后,TVM编译器生成的算子代码还需要经过目标平台编译器的编译优化过程,才能生成目标硬件的可执行代码。目标平台编译器可能在更低级的中间表示上进行了其他的一些优化,这两个不同级别上的优化常常存在冲突,导致降低了循环不变式外提算法的有效性。
[0007]因此,一种编译程序时规范化语句中的表达式的技术方案是迫切需要的。

技术实现思路

[0008]为了至少部分地解决
技术介绍
中提到的技术问题,本专利技术的方案提供了一种规范化语句中的表达式的编译方法、可读存储介质及编译器。
[0009]在一个方面中,本专利技术揭露一种规范化描述神经网络算子的语句中的表达式的编译方法,包括:根据每个表达式的类型,设定表达式的等级;以及基于语句中所有表达式的等级,对每个表达式排序。
[0010]在另一个方面,本专利技术揭露一种计算机可读存储介质,其上存储有规范化描述神经网络算子的语句中的表达式的计算机程序代码,当所述计算机程序代码由处理装置运行
时,执行前述的编译方法。
[0011]在另一个方面,本专利技术揭露一种规范化语句中的表达式的编译器,包括:设定模块和排序模块。设定模块用以根据每个表达式的类型,设定表达式的等级;排序模块用以基于语句中所有表达式的等级,对每个表达式排序。
[0012]本专利技术提出了一种在检测循环不变量之前,可以先调整操作数结合顺序和变换条件表达式的形式来对表达式做规范化,为循环不变量外提优化以及后续的其他优化提供更好的基础。最后,本专利技术结合TVM中间表示和目标平台编译器的具体特点,对分支和迭代数目比较小的内层循环做了特殊处理,解决了在不同级别的中间表示上的优化冲突。
附图说明
[0013]通过参考附图阅读下文的详细描述,本专利技术示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本专利技术的若干实施方式,并且相同或对应的标号表示相同或对应的部分。其中:
[0014]图1是示出本专利技术实施例的板卡的结构图;
[0015]图2是示出本专利技术实施例的集成电路装置的结构图;
[0016]图3是示出TVM的编译流程;
[0017]图4是示出本专利技术实施例在TVM中的整体架构图和关键编译流程图;
[0018]图5是示出示例性表达式在编译的过程中对应的抽象语法树;
[0019]图6是示出改写后的表达式所对应的抽象语法树;
[0020]图7是示出本专利技术实施例规范化描述神经网络算子的语句中的表达式的流程图;
[0021]图8是示出示例性条件表达式对应的语法树;
[0022]图9是示出合并后的条件表达式对应的语法树;
[0023]图10是示出本专利技术实施例另一种规范化描述神经网络算子的语句中的表达式的流程图;
[0024]图11是示出本专利技术实施例优化描述神经网络算子的循环的流程图;以及
[0025]图12是示出本专利技术另一实施例的编译器的示意图。
具体实施方式
[0026]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0027]应当理解,本专利技术的权利要求、说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本专利技术的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0028]还应当理解,在此本专利技术说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本专利技术。如在本专利技术说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一
步理解,在本专利技术说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0029]如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。
[0030]下面结合附图来详细描述本专利技术的具体实施方式。
[0031]控制人工智能芯片执行复杂的神经网络会产生大量的指令,开发者在编写指令时通常无法满足通用化的要求,因此在进行神经网络加速时需要编译器的协助。编译器会依据神经网络的图结构与算子结构,产生硬件可执行指令序列。编译器大致可分为前端和后端,前端主要实现从TensorFlow、Caffe、Pytorch等深度学习框架描述的网络结构形式到中间表示的优化与转换,后端则执行中间表示到硬件可执行程序的优化与转换。前端的主要挑战在于如何设计出一套通用的中间表示,可以和不同的深度学习框架对接,更复杂的编译器前端还包含了很多与硬件无关的优化策略,像是常数折叠、算符融合等。后端则和具体硬件相关本文档来自技高网...

【技术保护点】

【技术特征摘要】
1.一种规范化描述神经网络算子的语句中的表达式的编译方法,包括:根据每个表达式的类型,设定所述表达式的等级;以及基于所述语句中所有表达式的等级,对每个表达式排序。2.根据权利要求1所述的编译方法,还包括:判断所述语句是否满足结合律;其中,如所述语句满足结合律,执行所述设定步骤。3.根据权利要求1所述的编译方法,还包括:判断所述语句是否满足结合律;其中,如所述语句满足结合律,执行所述排序步骤。4.根据权利要求1所述的编译方法,还包括:判断所述语句是否为条件语句且条件成立与否对应同一个返回值;以及如所述语句为条件语句且条件成立与否对应同一个返回值,合并具有相同返回值的判断条件,以更新所述条件语句;其中,所述设定步骤根据更新后的条件语句的类型设定所述等级。5.根据权利要求2或3所述的编译方法,其中所述设定步骤包括:判断所述表达式是否为常数;以及如所述表达式为常数,设定所述等级为第一级。6.根据权利要求5所述的编译方法,其中所述设定步骤包括:判断所述表达式是否包括嵌套循环;以及如所述表达式包括嵌套循环,设定所述等级为第二级。7.根据权利要求6所述的编译方法,其中所述嵌套循环包括N个循环,所述设定所述等级为第二级的步骤包括:设定最外层循环的子等级为第一子级;设定次外层循环的子等级为第二子级;以及以此方式设定其他各层循环的子等级,直到设定最内层循环的子等级为第N子级。8.根据权利要求7所述的编译方法,其中所述设定步骤包括:如所...

【专利技术属性】
技术研发人员:请求不公布姓名
申请(专利权)人:中科寒武纪科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1