一种数据处理方法及装置、存储介质与流程

文档序号:22737260发布日期:2020-10-31 09:16阅读:156来源:国知局
一种数据处理方法及装置、存储介质与流程

本申请涉及计算机领域,尤其涉及一种数据处理方法及装置、存储介质。



背景技术:

卷积计算在整个卷积神经网络中的时间占比最高,较高的计算量是制约其应用的因素之一;在卷积计算过程中存在大量的数据被重复使用,在设计针对卷积神经网络加速的处理器时,利用数据可复用的特性能够减少访问片外存储器的次数。

然而,随着实际应用场景的越加复杂以及实际应用场景对精度要求的提高,卷积神经网络的网络拓扑结构不断变化,处理器中固定的数据复用方式与多样的卷积神经网络结构之间存在失配问题,使得整体的数据复用效果较差,进而降低处理器的性能,增加能耗。



技术实现要素:

本申请实施例提供一种数据处理方法及装置、存储介质,能够提高处理器执行卷积计算时的性能,减少能耗。

本申请的技术方案是这样实现的:

本申请实施例提供一种数据处理方法,所述方法包括:

获取卷积神经网络的网络结构参数和处理器的处理器参数;并根据所述网络结构参数和所述处理器参数,设置目标优化算法的约束条件,所述目标优化算法中的优化目标包括处理器能耗和/或处理器性能;

基于所述约束条件执行所述目标优化算法,得到所述卷积神经网络对应的数据复用方式;

根据所述数据复用方式,调度所述处理器执行所述卷积神经网络对应的卷积计算。

本申请实施例提供一种数据处理装置,所述数据处理装置包括:

数据获取单元,用于获取卷积神经网络的网络结构参数和处理器的处理器参数;

约束条件设置单元,用于根据所述网络结构参数和所述处理器参数,设置目标优化算法的约束条件,所述目标优化算法中的优化目标包括处理器能耗和/或处理器性能;

算法执行单元,用于基于所述约束条件执行所述目标优化算法,得到所述卷积神经网络对应的数据复用方式;

卷积单元,用于根据所述数据复用方式,调度所述处理器执行所述卷积神经网络对应的卷积计算。

本申请实施例提供一种数据处理装置,所述数据处理装置包括:处理器、存储器及通信总线;所述处理器执行存储器存储的运行程序时实现如上述数据处理方法。

本申请实施例提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述数据处理方法。

本申请实施例提供了一种数据处理方法及装置、存储介质,该方法包括:获取卷积神经网络的网络结构参数和处理器的处理器参数;并根据网络结构参数和处理器参数,设置目标优化算法的约束条件,目标优化算法中的优化目标包括处理器能耗和/或处理器性能;基于约束条件执行目标优化算法,得到卷积神经网络对应的数据复用方式;根据数据复用方式,调度处理器执行卷积神经网络对应的卷积计算。采用上述实现方案,数据处理装置根据卷积神经网络的网络结构参数和处理器的处理器参数设置了对处理器能耗和/或处理器性能进行优化的目标优化算法的约束条件,此时,执行目标优化算法得到的数据复用方式,是考虑了当前的卷积神经网络和处理器相关信息的,且该数据复用方式使得处理器能耗最小或者性能最优,进而利用该数据复用方式进行卷积计算时,数据复用效果好,进而提高处理器执行卷积计算时的性能,减少能耗。

附图说明

图1为本申请实施例提供的一种数据处理方法的流程图一;

图2为本申请实施例提供的一种数据处理方法的流程图二;

图3为本申请实施例提供的一种示例性的输入特征复用方式的示意图;

图4为本申请实施例提供的一种示例性的卷积核复用方式的示意图;

图5为本申请实施例提供的一种示例性的输出特征复用方法的示意图;

图6为本申请实施例提供的一种数据处理方法的流程图三;

图7为本申请实施例提供的一种示例性的对输入特征图、卷积核和输出特征图进行两层嵌套循环划分的示意图;

图8为本申请实施例提供的一种示例性的数据处理装置基于目标优化算法智能选择数据复用方式和循环分块参数的过程;

图9为本申请实施例提供的一种数据处理装置的结构示意图一;

图10为本申请实施例提供的一种数据处理装置的结构示意图二。

具体实施方式

应当理解,此处描述的具体实施例仅仅用以解释本申请。并不用于限定本申请。

为解决上述问题提出了本申请,具体的通过以下实施例进行论述。

本申请实施例提供一种数据处理方法,如图1所示,该方法可以包括:

s101、获取卷积神经网络的网络结构参数和处理器的处理器参数;并根据网络结构参数和处理器参数,设置目标优化算法的约束条件,目标优化算法中的优化目标包括处理器能耗和/或处理器性能。

本申请实施例中,在初始化阶段,数据处理装置读取卷积神经网络的模型信息和处理器的架构信息,其中,处理器可以为用于实现卷积神经网络的卷积计算的深度学习处理器;之后,数据处理装置解析处理器的架构信息,得到处理器的处理器参数;数据处理装置解析卷积神经网络的参数信息,并将卷积神经网络的参数信息和卷积神经网络的模型信息确定为卷积神经网络的网络结构参数。

本申请实施例中,卷积神经网络为卷积神经网络(convolutionalneuralnetworks,cnn),cnn网络的网络结构可以根据实际情况进行变换,本申请实施例不做具体的限定。

本申请实施例中,卷积神经网络的网络模型可以包括:网络层数,卷积层数,每层卷积核数量,卷积核尺寸等。

本申请实施例中,卷积神经网络的网络结构参数可以包括:卷积步长,卷积方式,输入特征图尺寸,输出特征图尺寸等。

本申请实施例中,处理器架构包括:计算模块、存储模块和控制模块等。

本申请实施例中,处理器参数包括:mac单元数量,片上缓存容量,访存带宽、存储层级等处理器硬件参数。其中,处理器的存储层级可以包括片外存储、片上一级缓存、片上二级缓存和片上三级缓存等,处理器的存储层级根据处理器的存储结构决定。

本申请实施例中,数据处理装置中设置有目标优化算法,目标优化算法中的优化目标包括处理器能耗和/或处理器性能,该目标优化算法中的优化目标可以为一个优化目标,也可以为多个优化目标,具体的可以根据实际情况进行选择,本申请实施例不做具体的限定。例如若需要最大化神经网络的计算吞吐量,可以先优化计算能力,再优化能耗;若需要在能耗和性能之间取得折衷,可以将执行目标修改为综合考虑了性能和能耗的指标等。

可选的,目标优化算法可以包括多目标粒子群算法、多目标进化算法等多目标优化算法,具体的根据实际情况进行选择,本申请实施例不做具体的限定。

本申请实施例中,处理器性能包括:处理器计算能力和处理器对片外存储器的访存带宽等,具体的根据实际情况进行选择,本申请实施例不做具体的限定。

本申请实施例中,目标优化算法的约束条件包括处理器能耗约束条件和/或处理器性能约束条件,其中,处理器性能约束条件可以包括对处理器计算能力的约束条件、对处理器对片外存储器的访存带宽的约束条件和/或对处理器的缓存容量的约束条件。

处理器能耗的计算公式如公式(1)所示:

energy=ndram×edram+nbuffer×ebuffer+nmac×emac(1)

其中,energy为处理器能耗,ndram为访问片外dram的单位能耗,edram为访问片外dram的次数,nbuffer为访问片上缓存buffer的单位能耗,ebuffer为访问片上缓存buffer的次数,nmac为执行一次mac的单位能耗;emac为执行mac的次数。

根据公式(1)可知,ndram和nbuffer是影响处理器能耗的主要因素。

处理器计算能力的计算公式如公式(2)所示:

performance=α×nmac×macutilization×fm(2)

其中,performance为处理器计算能力,α为常数,nmac为处理器中mac单元的数量,macutilization为mac单元的利用率,fm为处理器的频率。

根据公式(2)可知,macutilization为影响处理器计算能力的主要因素。

处理器对片外存储器的带宽的计算公式如公式(3)所示:

bwreq=f(buffersize,nkernel,inputsize,tilingtype)(3)

其中,bwreq为处理器对片外存储器的带宽,buffersize为片上buffer的尺寸、nkernel为卷积核数量,inputsize为输入特征图尺寸,tilingtype为循环分块方式。nkernel、inputsize和tilingtype是影响处理器对片外存储器的带宽的主要因素。

示例性的,约束条件为处理器能耗最小、处理器计算能力最大、处理器对片外存储器的访存带宽最小。将卷积神经网络的网络结构参数和处理器的处理器参数分别输入公式(1)、公式(2)和公式(3)中,并约束处理器能耗、处理器计算能力和访存带宽满足公式(4),

minenergy

maxperformance(4)

minbwerq

在一种可选的实施例中,处理器参数包括处理器的存储层级,在确定出卷积神经网络的网络结构参数和处理器的处理器参数之后,还包括如下步骤,具体的参考图2:

s201、根据处理器的存储层级确定卷积神经网络中卷积层对应的循环分块层数。

本申请实施例中,当确定出处理器的存储层级之后,需要根据处理器的存储层级确定卷积神经网络中卷积层对应的循环分块层数,处理器的存储层级和卷积神经网络中卷积层对应的循环分块层数的对应关系可以为一一对应,如,当处理器的存储层级为两级存储时,卷积神经网络中卷积层对应的循环分块层数为两层嵌套,此时,可以将第一层嵌套循环的输入特征子块、卷积核子块和输出特征子块写入一级存储,将第二层嵌套循环的输入特征子块、卷积核子块和输出特征子块写入二级存储。

需要说明的是,循环分块层数为对卷积神经网络的输入特征图、卷积核和输出特征图的尺寸大小进行多层嵌套循环分块的具体划分层次,如对输入特征图和卷积核进行两层嵌套循环划分时,先将输入特征图和卷积核划分为第一层输入特征子块和第一层卷积核子块,之后再将每一第一层输入特征子块划分为一组第二层输入特征子块,将每一第一层卷积核子块划分为一组第二层卷积核子块。

s202、根据网络结构参数和处理器参数,对目标优化算法设置循环分块层数对应的约束条件。

当数据处理装置根据处理器的存储层级确定卷积神经网络中卷积层对应的循环分块层数之后,数据处理装置还根据网络结构参数和处理器参数,对目标优化算法设置循环分块层数对应的约束条件。

本申请实施例中,根据卷积神经网络对应的循环分块层数,确定卷积神经网络对应的循环分块参数,其中,循环分块参数为输入特征图和卷积神经网络的卷积核对应的分块尺寸参数;根据网络结构参数和处理器参数,对目标优化算法设置循环分块参数对应的循环分块参数约束条件;之后,将处理器能耗约束条件和/或处理器性能约束条件、和循环分块参数约束条件共同确定为循环分块层数对应的约束条件。

本申请实施例中,卷积神经网络对应的循环分块参数包括输入特征图的分块尺寸参数、卷积核的分块尺寸参数和输出特征图的分块尺寸参数,如,对于两层循环划分,输入特征图的分块尺寸参数包括第一层循环划分对应的长(tth)、宽(ttw)、通道数(ttc)和第二层循环划分对应的长(th),宽(tw)、通道数(tc);卷积核的分块尺寸参数包括第一层循环划分对应的卷积核数量(ttn)和第二层循环划分对应的卷积核数量(tn);输出特征图的分块尺寸参数包括第一层循环划分对应的长(tte)、宽(ttf)、通道数(ttn)和第二层循环划分对应的长(te),宽(tf)、通道数(tn)。

在一种可选的实施例中,获取片上缓存容量、输入特征图尺寸和卷积核尺寸,其中,片上缓存容量包括片上输入缓存容量、片上卷积核缓存容量和片上输出缓存容量,输入特征图尺寸包括长h、宽w和通道数c,卷积核尺寸包括卷积核数量n和卷积核边长k,输出特征图尺寸包括长e、宽f和通道数n,则,循环分块参数约束条件为输入特征子块的尺寸参数值小于输入特征图尺寸,卷积核子块的尺寸参数值小于卷积核尺寸,输入特征子块的容量小于片上输入缓存容量,卷积核子块的容量小于片上卷积核缓存容量,输出特征子块的容量小于片上输出缓存容量。

示例性的,对于两层循环而言,循环分块参数约束条件如公式(5):

tw×th×tc≤片上输入缓存容量

tn×k×k×tc≤片上卷积核缓存容量

tf×te×tn≤片上输出缓存容量

1≤th≤tth≤h(5)

1≤tw≤ttw≤w

1≤tc≤ttc≤c

1≤tn≤ttn≤n

其中,tw×th×tc表征输入特征子块的容量,tn×k×k×tc表征卷积核子块的容量,tf×te×tn表征输出特征子块的容量。

可以理解的是,数据处理装置根据处理器的存储层级,对卷积神经网络的输入特征图、卷积核和输出特征图进行多层次的嵌套循环划分,此时,嵌套循环划分的子块的容量小于对应的片上缓存的容量,能够根据卷积神经网络的循环分块层数将对应的子块写入对应的片上缓存中,进而合理的利用了处理器的存储特性,提高卷积神经网络的数据重用性,降低处理器对片外存储器的访存需求。

s102、基于约束条件执行目标优化算法,得到卷积神经网络对应的数据复用方式。

当数据处理装置根据网络结构参数和处理器参数,设置目标优化算法的约束条件之后,数据处理装置基于约束条件执行目标优化算法,得到卷积神经网络的数据复用方式。

本申请实施例中,约束条件包括:处理器能耗约束条件和/或处理器性能约束条件;数据处理装置执行目标优化算法,得到满足处理器能耗约束条件和/或处理器性能约束条件的数据复用方式。

本申请实施例中,数据复用方式包括输入特征复用、卷积核复用和输出特征复用中的至少一种,具体的根据约束条件确定,本申请实施例不做具体的限定。

进一步地,约束条件还包括:循环分块约束条件,数据处理装置在执行目标优化算法的过程中,还可以得到满足处理器能耗约束条件和/或处理器性能约束条件、和循环分块参数约束条件的循环分块参数值。

示例性的,对于两层循环而言,执行目标优化算法,得到最优的数据复用方式(mode)和循环分块参数值(mode,ttw,tth,ttc,ttn,tw,th,tc,tn)。

s103、根据数据复用方式,调度处理器执行卷积神经网络对应的卷积计算。

当数据处理装置得到卷积神经网络对应的数据复用方式之后,数据处理装置根据数据复用方式,调度处理器执行卷积神经网络对应的卷积计算。

在一种可选的实施例中,输入特征复用是指一个卷积窗口内的输入特征图与对应位置的不同卷积核做卷积计算,如图3所示,输入特征图为w*h*c,对于输入特征图中的输入特征向量input[0][0][0-c]为例,它与n个卷积核中对应位置的向量kernel[n][0][0][0-c]分别相乘累加,得到对应位置输出特征图的部分和outputsum。

在一种可选的实施例中,卷积核复用是指输入特征图中的多个卷积窗口复用相同的卷积核,如图4所示,以权重特征向量kernel[0][0][0][0-c]例子,假设卷积窗口在水平方向的滑动步长为1,则kernel[0][0][0][0-c]分别与输入特征向量input[0][0][0-c],input[1][0][0-c],input[2][0][0-c]进行乘累加计算,因此kernel[0][0][0][0-c]被复用3次后,得到输出特征图的部分和outputsum。

在一种可选的实施例中,输出特征复用是指首先将卷积窗口内的运算输出部分和与上一次计算的部分和进行累加,得到完整的输出特征之后,再滑动卷积窗口取新的输入和权重数据。如图5所示,以计算输出特征点output(0,0,0)为例,一个输入向量input[x][y][0-c]和一个权重向量kernel[0][x][y][0-c]进行乘累加计算,每次只能算出output(0,0,0)完整结果的1/(k*k),因此需要完成k*k-1次向量部分和的累加才能得到完整的输出点。

进一步地,数据处理装置还可以根据数据复用方式和循环分块参数值,调度处理器执行卷积神经网络对应的卷积计算。具体的过程如图6所示:

s301、根据循环分块层数和循环分块参数值,对输入特征图和卷积核进行层级划分,得到输入特征子块和卷积核子块。

本申请实施例中,按照循环分块层数的嵌套顺序,如从外层到内层的顺序,利用循环分块层数对应的循环分块参数值对输入特征图和卷积核进行层级划分,具体的,按照循环分块层数中最外层对应的循环分块参数值,将输入特征图和卷积核进行最外层划分,得到一组最外层输入特征子块和最外层卷积核子块,之后,按照与最外层循环相邻的次外层对应的循环分块参数值,将每一个最外层输入特征子块和每一个最外层卷积核子块进一步划分为一组次外层输入特征子块和次外层卷积核子块,依次类推,直至完成嵌套层级的内层划分,得到内层输入特征子块和内层卷积核子块,此时,完成对输入特征图和卷积核进行层级划分,得到输入特征子块和卷积核子块的过程。

示例性的,如图7所示,以两层嵌套为例,对于外层嵌套而言,首先将w*h*c的输入特征图划分为若干个外层输入特征子块ttw*tth*ttc,将f*e*n的输出特征图划分为若干个外层输出特征子块ttf*tte*ttn,对应的将n*k*k*c的卷积核划分为若干个外层卷积核子块ttn*k*k*ttc;对于内层嵌套而言,将ttw*tth*ttc进一步划分为若干个内层输入特征子块tw*th*tc,将ttf*tte*ttn进一步划分为若干个内层输出特征子块tf*te*tn,将ttn*k*k*ttc进一步划分为若干个内层卷积核子块tn*k*k*tc。

s302、根据循环分块层数对应的存储层级,将多层输入特征子块分级存储至处理器的多级输入缓存中、将多层卷积核子块分级存储至处理器的多级卷积核缓存中。

当数据处理装置根据循环分块层数和循环分块参数值,对输入特征图和卷积核进行层级划分,得到输入特征子块和卷积核子块之后,数据处理装置根据循环分块层数对应的存储层级,分别将输入特征子块分级存储至处理器的多级输入缓存中、将卷积核子块分级存储至处理器的多级卷积核缓存中,其中,处理器的存储层级与多级输入缓存的级数和多级卷积核缓存的级数相同。

本申请实施例中,分别为输入特征图分配多级输入缓存,为卷积核分配多级卷积核缓存,当将输入特征图划分为多层输入特征子块之后,将多层输入特征子块分级存储至多级输入缓存中;当将卷积核划分为多层卷积核子块之后,将多层卷积核子块分级存储至多级卷积核缓存中。

以处理器的存储层级包括片上buffer和片外动态随机存取存储器(dynamicrandomaccessmemory,dram)为例,分别将外层输入特征子块和外层卷积核子块存在片外dram中,将内层输入特征子块存在片上输入buffer中;将内层卷积核子块存在片上卷积核buffer中。

示例性的,参考图7,tw*th*tc存放在片上输入缓存(bufferinput)中,tn个k*k*tc存放在片上权重缓存(bufferweight),tf*te*tn存放在片上输出缓存(bufferoutput)中。

s303、根据数据复用方式,逐级调度多级输入缓存和多级卷积核缓存嵌套循环执行卷积计算。

当数据处理装置根据循环分块层数对应的存储层级,将多层输入特征子块分级存储至处理器的多级输入缓存中、将多层卷积核子块分级存储至处理器的多级卷积核缓存中之后,数据处理装置根据数据复用方式,逐级调度多级输入缓存和多级卷积核缓存嵌套循环执行卷积计算。

本申请实施例中,按照数据复用方式,逐级从多级输入缓存和多级卷积核缓存中读取第一层循环的第一输入特征子块和第一卷积核子块,第一层循环为循环分块层数中的内层循环;按照数据复用方式,对第一输入特征子块和第一卷积核子块进行卷积计算,得到第一层循环的第一输出特征子块;逐级调度处理器的多层输出缓存写入第一输出特征子块;并按照数据复用方式,逐级从多级输入缓存和多级卷积核缓存中读取第二层循环的第二输入特征子块和第二卷积核子块,以执行第二层循环的卷积计算,第二层循环为第一层循环的外层嵌套循环;直至嵌套循环完成循环分块层数时,完成卷积计算过程。

本申请实施例中,在嵌套循环执行卷积神经网络的卷积计算过程中,对每一层的循环卷积计算过程,均采用确定出的数据复用方式,即采用数据复用方式进行内层循环,在内层循环完成之后,采用数据复用方式进行外层循环,依次嵌套循环执行,直至采用相同的数据复用方式嵌套循环完成全部的循环分块层数时,完成卷积计算过程;且由于不同的数据复用方式需要复用的数据对象不同,如复用输入特征、复用卷积核和/或复用输出特征,故在每一层的循环卷积计算过程中,调度缓存的方式也不相同,具体的,在每一层的循环卷积计算过程中逐级调度缓存的策略是根据数据复用方式确定出的。

示例性的,参考图7,在输入特征复用方式下,当第一个tw*th*tc大小的输入特征子块和tn个k*k*tc卷积核子块做完卷积计算后,bufferinput内的输入数据保持不变,逐级调度多级卷积核缓存,bufferweight在输出通道ttn方向上读取新的tn个k*k*tc卷积核子块数据与输入子块做卷积计算,依次循环,直到ttn个k*k*tc卷积核子块被用完。此后bufferinput依次在ttc通道方向,ttw方向,tth方向进行遍历,逐级调度多级输入缓存,并从bufferinput中取出新的输入特征子块在卷积核子块上重用,直到ttw*tth*ttc大小的输入特征子块被遍历完后,内层循环结束。此时外层循环至下一个ttw*tth*ttc大小的输入特征子块,在外层循环,依然沿用内层循环的输入数据复用方法,在下一个ttw*tth*ttc大小的输入特征子块被n个k*k*ttc大小的卷积核子块上重用完之后,再取新的ttw*tth*ttc大小的输入特征子块,直到卷积窗口遍历完h*w*c大小的输入特征图。

示例性的,参考图7,在卷积核复用方式下,当第一个tw*th*tc大小的输入子块和tn个k*k*tc卷积核子块做完卷积计算后,bufferweight内的权重数据保持不变,卷积窗口在ttw和tth方向上进行滑动,逐级调度多层输入特征缓存,从bufferinput中取出新的tw*th*tc大小的输入特征子块与bufferweight内的卷积核子块做卷积计算,直到遍历完ttw*tth*tc大小的输入特征子块。此后,逐级调度多层卷积核缓存,bufferweight依次在ttc通道方向,ttw方向,tth方向进行遍历,取出新的卷积核子块在输入子块上重用,直到ttn*k*k*ttc大小的卷积核子块被遍历完后,内层循环结束。此时外层循环至下一个ttn*k*k*ttc大小的卷积核子块,在外层循环,依然沿用内层循环的权重数据复用方法,等下一个ttn*k*k*ttc大小的卷积核子块在h*w*ttc大小的输入特征子块上被充分复用后,再取新的卷积核子块,直到遍历完n个k*k*c大小的卷积核。

示例性的,参考图7,在输出特征复用方式下,当第一个tw*th*tc大小的输入子块和tn个k*k*tc卷积核子块进行卷积计算,得到tf*te*tn大小的输出子块的部分和,若干输出子块的部分和进行累加后写入外部存储器。因此,bufferoutput的部分和数据依然保留,bufferinput和bufferweight分别依次在ttc通道方向上读取新的tw*th*tc大小的输入子块和k*k*tc大小权重子块,算出的部分和与之前的部分和进行累加,将更新的部分和结果存到bufferoutput中,当tw*th*ttc的输入数据和tn*k*k*ttc的权重数据被读取完后,逐级调度多级输出缓存,此时tf*te*tn大小的输出子块部分和被写到片外存储器中等待下一次计算部分和时再读入。然后bufferinput和bufferweight分别依次在ttn方向,ttw方向,tth方向读取新的子块进行计算,并与之前的部分和相加,得到输出子块ttf*tte*ttn的部分和,此时内层循环结束。在外层循环,依然沿用内层循环的输出数据复用方法,直至ttf*tte*ttn的输出子块部分和数据在c通道方向上累加完成,再取新的输入块和卷积核块,直到算出完整的f*e*n大小的输出特征图。

进一步地,数据处理装置还判断卷积神经网络的网络结构参数是否更新,并在判断出卷积神经网络的网络结构参数更新的情况下,根据更新后的网络结构参数和处理器参数,更新目标优化算法的约束条件。

示例性的,以两层嵌套为例,数据处理装置基于目标优化算法智能选择数据复用方式和循环分块参数的过程如图8所示,包括:

1、在初始化阶段,读取cnn网络的模型信息和深度学习处理器的架构信息;

2、解析cnn网络的参数信息,并根据深度学习处理器的架构信息得到深度学习处理器的硬件资源;

3、根据cnn网络结构参数信息、cnn网络模型信息和深度学习处理器的硬件资源,对多目标优化算法设置相应的条件约束。

其中,多目标优化算法的优化目标包括能耗最低、计算能力最强、对片外存储器的访存带宽最小,条件约束为:

能耗=能耗公式

计算能力=计算能力公式

访存带宽=访存带宽公式

tw*th*tc<=片上输入缓存容量

tn*k*k*tc<=片上权重缓存容量

tf*te*tn<=片上输出缓存容量

1<=th<=tth<=h

1<=tw<=ttw<=w

1<=tc<=ttc<=c

1<=tn<=ttn<=n

4、基于条件约束执行多目标优化算法,得到最优数据复用方式和循环分块参数(mode,ttw,tth,ttc,ttn,tw,th,tc,tn)。

5、判断cnn网络结构参数信息是否发生变化。

6、当判断出cnn网络结构参数信息发生变化时,执行2。

7、当判断出cnn网络结构参数信息未发生变化时,根据最优数据复用方式和循环分块参数,通过控制器逐级调度深度学习处理器中的片外dram、bufferinput、bufferweight和bufferoutput执行卷积计算单元的卷积计算。

可以理解的是,数据处理装置根据卷积神经网络的网络结构参数和处理器的处理器参数设置了对处理器能耗和/或处理器性能进行优化的目标优化算法的约束条件,此时,执行目标优化算法得到的数据复用方式,是考虑了当前的卷积神经网络和处理器相关信息的,且该数据复用方式使得处理器能耗最小或者性能最优,进而利用该数据复用方式进行卷积计算时,数据复用效果好,进而提高处理器执行卷积计算时的性能,减少能耗。

本申请实施例提供一种数据处理装置1。如图9所示,该数据处理装置1包括:

数据获取单元10,用于获取卷积神经网络的网络结构参数和处理器的处理器参数;

约束条件设置单元11,用于根据所述网络结构参数和所述处理器参数,设置目标优化算法的约束条件,所述目标优化算法中的优化目标包括处理器能耗和/或处理器性能;

算法执行单元12,用于基于所述约束条件执行所述目标优化算法,得到所述卷积神经网络对应的数据复用方式;

卷积单元13,用于根据所述数据复用方式,调度所述处理器执行所述卷积神经网络对应的卷积计算。

可选的,所述约束条件包括:处理器能耗约束条件和/或处理器性能约束条件,

所述算法执行单元12,还用于执行所述目标优化算法,得到满足所述处理器能耗约束条件和/或所述处理器性能约束条件的所述数据复用方式。

可选的,所述处理器参数包括所述处理器的存储层级;所述装置还包括:确定单元;

所述确定单元,用于根据所述处理器的存储层级确定所述卷积神经网络中卷积层对应的循环分块层数;

所述约束条件设置单元11,还用于根据所述网络结构参数和所述处理器参数,对所述目标优化算法设置所述循环分块层数对应的约束条件。

可选的,所述确定单元,还用于根据所述卷积神经网络对应的循环分块层数,确定所述卷积神经网络对应的循环分块参数,所述循环分块参数为输入特征图、卷积神经网络的卷积核和输出特征图对应的分块尺寸参数;将所述处理器能耗约束条件和/或所述处理器性能约束条件、和所述循环分块参数约束条件确定为所述循环分块层数对应的约束条件;

所述约束条件设置单元11,还用于根据所述网络结构参数和所述处理器参数,对所述目标优化算法设置所述循环分块参数对应的约束条件。

可选的,所述算法执行单元12,还用于执行所述目标优化算法,得到满足处理器能耗约束条件和/或所述处理器性能约束条件、和所述循环分块参数约束条件的循环分块参数值;执行所述目标优化算法,得到满足所述处理器能耗约束条件和/或所述处理器性能约束条件的所述数据复用方式。

可选的,所述卷积单元13,还用于根据所述数据复用方式和所述循环分块参数值,调度处理器执行所述卷积神经网络对应的卷积计算。

可选的,所述装置还包括:层级划分单元和存储单元;

所述层级划分单元,用于根据所述循环分块层数和所述循环分块参数值,对所述输入特征图和所述卷积核进行层级划分,得到多层输入特征子块和多层卷积核子块;

所述存储单元,用于根据所述循环分块层数对应的所述存储层级,将所述多层输入特征子块分级存储至所述处理器的多级输入缓存中、将所述多层卷积核子块分级存储至所述处理器的多级卷积核缓存中;

所述卷积单元13,还用于根据所述数据复用方式,逐级调度所述多级输入缓存和所述多级卷积核缓存嵌套循环执行所述卷积计算。

可选的,所述装置还包括:读取单元;

所述读取单元,用于按照所述数据复用方式,逐级从所述多级输入缓存和所述多级卷积核缓存中读取第一层循环的第一输入特征子块和第一卷积核子块,所述第一层循环为所述循环分块层数中的内层循环;并按照所述数据复用方式,逐级从所述多级输入缓存和所述多级卷积核缓存中读取第二层循环的第二输入特征子块和第二卷积核子块,以执行第二层循环的卷积计算,所述第二层循环为所述第一层循环的外层嵌套循环;直至嵌套循环完成所述循环分块层数时,完成所述卷积计算过程;

所述卷积单元13,还用于按照所述数据复用方式,对所述第一输入特征子块和所述第一卷积核子块进行卷积计算,得到所述第一层循环的第一输出特征子块;

所述存储单元,还用于逐级调度所述处理器的多层输出缓存写入所述第一输出特征子块。

可选的,所述装置还包括:更新单元;

所述更新单元,用于在所述卷积神经网络的网络结构参数更新的情况下,根据更新后的网络结构参数和所述处理器参数,更新所述目标优化算法的约束条件。

可选的,所述数据复用方式包括输入特征复用、卷积核复用和输出特征复用中的至少一种。

本申请实施例提供的一种数据处理装置,获取卷积神经网络的网络结构参数和处理器的处理器参数;并根据网络结构参数和处理器参数,设置目标优化算法的约束条件,目标优化算法中的优化目标包括处理器能耗和/或处理器性能;基于约束条件执行目标优化算法,得到卷积神经网络对应的数据复用方式;根据数据复用方式,调度处理器执行卷积神经网络对应的卷积计算由此可见,本实施例提出的数据处理装置根据卷积神经网络的网络结构参数和处理器的处理器参数设置了对处理器能耗和/或处理器性能进行优化的目标优化算法的约束条件,此时,执行目标优化算法得到的数据复用方式,是考虑了当前的卷积神经网络和处理器相关信息的,且该数据复用方式使得处理器能耗最小或者性能最优,进而利用该数据复用方式进行卷积计算时,数据复用效果好,进而提高处理器执行卷积计算时的性能,减少能耗。

图10为本申请实施例提供的一种数据处理装置1的组成结构示意图二,在实际应用中,基于上述实施例的同一公开构思下,如图10所示,本实施例的数据处理装置1包括:处理器14、存储器15及通信总线16。

在具体的实施例的过程中,上述数据获取单元10、约束条件设置单元11、算法执行单元12、卷积单元13、确定单元、层级划分单元、读取单元和更新单元可由位于数据处理装置1上的处理器14实现,上述存储单元由位于数据处理装置1上的存储器15实现,上述处理器14可以为特定用途集成电路(asic,applicationspecificintegratedcircuit)、数字信号处理器(dsp,digitalsignalprocessor)、数字信号处理图像处理装置(dspd,digitalsignalprocessingdevice)、可编程逻辑图像处理装置(pld,programmablelogicdevice)、现场可编程门阵列(fpga,fieldprogrammablegatearray)、cpu、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本实施例不作具体限定。

在本申请实施例中,上述通信总线16用于实现处理器14和存储器15之间的连接通信;上述处理器14执行存储器15中存储的运行程序时实现如下的数据处理方法:

获取卷积神经网络的网络结构参数和处理器的处理器参数;并根据所述网络结构参数和所述处理器参数,设置目标优化算法的约束条件,所述目标优化算法中的优化目标包括处理器能耗和/或处理器性能;基于所述约束条件执行所述目标优化算法,得到所述卷积神经网络对应的数据复用方式;根据所述数据复用方式,调度所述处理器执行所述卷积神经网络对应的卷积计算。

进一步地,在上述实施例中,所述约束条件包括:处理器能耗约束条件和/或处理器性能约束条件,

所述处理器14,还用于执行所述目标优化算法,得到满足所述处理器能耗约束条件和/或所述处理器性能约束条件的所述数据复用方式。

进一步地,在上述实施例中,所述处理器参数包括所述处理器的存储层级;

所述处理器14,还用于根据所述处理器的存储层级确定所述卷积神经网络中卷积层对应的循环分块层数;根据所述网络结构参数和所述处理器参数,对所述目标优化算法设置所述循环分块层数对应的约束条件。

进一步地,在上述实施例中,所述处理器14,还用于根据所述卷积神经网络对应的循环分块层数,确定所述卷积神经网络对应的循环分块参数,所述循环分块参数为输入特征图、所述卷积神经网络的卷积核和输出特征图对应的分块尺寸参数;根据所述网络结构参数和所述处理器参数,对所述目标优化算法设置所述循环分块参数对应的循环分块参数约束条件;将所述处理器能耗约束条件和/或所述处理器性能约束条件、和所述循环分块参数约束条件确定为所述循环分块层数对应的约束条件。

进一步地,在上述实施例中,所述处理器14,还用于执行所述目标优化算法,得到满足所述处理器能耗约束条件和/或所述处理器性能约束条件、和所述循环分块参数约束条件的循环分块参数值;执行所述目标优化算法,得到满足所述处理器能耗约束条件和/或所述处理器性能约束条件的所述数据复用方式。

进一步地,在上述实施例中,所述处理器14,还用于根据所述数据复用方式和所述循环分块参数值,调度处理器执行所述卷积神经网络对应的卷积计算。

进一步地,在上述实施例中,所述处理器14,还用于根据所述循环分块层数和所述循环分块参数值,对所述输入特征图和所述卷积核进行层级划分,得到多层输入特征子块和多层卷积核子块;根据所述循环分块层数对应的所述存储层级,将所述多层输入特征子块分级存储至所述处理器的多级输入缓存中、将所述多层卷积核子块分级存储至所述处理器的多级卷积核缓存中;根据所述数据复用方式,逐级调度所述多级输入缓存和所述多级卷积核缓存嵌套循环执行所述卷积计算。

进一步地,在上述实施例中,所述处理器14,还用于按照所述数据复用方式,逐级从所述多级输入缓存和所述多级卷积核缓存中读取第一层循环的第一输入特征子块和第一卷积核子块,所述第一层循环为所述循环分块层数中的内层循环;按照所述数据复用方式,对所述第一输入特征子块和所述第一卷积核子块进行卷积计算,得到所述第一层循环的第一输出特征子块;逐级调度所述处理器的多层输出缓存写入所述第一输出特征子块;并按照所述数据复用方式,逐级从所述多级输入缓存和所述多级卷积核缓存中读取第二层循环的第二输入特征子块和第二卷积核子块,以执行第二层循环的卷积计算,所述第二层循环为所述第一层循环的外层嵌套循环;直至嵌套循环完成所述循环分块层数时,完成所述卷积计算过程。

进一步地,在上述实施例中,所述处理器14,还用于在所述卷积神经网络的网络结构参数更新的情况下,根据更新后的网络结构参数和所述处理器参数,更新所述目标优化算法的约束条件。

进一步地,在上述实施例中,所述数据复用方式包括输入特征复用、卷积核复用和输出特征复用中的至少一种。

本申请实施例提供一种存储介质,其上存储有计算机程序,上述计算机可读存储介质存储有一个或者多个程序,上述一个或者多个程序可被一个或者多个处理器执行,应用于数据处理装置中,该计算机程序实现如上述数据处理方法。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本公开的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台图像显示设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本公开各个实施例所述的方法。

以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。

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