一种代码处理方法及相关装置与流程

摘要: 本技术涉及计算机,尤其涉及一种代码处理方法及相关装置。背景技术:1、在目前的处理器架构中,一般包括多种计算单元,例如标量单元(scalarunit)、向量单元(...
一种代码处理方法及相关装置与流程

本技术涉及计算机,尤其涉及一种代码处理方法及相关装置。

背景技术:

1、在目前的处理器架构中,一般包括多种计算单元,例如标量单元(scalar unit)、向量单元(vector unit)及矩阵单元。不同种类的计算单元通常为针对不同数据粒度设计的计算模块。其中,标量单元是用于对单个数据元素执行运算处理的硬件组件;向量单元则是专门处理向量运算的硬件组件,支持对多个数据元素同时执行相同的运算操作;矩阵单元则是专用于执行矩阵相关的运算,如矩阵乘法、矩阵加法、矩阵转置等。

2、在大部分的数据处理系统中,数据处理过程是通过调用各种算子对数据执行处理而实现的。一般地,一种算子用于对数据执行某一种处理,不同的算子对应于不同的数据处理方式。以处理器架构包括标量单元和向量单元为例,在目前的数据处理系统中,单个算子往往是采用纯标量或者纯向量的实现方式。即,单个算子仅采用标量指令来实现,或者仅采用向量指令来实现。那么,当采用标量指令实现的标量算子执行时,向量单元往往会处于闲置状态;当采用向量指令实现的向量算子执行时,标量单元则会处于闲置状态,从而导致处理器中的计算资源无法最大化利用,造成处理器资源的浪费。

3、基于此,目前亟需一种在数据处理过程中能够提高处理器资源利用率的方法。

技术实现思路

1、本技术提供一种代码处理方法及相关装置,能够提高处理器资源的利用率。

2、第一方面,提供一种代码处理方法,该代码处理方法应用于包括多种计算单元的计算设备。代码处理方法包括:计算设备执行应用程序中的第一算子的第一代码,第一代码包括能够被多种计算单元并行执行的多种指令,且多种指令的比例为第一比例。即,在第一代码中,多种指令分别能够被计算设备中的多种计算单元并行执行,每种计算单元执行第一代码中对应的一种指令。

3、然后,计算设备采集第一代码执行期间第一算子的第一性能信息,第一性能信息包括计算设备执行第一代码时各个计算单元的拥塞程度及计算设备的数据处理性能,数据处理性能用于指示计算设备执行第一代码时单位时间内所处理的数据量。

4、其次,计算设备根据第一性能信息中的数据处理性能与第一算子在本次运行之前所采集的至少一次数据处理性能,确定第一算子的数据处理性能是否达到最佳值。即,通过将第一代码对应的数据处理性能与计算设备之前针对第一算子执行的至少一种代码对应的数据处理性能进行对比,即可确定在代码调整过程中,第一算子的数据处理性能是否达到最佳值。

5、如果计算设备确定第一算子的数据处理性能没有达到最佳值,计算设备则基于第一性能信息调整多种指令的比例为第二比例,并根据第二比例生成第二代码,并运行第二代码。

6、如果计算设备确定第一算子的数据处理性能达到最佳值,计算设备则以最佳值对应的代码作为第一算子在计算设备上运行的代码。

7、本方案中,在第一算子的第一代码中设置能够被多种计算单元并行执行的多种指令,并采集第一代码运行时对应的第一性能信息。这样,通过对比第一代码的第一性能信息以及第一算子之前在采用其他指令比例的代码实现时的性能信息,能够确认针对第一算子的数据处理性能是否达到最佳值。在第一算子的数据处理性能未达到最佳值时,继续基于第一代码的第一性能信息来调整代码中多种指令的比例,进而生成第一算子对应的第二代码,以实现代码的持续调优。并且,通过参考第一性能信息中指示的各个计算单元的拥塞程度,能够很好地明确指令比例的调整方向,实现代码的快速调整,无需遍历所有配比即可确定得到处理性能较优的代码,保证通过执行代码来处理数据时能够最大化地利用处理器资源。

8、在一种可能的实现方式中,若第一算子在本次运行之前所采集的至少n次数据处理性能均大于第一性能信息中的数据处理性能,代表代码连续调整后已经无法再获得更优的数据处理性能,计算设备则确定第一算子的数据处理性能达到最佳值,并以至少n次数据处理性能中最高的数据处理性能为最佳值。其中,n为大于1的数值,例如为2、3或4等预先设置的阈值。

9、或者,若第一算子在连续采集的m次数据处理性能中相邻两个数据处理性能的差异值均小于预设差异值,代表最后m次连续调整的代码的数据处理性能都已经非常接近,计算设备则确定第一算子的数据处理性能达到最佳值,并以至少m次数据处理性能中最高的数据处理性能为最佳值。其中,m为大于2的数值,例如为3或4等预先设置的阈值。

10、本方案中,通过比较已经调整且运行的多组代码对应的数据处理性能,能够确定当前的代码调整过程是否已经处于收敛状态,进而确定是否还需要对代码执行调整,确保代码调整能够及时终止,节省代码调整过程中所带来的资源开销。

11、在一种可能的实现方式中,在调整多种指令的比例时,计算设备可以根据第一性能信息中的各个计算单元的拥塞程度之间的差异,调整多种指令的比例为第二比例。即,计算设备调整代码中多种指令的比例的目标为:尽可能降低各个计算单元的拥塞程度之间的差异,以使得各个计算单元之间并能够同时并行地执行指令,而不存在计算单元互相等待的现象。

12、在一种可能的实现方式中,多种计算单元为两种计算单元,在调整多种指令的比例时,在第一性能信息中的数据处理性能不低于第一算子在本次运行之前所采集的前一次数据处理性能的情况下,根据第一性能信息中的各个计算单元的拥塞程度之间的差异,增加第一计算单元执行的指令在多种指令中所占的比例,得到第二比例,第一计算单元为多种计算单元中拥塞程度最低的计算单元。即,计算设备可以增加拥塞程度较低的计算单元所执行的指令所占的比例,从而使得该计算单元能够处理更多的指令,避免长时间等待其他计算单元。

13、在第一性能信息中的数据处理性能低于第一算子在本次运行之前所采集的前一次数据处理性能的情况下,根据第一性能信息中的各个计算单元的拥塞程度之间的差异,减小第二计算单元执行的指令在多种指令中所占的比例,得到第二比例,第二计算单元为多种计算单元中拥塞程度最高的计算单元。即,计算设备可以减小拥塞程度较高的计算单元所执行的指令所占的比例,从而使得该计算单元能够处理更少的指令,避免其他计算单元需要长时间等待该计算单元。

14、在一种可能的实现方式中,在生成第二代码的过程中,计算设备可以是先获取各个计算单元执行单个指令时对应的代码(即各种指令的基础实现代码)。然后,计算设备基于各个计算单元执行单个指令时对应的代码和第二比例,通过代码生成方法来生成第二代码。其中,各个计算单元执行单个指令时对应的代码可以是由用户预先提供,或者是由计算设备基于第一算子的运算逻辑提前生成的。

15、本方案中,基于预先编写的用于实现单个指令的代码,将多种指令的配比作为约束条件,采用代码生成方法来生成特定指令配比的代码,能够快速实现代码的在线调整,且降低代码前期的开发成本,并保证能够获得在当前计算设备上执行性能最优的代码。

16、在一种可能的实现方式中,计算设备中的多种计算单元包括标量单元、向量单元和矩阵单元中的至少两种。

17、第二方面,提供一种代码处理装置,代码处理装置应用于包括多种计算单元的计算设备,代码处理装置包括:代码执行模块,用于执行应用程序中的第一算子的第一代码,第一代码包括能够被多种计算单元并行执行的多种指令,且多种指令的比例为第一比例;处理模块,用于采集第一代码执行期间第一算子的第一性能信息,第一性能信息包括计算设备执行第一代码时各个计算单元的拥塞程度及计算设备的数据处理性能,数据处理性能用于指示计算设备执行第一代码时单位时间内所处理的数据量;处理模块,还用于根据第一性能信息中的数据处理性能与第一算子在本次运行之前所采集的至少一次数据处理性能,确定第一算子的数据处理性能是否达到最佳值;若处理模块确定第一算子的数据处理性能没有达到最佳值,则处理模块还用于基于第一性能信息调整多种指令的比例为第二比例,并根据第二比例生成第二代码,并运行第二代码;若处理模块确定第一算子的数据处理性能达到最佳值,则处理模块还用于以最佳值对应的代码作为第一算子在计算设备上运行的代码。

18、在一种可能的实现方式中,若第一算子在本次运行之前所采集的至少n次数据处理性能均大于第一性能信息中的数据处理性能,则处理模块还用于确定第一算子的数据处理性能达到最佳值,并以至少n次数据处理性能中最高的数据处理性能为最佳值;

19、或者,若第一算子在连续采集的m次数据处理性能中相邻两个数据处理性能的差异值均小于预设差异值,则处理模块还用于确定第一算子的数据处理性能达到最佳值,并以至少m次数据处理性能中最高的数据处理性能为最佳值。

20、在一种可能的实现方式中,处理模块还用于根据第一性能信息中的各个计算单元的拥塞程度之间的差异,调整多种指令的比例为第二比例。

21、在一种可能的实现方式中,多种计算单元为两种计算单元,处理模块具体用于:在第一性能信息中的数据处理性能不低于第一算子在本次运行之前所采集的前一次数据处理性能的情况下,根据第一性能信息中的各个计算单元的拥塞程度之间的差异,增加第一计算单元执行的指令在多种指令中所占的比例,得到第二比例,第一计算单元为多种计算单元中拥塞程度最低的计算单元。

22、在一种可能的实现方式中,处理模块具体用于:在第一性能信息中的数据处理性能低于第一算子在本次运行之前所采集的前一次数据处理性能的情况下,根据第一性能信息中的各个计算单元的拥塞程度之间的差异,减小第二计算单元执行的指令在多种指令中所占的比例,得到第二比例,第二计算单元为多种计算单元中拥塞程度最高的计算单元。

23、在一种可能的实现方式中,处理模块,具体用于:获取各个计算单元执行单个指令时对应的代码;基于各个计算单元执行单个指令时对应的代码和第二比例,生成第二代码。

24、在一种可能的实现方式中,多种计算单元包括标量单元、向量单元和矩阵单元中的至少两种。

25、第三方面,提供一种代码处理装置,包括:处理器和存储器;该存储器用于存储计算机指令,当该处理器执行该指令时,以使该代码处理装置执行上述任一方面的方法。

26、第四方面,提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在计算机上运行时,使得计算机可以执行上述任一方面的方法。

27、第五方面,提供一种包含指令的计算机程序产品,当指令在计算机上运行时,使得计算机可以执行上述任一方面的方法。

28、第六方面,提供一种芯片系统,该芯片系统包括处理器和通信接口,该通信接口用于与所示芯片之外的模块通信,该处理器用于运行计算机程序或指令,使得安装该芯片系统的装置可以执行上述任一方面的方法。

29、第七方面,提供一种计算设备,该计算设备包括第三方面的代码处理装置或第六方面的芯片系统,计算设备中代码处理装置或芯片系统用于实现上述任一方面的方法的操作步骤。

30、第八方面,提供一种计算设备集群,包括至少一个计算设备,任意一个计算设备用于运行计算机程序或指令,使得计算设备集群可以执行上述任一方面的方法。或者,部分或全部计算设备共同用于运行计算机程序或指令,使得计算设备集群可以执行上述任一方面的方法。

31、本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。