优化张量计算性能的方法及装置与流程

文档序号:35524788发布日期:2023-09-21 02:51阅读:37来源:国知局
优化张量计算性能的方法及装置

本技术涉及深度学习,尤其涉及优化张量计算性能的方法及装置。


背景技术:

1、随着人工智能产业链的迅速发展,深度学习已经成为研究和应用的热点。多层神经网络的深度学习也变得越来越复杂,因此对于处理器的计算能力要求也越来越高。张量计算作为深度学习最核心的计算,占据了深度学习计算量的百分之九十以上,因此,基于运行在张量计算加速硬件的代码的调优,尤为重要。其中,张量计算加速硬件是集成在处理器上执行张量计算的硬件。

2、现有技术中,对于待执行任务的代码的调优通常仅限于对单个算子的优化,此种优化方式只能提升单个算子的性能,因此对提升张量计算的性能(如减少执行张量计算的时间)的效果不是很好。


技术实现思路

1、本技术实施例提供了优化张量计算性能的方法及装置,有助于提升张量计算的性能。

2、第一方面,提供了一种优化张量计算性能的方法,包括:首先,第一处理器接收待执行任务的第一代码,该任务是对至少一个输入张量进行第一算子和第二算子的运算的任务,第一算子的输出张量为第二算子的一个输入张量;接着,第一处理器生成任务的第二代码,第二代码为用于在第二处理器上执行的代码,第二代码描述了存储分配规则,即将第一算子的输出张量存储至第二处理器内部的存储介质的规则;最后,第一处理器向第二处理器发送第二代码。这样,由于将可复用的张量块存储至第二处理器的近端存储介质上,因此在第二处理器执行第二算子时可以直接从第二处理器的近端存储介质上读取该张量块,这样,有助于缩短数据的读取时间,从而有助于加快任务的执行速度,进而有助于提升张量计算的整体性能。

3、在一种可能的实现方式中,该方法还可以包括:对第一算子和第二算子进行优化。也就是说,本技术实施例支持“在张量计算的过程中,在单个算子的优化的基础上,考虑了算子间的优化”的技术方案,这样有助于提升张量计算的整体性能。

4、在一种可能的实现方式中,该方法还包括:第一处理器确定第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;其中,输入张量块是对算子的输入张量进行划分得到的张量块;第一处理器确定第一算子和第二算子间具有依赖关系的张量块的执行顺序;存储分配规则具体包括:将第一算子的输出张量划分得到的输出张量块存储至存储介质的规则;第二代码还描述了:与第一算子的每个输出张量块分别具有依赖关系的输入张量块、与第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及执行顺序。这样,根据划分规则对张量进行划分,有助于满足第二处理器的块状访存需求,从而有助于提升张量计算的整体性能。

5、在一种可能的实现方式中,第二代码为能够在第二处理器上的张量计算加速硬件执行的代码。

6、在一种可能的实现方式中,并行线程层次指示对第二处理器上的多个线程进行分组的分组层级。关于并行线程层级的详细解释及示例可以参考下文具体实施方法部分。

7、在一种可能的实现方式中,第一处理器确定第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于该划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块,包括:第一处理器分别确定在一个线程上和第二处理器的每个并行线程层次上,第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于该划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;第一处理器确定第一算子和第二算子间具有依赖关系的张量块的执行顺序,包括:第一处理器分别确定在一个线程上和每个并行线程层次上,第一算子和第二算子间具有依赖关系的张量块的执行顺序;存储分配规则具体包括:在一个线程上和每个并行线程层次上,将第一算子的输出张量划分得到的输出张量块存储至存储介质的规则;第二代码具体描述了:在一个线程上和每个并行线程层次上,与第一算子的每个输出张量块分别具有依赖关系的输入张量块、与第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及执行顺序。这样,基于一个线程和每个并行线程层次为粒度对第二代码进行描述,使得该第二代码符合第二处理器的线程和并行线程层次,从而能够在第二处理器上并行执行该第二代码。

8、在一种可能的实现方式中,第一处理器确定第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块,包括:第一处理器确定对第二算子的输出张量进行划分的第二划分规则;第一处理器确定与每个第二类输出张量块分别具有依赖关系的输入张量块和对第一算子的输出张量进行划分的第一划分规则;第二类输出张量块是基于第二划分规则得到的第二算子的输出张量的张量块;第一处理器确定与每个第一类输出张量块分别具有依赖关系的输入张量块;其中,第一类输出张量块是基于第一划分规则得到的第一算子的输出张量的张量块。这样,有助于使得该第一算子的输出张量的划分可以满足第二算子的输出张量块对输入张量块的要求,进而使得该第一算子的输出张量块为第二算子所需要的输入张量块,即可复用的张量块。这样一来,有助于将该方法确定的可复用张量块存储至近端存储介质,有助于加快任务的执行速度,提升张量计算的整体性能。

9、在一种可能的实现方式中,第一处理器确定对第二算子的输出张量进行划分的第一划分规则,包括:第一处理器根据张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定第二划分规则。这样,可以满足第二处理器上张量计算加速硬件的要求,从而能够在张量计算加速硬件上执行第二代码。

10、在一种可能的实现方式中,第一处理器根据张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定第二划分规则,包括:当第一算子的输出张量的类型和第二算子的输出张量的类型,满足张量计算加速硬件可支持的张量块的类型时,第一处理器根据张量计算加速硬件可支持的最小张量块的大小,确定第二算子的输出张量可划分的输出张量块的大小的范围;第一处理器根据该范围中的目标值,确定第二划分规则。

11、在一种可能的实现方式中,第一处理器根据张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定第二划分规则,包括:当第一算子的输出张量的类型和第二算子的输出张量的类型,满足张量计算加速硬件可支持的张量块的类型时,第一处理器根据张量计算加速硬件可支持的最小张量块的大小,确定第二算子的输出张量可划分的输出张量块的大小的范围;第一处理器根据该范围中的至少两个目标值中的每个目标值,分别确定一个第二划分规则;第一处理器生成任务的第二代码,包括:第一处理器生成任务的多个第二代码;其中,基于每个第二划分规则,生成一个第二代码。

12、在一种可能的实现方式中,该方法还包括:第一处理器接收第二处理器发送的指示信息,该指示信息用于指示多个第二代码中执行时间最短的第二代码。这样,能够在再次接收到类似任务(其中,类似任务为:与任务中的张量的大小相同,且与任务中的算子相同的任务)时,第一处理器可以直接根据该执行时间最短的第二代码确定目标值,从而生成该目标值对应的第二代码,使得第二处理器直接执行该第二代码时,其执行时间最短。

13、在一种可能的实现方式中,在第一处理器向第二处理器发送第二代码之前,该方法还包括:第一处理器对第一算子和第二算子进行算子融合,得到新的算子;第二代码还描述了该新的算子。这样,经过算子融合得到新的算子,可以使得执行第二代码时,能够按照正确的执行顺序执行每个算子。

14、第二方面,提供了一种优化张量计算性能的方法,该方法包括:第二处理器接收任务的第二代码;其中,任务是对至少一个输入张量进行第一算子和第二算子的运算的,第一算子的输出张量为第二算子的一个输入张量;第二代码描述了存储分配规则;存储分配规则包括:将第一算子的输出张量存储至第二处理器内部的存储介质的规则;第二处理器上的张量计算加速硬件执行第二代码。

15、在一种可能的实现方式中,第二处理器上的张量计算加速硬件并行执行所述第二代码。

16、在一种可能的实现方式中,存储分配规则具体包括:将第一算子的输出张量划分得到的输出张量块存储至存储介质的规则;第二代码还描述了:与第一算子的每个输出张量块分别具有依赖关系的输入张量块、与第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及第一算子和第二算子间具有依赖关系的张量块的执行顺序;第二处理器上的张量计算加速硬件并行执行第二代码,包括:第二处理器根据存储分配规则、与第一算子的每个输出张量块分别具有依赖关系的输入张量块、与第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及执行顺序,并行执行第二代码。

17、在一种可能的实现方式中,存储分配规则具体包括:在一个线程上和第二处理器的每个并行线程层次上,将第一算子的输出张量划分得到的输出张量块存储至存储介质的规则;第二代码具体描述了:在一个线程上和每个并行线程层次上,与第一算子的每个输出张量块分别具有依赖关系的输入张量块、与第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及执行顺序。

18、在一种可能的实现方式中,该优化张量计算性能的方法还包括:第二处理器向第一处理器发送指示信息,该指示信息用于指示多个第二代码中执行时间最短的第二代码。这里需要说明的是,第二方面的有益效果可以参照上述第一方面,第二方面的所有可能的实现方式的有益效果可以参照上述第一方面对应的实现方式,这里就不再赘述。

19、第三方面,提供了一种第一处理器,该第一处理器用于执行上述第一方面,或者第一方面中的任意一种可能的实现方式中的方法的模块(或单元)。

20、第四方面,提供了一种第二处理器,该第二处理器用于执行上述第二方面,或者第二方面中的任意一种可能的实现方式中的方法的模块(或单元)。

21、第五方面,提供了一种优化张量计算性能的系统,该系统包括至少一个处理器和至少一个存储器;该至少一个存储器中存储有指令;该至少一个处理器用于调用指令,以执行上述第一方面或第二方面中的任意一种可能的实现方式中的方法的部分或全部步骤。

22、作为一种可能的实现方式中,至少一个处理器设置在同一计算设备中,或分别设置在不同的计算设备中。

23、作为一种可能的实现方式中,至少一个存储器设置在同一计算设备中,或分别设置在不同的计算设备中。

24、第六方面,一种张量计算系统,该系统包括第一处理器和第二处理器,该第一处理器用于执行上述第一方面,或者第一方面中的任意一种可能的实现方式中的方法的部分或全部步骤;该第二处理器用于执行上述第二方面,或者第二方面中的任意一种可能的实现方式中的方法的部分或全部步骤。

25、第七方面,提供了一种计算机可读存储介质,该计算机可读存储介质中包含指令,当该指令在计算机上运行时,使得该计算机执行第一方面或第二方面的任意一种可能的实现方式,或第二方面或第二方面的任意一种可能的实现方式提供的任一种方法被执行。

26、第八方面,提供了一种计算机程序产品,当其在计算机上运行时,使得第一方面或第二方面的任意一种可能的实现方式,或第二方面或第二方面的任意一种可能的实现方式提供的任一种方法被执行。

27、第九方面,提供了一种处理器,该处理器与存储器耦合,当该处理器执行该存储器中的计算机程序或指令时,使得第一方面或第二方面的任意一种可能的实现方式,或第二方面或第二方面的任意一种可能的实现方式提供的任一种方法被执行。

28、第十方面,提供了一种芯片,包括:处理电路和接口,该处理电路用于从存储介质中调用并运行该存储介质中存储的计算机程序,以执行第一方面或第二方面的任意一种可能的实现方式中第一处理器所执行的步骤,或执行第二方面或第二方面的任意一种可能的实现方式提供的任一种方法中第二处理器所执行的步骤。

29、应当理解的是,上述提供的任一种第一处理器、第二处理器、优化张量计算性能的系统、计算机可读存储介质、计算机程序产品以及芯片的有益效果均可以对应参考上文对应方面提供的方法实施例的有益效果,此处不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1