多元算子优化、图优化和图计算的方法、装置及设备制造方法及图纸

技术编号:29873385 阅读:17 留言:0更新日期:2021-08-31 23:48
本发明专利技术提供了一种多元算子的优化方法、图优化的方法、图计算的方法、装置及设备。所述方法包括:将待优化的多元算子,拆分为多个预设输入元数的子算子,以使得拆分得到的多个子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少;将拆分后得到的多个子算子作为所述多元算子的优化结果。本发明专利技术实施例将多元算子优化成若干固定输入元数的子算子,一方面,优化后得到的多个子算子,由于子算子的数量较少,输入张量的切片变少,I/O数量减少,从DDR搬运数据的效率较高,从而提高了设备的运算速度。

【技术实现步骤摘要】
多元算子优化、图优化和图计算的方法、装置及设备
本专利技术涉及数据处理
,特别涉及一种多元算子的优化方法、图优化的方法、图计算的方法、装置及设备。
技术介绍
卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks),是深度学习(DeepLearning)的代表算法之一。卷积神经网络引擎是一种对卷积神经网络进行前向计算的计算引擎,在前向计算过程中,分层计算是它的特点,数据从输入层输入,根据计算图逐算子地分层进行运算,直到输出层。其中,图(Graph)是一种表示对象关联关系的抽象数据结构,按照计算图来进行图计算,即使用图作为数据模型来表达问题并予以解决。根据计算图进行前向计算过程中,每个算子都是计算图中的一个计算节点,算子从广义的角度来说,是对任何函数进行的某一项操作,以Concat算子为例,实现的是将多个算子进行拼接的操作。甚至求幂次、开方也可认为是一种算子。不同算子可实现一个输入元至多个输入元的运算,N元算子实现的是将N个输入算子(元素或集合)进行某项操作以形成另外一个算子(元素或集合)的运算。在一个典型的图计算的方式中,在设备侧,对于多元算子,首先根据输入张量长度、张量数量、动态地计算RAM上的存储空间如何排列,以及从DDR搬运数据至RAM的循环次数,其实现结构复杂、耗费寄存器较多,对设备的性能要求较高,对性能的设备显然不够友好,另外,任意数量的输入元,会造成每个输入元都被精细地分块,极大的增加输入输出(InputandOutput,I/O)的数量,使得整体运算效率低下。因此,为了提高的设备的运算速度,充分利用设备侧的寄存器,减少I/O的数量,对多元算子进行优化显得非常必要,如何对多元算子进行优化,以实现从整体上加快推理引擎的处理速度,已成为该领域的热点研发问题。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种多元算子的优化方法、图优化的方法、图计算的方法、装置及设备。第一方面,本专利技术实施例提供一种多元算子的优化方法,包括:将待优化的多元算子,拆分为多个预设输入元数的子算子,以使得拆分得到的多个子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少;将拆分后得到的多个子算子作为所述多元算子的优化结果。在一个实施例中,将待优化的多元算子,拆分为多个预设输入元数的子算子,包括:根据待优化的多元算子的输入元数,以及第一子算子集合中子算子的输入元数,按照预设的贪心策略,从第一子算子集合中挑选子算子;所述第一子算子集合中包含预设的至少两个输入元数彼此不同的子算子;根据挑选出的子算子,生成第二子算子集合,以使得采用所述第二子算子集合中的子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少。在一个实施例中,按照贪心策略,所述从第一子算子集合中挑选子算子,根据挑选出的子算子,生成第二子算子集合,包括:从所述第一子算子集合中,从输入元数最大的开始,按照大小顺序依次选择子算子;针对每次选择的当前子算子,判断除了所有已选择的子算子为所述分层计算提供的输入元数之外,所述多元算子剩余的输入元数是否大于零;若判断所述剩余的输入元数大于零,则将所述当前子算子放入第二子算子集合中;并再次选择当前子算子,重复执行计算多元算子剩余的输入元数并再次判断是否大于零的步骤,直至所述多元算子剩余的输入元数小于等于零;若判断多元算子剩余的输入元数小于等于零,则放弃当前子算子,并从所述第一子算子集合中,选择输入元数大小次于所述当前子算子的子算子,重复执行计算多元算子剩余的输入元数并再次判断是否大于零的步骤,直至所述第一子算子集合中的所有子算子都已被选择过。在一个实施例中,所述方法还包括:从第二子算子集合中输入元数最小的子算子开始,依次累计子算子输入元数总和;在第一子算子集合中查找是否存在输入元数大于所述输入元数总和的最小子算子;若存在,则将参与输入元数累计的子算子的运行时间总和与所述最小子算子的运行时间进行比较;若所述运行时间总和大于所述最小子算子的运行时间,则在第二子算子集合中,使用所述最小子算子,替换所述参与输入元数累计的所有子算子。在一个实施例中,若所述运行时间总和小于等于所述最小子算子的运行时间,则保持所述第二子算子集合不变。第二方面,本专利技术实施例提供一种图优化的方法,包括:对计算图中的算子进行扫描;在扫描到输入元数大于2的算子时,执行如前述的多元算子的优化方法对所述算子进行优化;在所述计算图中,使用第二子算子集合替换对应的所述算子。第三方面,本专利技术实施例提供一种图计算的方法,包括:使用如前述图优化的方法,对计算图进行优化;按照优化后的计算图进行图计算。第四方面,本专利技术实施例提供一种多元算子的优化装置,包括:拆分模块,用于将待优化的多元算子,拆分为多个预设输入元数的子算子,以使得拆分得到的多个子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少;优化模块,用于将拆分后得到的多个子算子作为所述多元算子的优化结果。第五方面,本专利技术实施例提供一种计算图模型,所述图模型中包含的输入元大于2的算子被第二子算子集合所替换;所述第二子算子集合,采用如前述的多元算子的优化方法得到。第六方面,本专利技术实施例提供一种处理器,所述处理器用于实现如前述的多元算子的优化方法、或者前述的图优化的方法或者如前述的图计算的方法。第七方面,本专利技术实施例提供一种设备,包括:存储器和处理器;其中,所述存储器存储有计算机程序,所述程序被处理器执行时能够实现如前述的多元算子的优化方法、或者如前述的图优化的方法或如前述的图计算的方法。第八方面,本专利技术实施例提供一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时能够实现如前述的多元算子的优化方法、或者如前述图优化的方法或者如前述的图计算的方法。本专利技术实施例提供的上述技术方案的有益效果至少包括:本专利技术实施例提供的多元算子的优化方法、图优化的方法、图计算的方法、装置及设备,对待优化的多元算子,将其拆分为多个预设输入元数的子算子,以使得拆分得到的多个子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少,使用拆分后多个子算子来替代该多元算子,从而实现对多元算子的优化;本专利技术实施例将多元算子优化成若干固定输入元数的子算子,一方面,优化后得到的多个子算子,由于子算子的数量较少,输入张量的切片变少,I/O数量减少,从DDR搬运数据的效率较高,从而提高了设备的运算速度,另一方面,采用若干固定输入元数的子算子的集合来替换原有的多元算子,也能简化设备对输入元数量的判定本文档来自技高网
...

【技术保护点】
1.一种多元算子的优化方法,其特征在于,包括:/n将待优化的多元算子,拆分为多个预设输入元数的子算子,以使得拆分得到的多个子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少;/n将拆分后得到的多个子算子作为所述多元算子的优化结果。/n

【技术特征摘要】
1.一种多元算子的优化方法,其特征在于,包括:
将待优化的多元算子,拆分为多个预设输入元数的子算子,以使得拆分得到的多个子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少;
将拆分后得到的多个子算子作为所述多元算子的优化结果。


2.如权利要求1所述的方法,其特征在于,将待优化的多元算子,拆分为多个预设输入元数的子算子,包括:
根据待优化的多元算子的输入元数,以及第一子算子集合中子算子的输入元数,按照预设的贪心策略,从第一子算子集合中挑选子算子;所述第一子算子集合中包含预设的至少两个输入元数彼此不同的子算子;
根据挑选出的子算子,生成第二子算子集合,以使得采用所述第二子算子集合中的子算子进行分层计算时总输入元数不小于所述多元算子的输入元数,且拆分所得到的子算子数量最少。


3.如权利要求2所述的方法,其特征在于,按照贪心策略,所述从第一子算子集合中挑选子算子,根据挑选出的子算子,生成第二子算子集合,包括:
从所述第一子算子集合中,从输入元数最大的开始,按照大小顺序依次选择子算子;
针对每次选择的当前子算子,判断除了所有已选择的子算子为所述分层计算提供的输入元数之外,所述多元算子剩余的输入元数是否大于零;
若判断所述剩余的输入元数大于零,则将所述当前子算子放入第二子算子集合中;并再次选择当前子算子,重复执行计算多元算子剩余的输入元数并再次判断是否大于零的步骤,直至所述多元算子剩余的输入元数小于等于零;
若判断多元算子剩余的输入元数小于等于零,则放弃当前子算子,并从所述第一子算子集合中,选择输入元数大小次于所述当前子算子的子算子,重复执行计算多元算子剩余的输入元数并再次判断是否大于零的步骤,直至所述第一子算子集合中的所有子算子都已被选择过。


4.如权利要求2或3所述的方法,其特征在于,所述方法还包括:
从第二子算子集合中输入元数最小的子算子开始,依次累计子算子输入元数总和;
在第一子算子集合中查找是否存在输入元数大于所述输入元数总和的最小子算子;
若存在,则将参与输入元数累计的子算子的运行时间总和与所述最小子算子的运行时...

【专利技术属性】
技术研发人员:田光亚朱勇
申请(专利权)人:中科创达软件股份有限公司
类型:发明
国别省市:北京;11

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

1