【技术实现步骤摘要】
优化张量计算性能的方法及装置
[0001]本申请是分案申请,原申请的申请号是2019108545343,原申请日是2019年09月10日,原申请的全部内容通过引用结合在本申请中。
[0002]本申请涉及深度学习
,尤其涉及优化张量计算性能的方法及装置。
技术介绍
[0003]随着人工智能产业链的迅速发展,深度学习已经成为研究和应用的热点。多层神经网络的深度学习也变得越来越复杂,因此对于处理器的计算能力要求也越来越高。张量计算作为深度学习最核心的计算,占据了深度学习计算量的百分之九十以上,因此,基于运行在张量计算加速硬件的代码的调优,尤为重要。其中,张量计算加速硬件是集成在处理器上执行张量计算的硬件。
[0004]现有技术中,对于待执行任务的代码的调优通常仅限于对单个算子的优化,此种优化方式只能提升单个算子的性能,因此对提升张量计算的性能(如减少执行张量计算的时间)的效果不是很好。
技术实现思路
[0005]本申请实施例提供了优化张量计算性能的方法及装置,有助于提升张量计算的性能。
[0006]第一方面,提供了一种优化张量计算性能的方法,包括:首先,第一处理器接收待执行任务的第一代码,该任务是对至少一个输入张量进行第一算子和第二算子的运算的任务,第一算子的输出张量为第二算子的一个输入张量;接着,第一处理器生成任务的第二代码,第二代码为用于在第二处理器上执行的代码,第二代码描述了存储分配规则,即将第一算子的输出张量存储至第二处理器内部的存储介质的规则;最后,第一处理器向第二处 ...
【技术保护点】
【技术特征摘要】
1.一种优化张量计算性能的方法,其特征在于,所述方法包括:第一处理器接收任务的第一代码,所述任务是对至少一个输入张量进行第一算子和第二算子的运算的任务,所述第一算子的输出张量为所述第二算子的一个输入张量;所述第一处理器基于所述第一代码生成所述任务的第二代码,所述第二代码是用于在所述第二处理器上执行的代码,所述第二代码描述了存储分配规则,所述存储分配规则为将所述第一算子的输出张量存储至第二处理器内部的存储介质的规则;所述第一处理器向所述第二处理器发送所述第二代码。2.根据权利要求1所述的方法,其特征在于,所述存储分配规则具体包括:将所述第一算子的输出张量划分得到的输出张量块存储至所述存储介质的规则;所述第二代码还描述了:与所述第一算子的每个输出张量块分别具有依赖关系的输入张量块、与所述第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及所述执行顺序。3.根据权利要求2所述的方法,其特征在于,所述方法还包括:所述第一处理器确定所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;其中,所述输入张量块是对算子的输入张量进行划分得到的张量块。4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:所述第一处理器确定所述第一算子和所述第二算子间具有依赖关系的张量块的执行顺序。5.根据权利要求3所述的方法,其特征在于,所述第二代码为能够在所述第二处理器上的张量计算加速硬件并行执行的代码,所述第一处理器确定所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块,包括:所述第一处理器分别确定在一个线程上和所述第二处理器的每个并行线程层次上,所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个输出张量块分别具有依赖关系的输入张量块;所述并行线程层次指示对所述第二处理器上的多个线程进行分组的分组层级。6.根据权利要求4所述的方法,其特征在于,所述第二代码为能够在所述第二处理器上的张量计算加速硬件并行执行的代码,所述第一处理器确定所述第一算子和所述第二算子间具有依赖关系的张量块的执行顺序,包括:所述第一处理器分别确定在一个线程上和所述第二处理器的每个并行线程层次上,所述第一算子和所述第二算子间具有依赖关系的张量块的执行顺序。7.根据权利要求4所述的方法,其特征在于,所述第二代码为能够在所述第二处理器上的张量计算加速硬件并行执行的代码,所述存储分配规则具体包括:在一个线程上和所述第二处理器的每个并行线程层次上,将所述第一算子的输出张量划分得到的输出张量块存储至所述存储介质的规则;所述第二代码具体描述了:在一个线程上和所述每个并行线程层次上,与所述第一算子的每个输出张量块分别具有依赖关系的输入张量块、与所述第二算子的每个输出张量块分别具有依赖关系的输入张量块,以及所述执行顺序。8.根据权利要求5所述的方法,其特征在于,所述第一处理器确定所述第一算子的输出张量和所述第二算子的输出张量的划分规则,并确定与基于所述划分规则划分得到的每个
输出张量块分别具有依赖关系的输入张量块,包括:所述第一处理器确定对所述第二算子的输出张量进行划分的第二划分规则;所述第一处理器确定与每个第二类输出张量块分别具有依赖关系的输入张量块和对所述第一算子的输出张量进行划分的第一划分规则;所述第二类输出张量块是基于所述第二划分规则得到的所述第二算子的输出张量的张量块;所述第一处理器确定与每个第一类输出张量块分别具有依赖关系的输入张量块;其中,所述第一类输出张量块是基于所述第一划分规则得到的所述第一算子的输出张量的张量块。9.根据权利要求8所述的方法,其特征在于,所述第一处理器确定对所述第二算子的输出张量进行划分的第二划分规则,包括:所述第一处理器根据所述张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定所述第二划分规则。10.根据权利要求9所述的方法,其特征在于,所述第一处理器根据所述张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定所述第二划分规则,包括:当所述第一算子的输出张量的类型和所述第二算子的输出张量的类型,满足所述张量计算加速硬件可支持的张量块的类型时,所述第一处理器根据所述张量计算加速硬件可支持的最小张量块的大小,确定所述第二算子的输出张量可划分的输出张量块的大小的范围;所述第一处理器根据所述范围中的目标值,确定所述第二划分规则。11.根据权利要求9所述的方法,其特征在于,所述第一处理器根据所述张量计算加速硬件可支持的张量块的类型和最小张量块的大小,确定所述第二划分规则,包括:当所述第一算子的输出张量的类型和所述第二算子的输出张量的类型,满足所述张量计算加速硬件可支持的张量块的类型...
【专利技术属性】
技术研发人员:王雪莹,张臻,李广利,李翀,刘雷,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。