优化张量计算性能的方法及装置制造方法及图纸

技术编号:38893723 阅读:22 留言:0更新日期:2023-09-22 14:16
本申请公开优化张量计算性能的方法及装置,涉及深度学习技术领域,有助于加快待执行任务的执行速度,从而有助于提升张量计算的整体性能。该方法包括:第一处理器接收待执行任务的第一代码,待执行任务是对至少一个输入张量进行第一算子和第二算子的运算的任务,第一算子的输出张量为第二算子的一个输入张量;第一处理器确定存储分配规则;其中,存储分配规则包括:将第一算子的输出张量存储至第二处理器内部的存储介质的规则;第一处理器生成待执行任务的第二代码,第二代码为能够在第二处理器上的张量计算加速硬件并行执行的代码,第二代码描述了存储分配规则;第一处理器向第二处理器发送第二代码。理器发送第二代码。理器发送第二代码。

【技术实现步骤摘要】
优化张量计算性能的方法及装置
[0001]本申请是分案申请,原申请的申请号是2019108545343,原申请日是2019年09月10日,原申请的全部内容通过引用结合在本申请中。


[0002]本申请涉及深度学习
,尤其涉及优化张量计算性能的方法及装置。

技术介绍

[0003]随着人工智能产业链的迅速发展,深度学习已经成为研究和应用的热点。多层神经网络的深度学习也变得越来越复杂,因此对于处理器的计算能力要求也越来越高。张量计算作为深度学习最核心的计算,占据了深度学习计算量的百分之九十以上,因此,基于运行在张量计算加速硬件的代码的调优,尤为重要。其中,张量计算加速硬件是集成在处理器上执行张量计算的硬件。
[0004]现有技术中,对于待执行任务的代码的调优通常仅限于对单个算子的优化,此种优化方式只能提升单个算子的性能,因此对提升张量计算的性能(如减少执行张量计算的时间)的效果不是很好。

技术实现思路

[0005]本申请实施例提供了优化张量计算性能的方法及装置,有助于提升张量计算的性能。
[0006]第一方面,提供了一种优化张量计算性能的方法,包括:首先,第一处理器接收待执行任务的第一代码,该任务是对至少一个输入张量进行第一算子和第二算子的运算的任务,第一算子的输出张量为第二算子的一个输入张量;接着,第一处理器生成任务的第二代码,第二代码为用于在第二处理器上执行的代码,第二代码描述了存储分配规则,即将第一算子的输出张量存储至第二处理器内部的存储介质的规则;最后,第一处理器向第二处理器发送第二代码。这样,由于将可复用的张量块存储至第二处理器的近端存储介质上,因此在第二处理器执行第二算子时可以直接从第二处理器的近端存储介质上读取该张量块,这样,有助于缩短数据的读取时间,从而有助于加快任务的执行速度,进而有助于提升张量计算的整体性能。
[0007]在一种可能的实现方式中,该方法还可以包括:对第一算子和第二算子进行优化。也就是说,本申请实施例支持“在张量计算的过程中,在单个算子的优化的基础上,考虑了算子间的优化”的技术方案,这样有助于提升张量计算的整体性能。
[0008]在一种可能的实现方式中,该方法还包括:第一处理器确定第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;其中,输入张量块是对算子的输入张量进行划分得到的张量块;第一处理器确定第一算子和第二算子间具有依赖关系的张量块的执行顺序;存储分配规则具体包括:将第一算子的输出张量划分得到的输出张量块存储至存储介质的规则;
第二代码还描述了:与第一算子的每个输出张量块分别具有依赖关系的输入张量块、与第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及执行顺序。这样,根据划分规则对张量进行划分,有助于满足第二处理器的块状访存需求,从而有助于提升张量计算的整体性能。
[0009]在一种可能的实现方式中,第二代码为能够在第二处理器上的张量计算加速硬件执行的代码。
[0010]在一种可能的实现方式中,并行线程层次指示对第二处理器上的多个线程进行分组的分组层级。关于并行线程层级的详细解释及示例可以参考下文具体实施方法部分。
[0011]在一种可能的实现方式中,第一处理器确定第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于该划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块,包括:第一处理器分别确定在一个线程上和第二处理器的每个并行线程层次上,第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于该划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;第一处理器确定第一算子和第二算子间具有依赖关系的张量块的执行顺序,包括:第一处理器分别确定在一个线程上和每个并行线程层次上,第一算子和第二算子间具有依赖关系的张量块的执行顺序;存储分配规则具体包括:在一个线程上和每个并行线程层次上,将第一算子的输出张量划分得到的输出张量块存储至存储介质的规则;第二代码具体描述了:在一个线程上和每个并行线程层次上,与第一算子的每个输出张量块分别具有依赖关系的输入张量块、与第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及执行顺序。这样,基于一个线程和每个并行线程层次为粒度对第二代码进行描述,使得该第二代码符合第二处理器的线程和并行线程层次,从而能够在第二处理器上并行执行该第二代码。
[0012]在一种可能的实现方式中,第一处理器确定第一算子的输出张量和第二算子的输出张量的划分规则,并确定与基于划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块,包括:第一处理器确定对第二算子的输出张量进行划分的第二划分规则;第一处理器确定与每个第二类输出张量块分别具有依赖关系的输入张量块和对第一算子的输出张量进行划分的第一划分规则;第二类输出张量块是基于第二划分规则得到的第二算子的输出张量的张量块;第一处理器确定与每个第一类输出张量块分别具有依赖关系的输入张量块;其中,第一类输出张量块是基于第一划分规则得到的第一算子的输出张量的张量块。这样,有助于使得该第一算子的输出张量的划分可以满足第二算子的输出张量块对输入张量块的要求,进而使得该第一算子的输出张量块为第二算子所需要的输入张量块,即可复用的张量块。这样一来,有助于将该方法确定的可复用张量块存储至近端存储介质,有助于加快任务的执行速度,提升张量计算的整体性能。
[0013]在一种可能的实现方式中,第一处理器确定对第二算子的输出张量进行划分的第一划分规则,包括:第一处理器根据张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定第二划分规则。这样,可以满足第二处理器上张量计算加速硬件的要求,从而能够在张量计算加速硬件上执行第二代码。
[0014]在一种可能的实现方式中,第一处理器根据张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定第二划分规则,包括:当第一算子的输出张量的类型和第二算子的输出张量的类型,满足张量计算加速硬件可支持的张量块的类型时,第一处理器根
据张量计算加速硬件可支持的最小张量块的大小,确定第二算子的输出张量可划分的输出张量块的大小的范围;第一处理器根据该范围中的目标值,确定第二划分规则。
[0015]在一种可能的实现方式中,第一处理器根据张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定第二划分规则,包括:当第一算子的输出张量的类型和第二算子的输出张量的类型,满足张量计算加速硬件可支持的张量块的类型时,第一处理器根据张量计算加速硬件可支持的最小张量块的大小,确定第二算子的输出张量可划分的输出张量块的大小的范围;第一处理器根据该范围中的至少两个目标值中的每个目标值,分别确定一个第二划分规则;第一处理器生成任务的第二代码,包括:第一处理器生成任务的多个第二代码;其中,基于每个第二划分规则,生成一个第二代码。
[0016]在一种可能的实现方式中,该方法还包括:第一处理器接收第二处理器发送的指示信息,该本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种优化张量计算性能的方法,其特征在于,所述方法包括:第一处理器接收任务的第一代码,所述任务是对至少一个输入张量进行第一算子和第二算子的运算的任务,所述第一算子的输出张量为所述第二算子的一个输入张量;所述第一处理器基于所述第一代码生成所述任务的第二代码,所述第二代码是用于在所述第二处理器上执行的代码,所述第二代码描述了存储分配规则,所述存储分配规则为将所述第一算子的输出张量存储至第二处理器内部的存储介质的规则;所述第一处理器向所述第二处理器发送所述第二代码。2.根据权利要求1所述的方法,其特征在于,所述存储分配规则具体包括:将所述第一算子的输出张量划分得到的输出张量块存储至所述存储介质的规则;所述第二代码还描述了:与所述第一算子的每个输出张量块分别具有依赖关系的输入张量块、与所述第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及所述执行顺序。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:所述第一处理器确定所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;其中,所述输入张量块是对算子的输入张量进行划分得到的张量块。4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:所述第一处理器确定所述第一算子和所述第二算子间具有依赖关系的张量块的执行顺序。5.根据权利要求3所述的方法,其特征在于,所述第二代码为能够在所述第二处理器上的张量计算加速硬件并行执行的代码,所述第一处理器确定所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块,包括:所述第一处理器分别确定在一个线程上和所述第二处理器的每个并行线程层次上,所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;所述并行线程层次指示对所述第二处理器上的多个线程进行分组的分组层级。6.根据权利要求4所述的方法,其特征在于,所述第二代码为能够在所述第二处理器上的张量计算加速硬件并行执行的代码,所述第一处理器确定所述第一算子和所述第二算子间具有依赖关系的张量块的执行顺序,包括:所述第一处理器分别确定在一个线程上和所述第二处理器的每个并行线程层次上,所述第一算子和所述第二算子间具有依赖关系的张量块的执行顺序。7.根据权利要求4所述的方法,其特征在于,所述第二代码为能够在所述第二处理器上的张量计算加速硬件并行执行的代码,所述存储分配规则具体包括:在一个线程上和所述第二处理器的每个并行线程层次上,将所述第一算子的输出张量划分得到的输出张量块存储至所述存储介质的规则;所述第二代码具体描述了:在一个线程上和所述每个并行线程层次上,与所述第一算子的每个输出张量块分别具有依赖关系的输入张量块、与所述第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及所述执行顺序。8.根据权利要求5所述的方法,其特征在于,所述第一处理器确定所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个
输出张量块分别具有依赖关系的输入张量块,包括:所述第一处理器确定对所述第二算子的输出张量进行划分的第二划分规则;所述第一处理器确定与每个第二类输出张量块分别具有依赖关系的输入张量块和对所述第一算子的输出张量进行划分的第一划分规则;所述第二类输出张量块是基于所述第二划分规则得到的所述第二算子的输出张量的张量块;所述第一处理器确定与每个第一类输出张量块分别具有依赖关系的输入张量块;其中,所述第一类输出张量块是基于所述第一划分规则得到的所述第一算子的输出张量的张量块。9.根据权利要求8所述的方法,其特征在于,所述第一处理器确定对所述第二算子的输出张量进行划分的第二划分规则,包括:所述第一处理器根据所述张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定所述第二划分规则。10.根据权利要求9所述的方法,其特征在于,所述第一处理器根据所述张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定所述第二划分规则,包括:当所述第一算子的输出张量的类型和所述第二算子的输出张量的类型,满足所述张量计算加速硬件可支持的张量块的类型时,所述第一处理器根据所述张量计算加速硬件可支持的最小张量块的大小,确定所述第二算子的输出张量可划分的输出张量块的大小的范围;所述第一处理器根据所述范围中的目标值,确定所述第二划分规则。11.根据权利要求9所述的方法,其特征在于,所述第一处理器根据所述张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定所述第二划分规则,包括:当所述第一算子的输出张量的类型和所述第二算子的输出张量的类型,满足所述张量计算加速硬件可支持的张量块的类型...

【专利技术属性】
技术研发人员:王雪莹张臻李广利李翀刘雷
申请(专利权)人:中国科学院计算技术研究所
类型:发明
国别省市:

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

1