算子混合编译方法、装置、电子设备及介质与流程

摘要: 本技术涉及编译器,尤其涉及一种算子混合编译方法、装置、电子设备及介质。背景技术:1、随着人工智能(artificialintelligence,ai)技术的快速...
算子混合编译方法、装置、电子设备及介质与流程

本技术涉及编译器,尤其涉及一种算子混合编译方法、装置、电子设备及介质。

背景技术:

1、随着人工智能(artificial intelligence,ai)技术的快速发展,深度神经网络模型的规模和复杂度不断增长。为兼顾规则计算(如矩阵乘法、卷积)与不规则计算(如激活函数、归一化)的处理效率,ai加速芯片通常采用异构计算架构,在同一芯片上集成两种计算单元。即ame(risc-v attached matrix extension,risc-v矩阵扩展指令)和cgra(coarse-grained reconfigurable array,粗粒度可重构阵列)。其中,ame适用于处理规则算子,cgea适用于处理不规则算子。

2、相关技术中,针对上述异构计算架构的算子任务分配问题,通常采用人工标注方式,即由资深工程师预先分析每个算子,手动指定各算子应交给ame还是cgra执行,并将标注结果写入编译器。

3、然而,相关技术存在以下缺陷:其一,人工标注成本高,需逐算子分析,耗时耗力;其二,人工标注难以达到全局最优;其三,当模型结构变化(如出现新算子)时需重新人工标注,缺乏自适应能力。

技术实现思路

1、本技术提供一种算子混合编译方法、装置、电子设备及介质,以解决相关技术中人工标注成本高、算子任务分配难以达到全局最优以及缺乏自适应能力的技术问题。

2、本技术的第一方面实施例提出了一种算子混合编译方法,该方法包括:根据计算图中的至少一个待编译算子中各待编译算子的算子属性信息,确定各待编译算子的至少一个硬件适配特征,至少一个硬件适配特征用于表征各待编译算子被不同硬件执行的适配程度;基于至少一个硬件适配特征,确定各待编译算子的硬件适配得分,以根据硬件适配得分将各待编译算子分类为适用于第一硬件执行的第一类别、或适用于第二硬件执行的第二类别、或适用于第一硬件与第二硬件协同执行的第三类别,得到分类结果;基于分类结果,对各待编译算子进行编译,得到各待编译算子对应的硬件配置信息,以使第一硬件和/或第二硬件根据硬件配置信息执行各待编译算子。

3、在一些实施例中,至少一个硬件适配特征包括计算量对齐度、算子类型编码值和数据复用距离中的至少一项,根据计算图中的至少一个待编译算子中各待编译算子的算子属性信息,确定各待编译算子的至少一个硬件适配特征包括:基于各待编译算子的计算负载和第一硬件对应的第一计算负载,确定各待编译算子的计算量对齐度,计算量对齐度表征各待编译算子的计算负载与第一计算负载的匹配程度;根据各待编译算子的算子类型,确定各待编译算子的算子类型编码值,算子类型包括规则算子和不规则算子;根据各待编译算子的数据流信息,确定各待编译算子的数据复用距离,数据复用表征各待编译算子的输入数据被重复使用的程度。

4、在一些实施例中,基于各待编译算子的计算负载和第一硬件对应的第一计算负载,确定各待编译算子的计算量对齐度包括:基于各待编译算子的计算负载和第一硬件的第一计算负载,对各待编译算子进行任务拆分,得到各待编译算子对应的至少一个子任务;确定至少一个子任务中各子任务的计算负载与第一计算负载匹配的匹配子任务数量;根据匹配子任务数量和至少一个子任务对应的总数量的比值,确定计算量对齐度。

5、在一些实施例中,基于至少一个硬件适配特征,确定各待编译算子的硬件适配得分,以根据硬件适配得分将各待编译算子分类为适用于第一硬件执行的第一类别、或适用于第二硬件执行的第二类别、或适用于第一硬件与第二硬件协同执行的第三类别,得到分类结果包括:确定至少一个硬件适配特征对应的至少一个权重;基于至少一个权重,对至少一个硬件适配特征进行加权运算处理,得到各待编译算子的硬件适配得分;基于硬件适配得分、预设得分阈值和预设边界,将各待编译算子分类为第一类别、或第二类别、或第三类别,得到分类结果。

6、在一些实施例中,基于硬件适配得分、预设得分阈值和预设边界,将各待编译算子分类为第一类别、或第二类别、或第三类别,得到分类结果包括:基于预设得分阈值和预设边界,确定第一得分阈值,预设得分阈值大于第一得分阈值;在第一待编译算子的第一硬件适配得分大于预设得分阈值的情况下,将第一待编译算子分类为第一类别,第一待编译算子为至少一个待编译算子中的任一待编译算子;在第一硬件适配得分小于第一得分阈值的情况下,将第一待编译算子分类为第二类别;在第一硬件适配得分大于或等于第一得分阈值且第一硬件适配得分小于或等于预设得分阈值的情况下,将第一待编译算子分类为第三类别。

7、在一些实施例中,根据分类结果,对各待编译算子进行编译,得到各待编译算子的硬件配置信息包括:在第二待编译算子为第一类别的情况下,对第二待编译算子进行编译,生成与第一硬件匹配的第一硬件配置信息,第一硬件配置信息为第一硬件执行第二待编译算子所需的配置数据,第二待编译算子为至少一个待编译算子中的任一待编译算子;在第二待编译算子为第二类别的情况下,对第二待编译算子进行编译,生成与第二硬件匹配的第二硬件配置信息,第二硬件配置信息为第二硬件执行第二待编译算子的配置数据;在第二待编译算子为第三类别的情况下,对第二待编译算子进行编译,生成与第一硬件匹配的第三硬件配置信息和与第二硬件匹配的第四硬件配置信息,第三硬件配置信息为第一硬件执行第二待编译算子的第一部分计算任务所需的配置数据,第四硬件配置信息为第二硬件执行第二待编译算子的第二部分计算任务所需的配置数据;其中,第一部分计算任务和第二部分计算任务是对第二待编译算子的进行任务拆分得到的。

8、在一些实施例中,对第二待编译算子进行编译,生成与第一硬件匹配的第三硬件配置信息和与第二硬件匹配的第四硬件配置信息,之前,该方法包括:基于第二待编译算子的计算负载和第一硬件的第一计算负载,对第二待编译算子进行任务拆分,得到适用于第一硬件执行的第一部分计算任务和适用于第二硬件执行的第二部分计算任务;其中,第一部分计算任务的计算负载与第一硬件的第一计算负载匹配,第二部分计算任务的计算负载与第一硬件的第一计算负载不匹配。

9、本技术的第二方面实施例提出了一种算子混合编译装置,该装置包括:

10、确定单元,用于根据计算图中的至少一个待编译算子中各待编译算子的算子属性信息,确定各待编译算子的至少一个硬件适配特征,至少一个硬件适配特征用于表征各待编译算子被不同硬件执行的适配程度;

11、分类单元,用于基于至少一个硬件适配特征,确定各待编译算子的硬件适配得分,以根据硬件适配得分将各待编译算子分类为适用于第一硬件执行的第一类别、或适用于第二硬件执行的第二类别、或适用于第一硬件与第二硬件协同执行的第三类别,得到分类结果;

12、编译单元,用于根据分类结果,对各待编译算子进行编译,得到各待编译算子对应的硬件配置信息,以使第一硬件和/或第二硬件根据硬件配置信息执行各待编译算子。

13、本技术的第三方面实施例提出了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,其中,处理器用于运行计算机程序时,执行如第一方面任一实施例中描述的方法。

14、本技术的第四方面实施例提出了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,计算机指令用于使计算机执行本技术第一方面任一实施例中描述的方法。

15、综上,本技术提出的算子混合编译方法,根据计算图中的至少一个待编译算子中各待编译算子的算子属性信息,确定各待编译算子的至少一个硬件适配特征,至少一个硬件适配特征用于表征各待编译算子被不同硬件执行的适配程度;基于至少一个硬件适配特征,确定各待编译算子的硬件适配得分,以根据硬件适配得分将各待编译算子分类为适用于第一硬件执行的第一类别、或适用于第二硬件执行的第二类别、或适用于第一硬件与第二硬件协同执行的第三类别,得到分类结果;基于分类结果,对各待编译算子进行编译,得到各待编译算子对应的硬件配置信息,以使第一硬件和/或第二硬件根据硬件配置信息执行各待编译算子。相比手动标注方案,本技术实现了算子调度的全自动化,无需人工介入即可根据算子硬件特征自适应完成最优决策,避免了人工标注的主观性和非最优性,同时通过引入协同执行类别充分发挥不同硬件的互补优势,有效提升异构计算资源的利用效率和算子执行性能。

16、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。