发明内容
本发明旨在至少解决现有技术中存在的技术问题之一,提供一种用于卷积运算的数据重用方法、一种用于卷积运算的数据重用装置、一种卷积运算方法、一种卷积运算装置、一种运算芯片、一种电子设备以及一种计算机可读存储介质。
本发明的一个方面提供一种用于卷积运算的数据重用方法,包括:
确定执行卷积运算时的限制条件;
根据所述限制条件,确定每个所述数据对应的每个维度上的划分尺寸;
根据所述划分尺寸,将每个所述数据对应的每个所述维度进行划分,获得每个所述数据对应的每个所述维度的候选子图块集合;
将每个所述维度的所述候选子图块集合中的每一个候选子图块,与其余所述维度的候选子图块集合中的每一个候选子图块进行组合,获得每个所述数据的候选图块集合;
将每个所述候选图块集合分别输入至预设的代价函数,并选取所述代价函数的最小输出值对应的候选图块作为目标图块,并将所述目标图块作为所述数据的后续重用划分方式。
在一些可选地实施方式中,所述限制条件包括并行通道数量以及每个数据在片上存储器所分配的内存块数量。
在一些可选地实施方式中,所述将每个所述候选图块集合分别输入至预设的代价函数,包括:
根据每个所述数据所分配的所述内存块数量,从每个所述候选图块集合中剔除无效的候选图块,获得有效候选图块集合;
将每个所述有效候选图块集合分别输入至所述代价函数。
在一些可选地实施方式中,所述将每个所述有效候选图块集合分别输入至所述代价函数,包括:
根据卷积运算的维度的先后顺序,确定所述有效候选图块集合中每个有效候选图块的有效候选图块组合,获得每个所述数据的有效候选图块组合集合;
将每个所述有效候选图块组合集合分别输入至所述代价函数。
在一些可选地实施方式中,所述根据所述划分尺寸,将每个所述数据对应的每个所述维度进行划分,获得每个所述数据对应的每个所述维度的候选子图块集合,包括:
根据所述划分尺寸,对输出数据对应的输出宽度、输出高度和输出通道数量三个维度进行划分、以及,对权重数据对应的输出宽度、输出高度、输入通道数量和输出通道数量四个维度进行划分,获得所述候选子图块集合。
本发明的另一个方面,提供一种用于卷积运算的数据重用装置,包括:
一个确定模块,用于确定执行卷积运算时的限制条件;
一个计算模块,用于根据所述限制条件,确定每个所述数据对应的每个维度上的划分尺寸;
一个划分模块,用于根据所述划分尺寸,将每个所述数据对应的每个所述维度进行划分,获得每个所述数据对应的每个所述维度的候选子图块集合;
一个组合模块,用于将每个所述维度的所述候选子图块集合中的每一个候选子图块,与其余所述维度的候选子图块集合中的每一个候选子图块进行组合,以获得每个所述数据的候选图块集合;
一个选取模块,用于将每个所述候选图块集合分别输入至预设的代价函数,并选取所述代价函数的最小输出值对应的候选图块作为目标图块,并将所述目标图块作为所述数据的后续重用划分方式。
在一些可选地实施方式中,所述限制条件包括并行通道数量以及每个数据在片上存储器所分配的内存块数量。
在一些可选地实施方式中,所述选取模块包括一个剔除单元和一个输入单元,所述将每个所述候选图块集合分别输入至预设的代价函数,包括:
所述剔除单元,用于根据每个所述数据所分配的所述内存块数量,从每个所述候选图块集合中剔除无效的候选图块,获得有效候选图块集合;
所述输入单元,用于将每个所述有效候选图块集合分别输入至所述代价函数。
在一些可选地实施方式中,所述选取模块还包括一个组合单元,所述将每个所述有效候选图块集合分别输入至所述代价函数,包括:
所述组合单元,用于根据卷积运算的维度的先后顺序,确定所述有效候选图块集合中每个有效候选图块的有效候选图块组合,获得每个所述数据的有效候选图块组合集合;
所述输入单元,还用于将每个所述有效候选图块组合集合分别输入至所述代价函数。
在一些可选地实施方式中,所述划分模块,具体用于:
根据所述划分尺寸,对输出数据对应的输出宽度、输出高度和输出通道数量三个维度进行划分、以及,对权重数据对应的输出宽度、输出高度、输入通道数量和输出通道数量四个维度进行划分,获得所述候选子图块集合。
本发明的另一个方面,提供一种卷积运算方法,采用前文记载的所述的数据重用方法。
本发明的另一个方面,提供一种卷积运算装置,采用前文记载的所述的数据重用装置。
本发明的另一个方面,提供一种运算芯片,包括前文记载的所述的数据重用装置,或,包括前文记载的所述的卷积运算装置。
本发明的另一个方面,提供一种电子设备,包括:
一个或多个处理器;
一个存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据前文记载的所述的数据重用方法或前文记载的所述的卷积运算方法。
本发明的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的数据重用方法或前文记载的所述的卷积运算方法。
本发明实施例的数据重用方法及装置、卷积运算方法及装置。首先获取确定执行卷积运算时的限制条件,其次,根据该限制条件获得每个维度的划分尺寸,之后,根据划分尺寸进行划分,获得每个维度的候选子图块集合,再之后,将每个维度的候选子图块与其余维度的候选子图块进行组合获得候选图块集合,最后,将候选图块集合输入至代价函数,选取最小值对应的候选图块为目标图块,以此决定数据后续重用划分方式。在执行卷积运算过程中,可以使得数据进出片上存储器的次数最少,每个数据的重用性或复用率最高,提高卷积运算效率,节省卷积运算时间。
具体实施方式
为使本领域技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明作进一步详细描述。
首先,参照图1来描述用于实现本发明实施例的数据重用装置、卷积运算装置、数据重用方法及卷积运算方法的示例电子设备。
如图1所示,电子设备200包括一个或多个处理器210、一个或多个存储装置220、一个或多个输入装置230、一个或多个输出装置240等,这些组件通过总线系统250和/或其他形式的连接机构互连。应当注意,图1所示的电子设备的组件和结构只是示例性的,而非限制性的,根据需要,电子设备也可以具有其他组件和结构。
处理器210可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备200中的其他组件以执行期望的功能。
存储装置220可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其他期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如,所述应用程序使用和/或产生的各种数据等。
输入装置230可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
输出装置240可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
其次,对本发明下文中所提及的一些英文简称进行说明:
KB:权重数据;
IB:输入图像数据;
AB:累加数据;
OB:输出数据,是AB数据的截位;
Di:输入通道数量;
Do:输出信道数量;
simd di:输入并行通道数量;
simd do:输出并行通道数量;
IB包括三个维度,分别为宽度维度Win,高度维度Hin,深度维度Di;
KB包括四个维度,分别为宽度维度FW,高度维度Fh,深度维度Di和Do;
AB/OB包括三个维度,分别为宽度维度Wout,高度维度Hout,深度维度Do。
下面,将参考图2描述根据本发明实施例的用于卷积运算的数据重用方法。
如图2所示,一种用于卷积运算的数据重用方法S100,包括:
S110、确定执行卷积运算时的限制条件。
具体地,在本步骤中,在执行卷积运算时,根据硬件的不同卷积模式,抽取出硬件限制条件。示例性的,不同的底层卷积模式,对IB在片上存储器所分配的内存块(Memory)数量有所限制、AB或OB在片上存储器所分配的Memory数量有所限制,如其中一个卷积模式,对IB分配Memory数量为512个,对AB或OB分配Memory数量为1024个等等。此外,不同的底层卷积模式,对并行通道数量的限制也并不相同,例如,其中一个卷积模式,其simd di并行通道数量为16,simd do并行通道数量为16等等。当然,除了上述所列举的一些限制条件以外,本领域技术人员还可以根据实际需要,选择其他一些具体地限制条件,本实施例对此并不限制。
S120、根据所述限制条件,确定每个所述数据对应的每个维度上的划分尺寸。
具体地,在本步骤中,假设其中一个硬件的卷积模式所对应的限制条件为
在这种限制条件下,Di或Do维度上的划分尺寸为d
i*d
o=16k*16l。另外,在宽度W和高度H这两个维度上的划分尺寸并没有要求。示例性的,原始的任务为计算IB=W
in*H
in*D
i,KB=F
w*F
h*D
i*D
o,OB=W
out*H
out*D
o。在一个限制条件为
下,ib=w
in*h
in*16k,kb=F
w*F
h*16k*16l,ob=w
out*h
out*16l,其中,k和l为大于等于1的整数,ib为IB的划分尺寸,kb为KB的划分尺寸,ob为OB的划分尺寸。
S130、根据所述划分尺寸,将每个所述数据对应的每个所述维度进行划分,获得每个所述数据对应的每个所述维度的候选子图块集合。
具体地,在本步骤中,根据di,do的限制条件,穷举出各个维度上所有可用的候选子图块,获得每个数据对应的每个所述维度上的候选子图块集合。以IB和OB为例,这两个数据具有三个维度,在宽度和高度这两个维度上的划分尺寸并没有限制,此时,可以根据每一个可能的划分尺寸对IB和OB对应的宽度维度和高度维度进行划分,获得对应宽度维度和高度维度的候选子图块,在深度这个维度上,需要考虑di,do的限制条件,例如,di限制为16,则划分尺寸只能为16的倍数,比如16、32、64等进行划分,从而在深度这个维度上获得对应的候选子图块。对于KB,与IB和OB的划分方式相类似,在此不作赘述。根据IB、KB和OB对应的每个维度上所穷举出的候选子图块,获得所需要的候选子图块集合。
S140、将每个所述维度的所述候选子图块集合中的每一个候选子图块,与其余所述维度的候选子图块集合中的每一个候选子图块进行组合,获得每个所述数据的候选图块集合。
具体地,在本步骤中,每个维度可以产生一个循环,以便穷尽每个维度上的候选图块。例如,步骤S130中得到了每个数据在对应的每个维度上的候选子图块集合,在该步骤S140中,需要将每个维度上的候选子图块集合中的每个候选子图块与该数据在其余维度上的候选子图块集合中的每个候选子图块进行组合,获得每个所述数据的候选图块集合。示例性的,以IB为例,假设在步骤S130里面得到其宽度维度的候选子图块集合用向量表示为W=(W1、W2…Wn),高度维度的候选子图块集合用向量表示为H=(H1、H2…Hn),深度维度的候选子图块集合用向量表示为D=(D1、D2…Dn),则在步骤S140中,是将向量W中的每一个元素与向量H和向量D中的每一个元素进行组合,获得IB的候选图块集合。其余数据如KB和OB可以依次类推解释。
S150、将每个所述候选图块集合分别输入至预设的代价函数,并选取所述代价函数的最小输出值对应的候选图块作为目标图块,并将所述目标图块作为所述数据的后续重用划分方式。
鉴于以下事实,片上存储器是有限的,并且往返于DDR,往返片上存储器的存储器带宽受到限制,因此我们将传输数据量的大小视为代价指标。如果反复读取的数据负载最小,则该解决方案被认为是更好的解决方案。换言之,最大数据复用性得以实现。在之前步骤中,计算的总的数据加载量的方法是,计算内部循环数据加载量,乘以在外循环数的存取次数。进一步说,这种分割处理方式综合考虑IB,KB,AB和OB,因此,所有四种存储的传输代价函数会被累计。因此,在步骤中,所谓的代价函数,可以衡量用DMA搬运的次数越少越好,即进出片上存储器的次数少,即搬进去的每个数据的重用性或复用率较高。对于每个候选图块集合,将其输入到代价函数中,得到一些代价值,衡量值最小的代价值即为最优解,也即该代价值对应的候选图块为目标图块。至于代价函数的具体类型,本领域技术人员可以根据实际需要进行选择。应当理解的是,此处应当将各个数据(如IB、KB、OB和AB等)对应的候选图块集合同时输入至代价函数中,这样,在代价函数取最小值时,表明该最小值所对应的数据划分方式最佳,数据重用率最高。
本实施例的数据重用方法,首先获取确定执行卷积运算时的限制条件,其次,根据该限制条件获得每个维度的划分尺寸,之后,根据划分尺寸进行划分,获得每个维度的候选子图块集合,再之后,将每个维度的候选子图块与其余维度的候选子图块进行组合获得候选图块集合,最后,将候选图块集合输入至代价函数,选取最小值对应的候选图块为目标图块,以此决定数据的后续重用划分方式。因此,本实施例的数据重用方法,在执行卷积运算过程中,可以使得数据进出片上存储器的次数最少,每个数据的重用性或复用率最高,提高卷积运算效率,节省卷积运算时间。
在一些可选地实施方式中,所述将每个所述候选图块集合分别输入至预设的代价函数,包括:
根据每个所述数据所分配的所述内存块数量,从每个所述候选图块集合中剔除无效的候选图块,获得有效候选图块集合。将每个所述有效候选图块集合分别输入至所述代价函数。
本实施例的数据重用方法,可以根据内存块数量,将所获得的候选图块集合中剔除放不下的无效候选图块,从而获得有效候选图块集合,这样,可以提高数据重用方法的效率,并且能够确保最终的最优解满足内存块数量的限制。
在一些可选地实施方式中,所述将每个所述有效候选图块集合分别输入至所述代价函数,包括:
根据卷积运算的维度的先后顺序,确定所述有效候选图块集合中每个有效候选图块的有效候选图块组合,获得每个所述数据的有效候选图块组合集合。将每个所述有效候选图块组合集合分别输入至所述代价函数。
示例性的,每个数据所获得的有效候选图块集合中,每个有效候选图块根据卷积运算的维度的先后顺序,可能有多种组合方式,如(Di,Do,H,W)、(Di,H,W,Do),或(W,H,Di,Do),但并不局限于这几种组合方式,获得每个数据的有效候选图块组合集合。计算各种具体IB/KB/AB/OB/VB的片上存储器的代价函数的代价值,找出代价值最小的并且有效的片上存储器的内存分配配置(memory configuration),此处记录最小代价值下的组合方式(loop order),以及片上存储器的内存分配配置。
在一些可选地实施方式中,所述根据所述划分尺寸,将每个所述数据对应的每个所述维度进行划分,获得每个所述数据对应的每个所述维度的候选子图块集合,包括:
根据所述划分尺寸,对输出数据对应的输出宽度、输出高度和输出通道数量三个维度进行划分、以及,对权重数据对应的输出宽度、输出高度、输入通道数量和输出通道数量四个维度进行划分,获得所述候选子图块集合。
此外,为了缩小搜索空间,我们有以下观察结果:
WH上的分区可探索权重的数据利用率,即内核将在内核内存(KB)中重用WH/wh次,为了最大程度地重用内核系数,内核内存应包含wh中使用的所有元素,即最小内存要求为di*do*F^2。
Di上的分区会探索输出数据的重复利用率,即输出内存将在输出内存(OB)中重用Di/di次,为了最大程度地重用输出存储,OB应该包含所有需要重用的输出数据,即最小内存要求是wh*do。
Do上的分区会探索输入内存的复用率,即输入数据将在输入内存(IB)中重用Do/do次,为了最大程度地重用输入内存,IB应该包含所有正在使用的输入元素,即最小内存要求是(w+F-1)*(H+F-1)*di。
本发明的另一个方面,如图3所示,提供一种用于卷积运算的数据重用装置100,该数据重用装置100可以应用于前文记载的数据重用方法,具体相关内容可以参考前文记载,在此不作赘述。数据重用装置100包括:
一个确定模块110,用于确定执行卷积运算时的限制条件。
一个计算模块120,用于根据所述限制条件,确定每个所述数据对应的每个维度上的划分尺寸。
一个划分模块130,用于根据所述划分尺寸,将每个所述数据对应的每个所述维度进行划分,获得每个所述数据对应的每个所述维度的候选子图块集合。
一个组合模块140,用于将每个所述维度的所述候选子图块集合中的每一个候选子图块,与其余所述维度的候选子图块集合中的每一个候选子图块进行组合,以获得每个所述数据的候选图块集合。
一个选取模块150,用于将每个所述候选图块集合分别输入至预设的代价函数,并选取所述代价函数的最小输出值对应的候选图块作为目标图块,并将所述目标图块作为所述数据的后续重用划分方式。
本实施例的数据重用装置,首先获取确定执行卷积运算时的限制条件,其次,根据该限制条件获得每个维度的划分尺寸,之后,根据划分尺寸进行划分,获得每个维度的候选子图块集合,再之后,将每个维度的候选子图块与其余维度的候选子图块进行组合获得候选图块集合,最后,将候选图块集合输入至代价函数,选取最小值对应的候选图块为目标图块,以此决定数据后续重用划分方式。因此,本实施例的数据重用装置,在执行卷积运算过程中,可以使得数据进出片上存储器的次数最少,每个数据的重用性或复用率最高,提高卷积运算效率,节省卷积运算时间。
在一些可选地实施方式中,所述限制条件包括并行通道数量以及每个数据在片上存储器所分配的内存块数量。
在一些可选地实施方式中,所述选取模块150包括一个剔除单元151和一个输入单元152,所述将每个所述候选图块集合分别输入至预设的代价函数,包括:
所述剔除单元151,用于根据每个所述数据所分配的所述内存块数量,从每个所述候选图块集合中剔除无效的候选图块,获得有效候选图块集合。
所述输入单元152,用于将每个所述有效候选图块集合分别输入至所述代价函数。
本实施例的数据重用装置,可以根据内存块数量,将所获得的候选图块集合中剔除放不下的无效候选图块,从而获得有效候选图块集合,这样,可以提高数据重用方法的效率,并且能够确保最终的最优解满足内存块数量的限制。
在一些可选地实施方式中,所述选取模块150还包括一个组合单元153,所述将每个所述有效候选图块集合分别输入至所述代价函数,包括:
所述组合单元153,用于根据卷积运算的维度的先后顺序,确定所述有效候选图块集合中每个有效候选图块的有效候选图块组合,获得每个所述数据的有效候选图块组合集合;
所述输入单元152,还用于将每个所述有效候选图块组合集合分别输入至所述代价函数。
在一些可选地实施方式中,所述划分模块130,具体用于根据所述划分尺寸,对输出数据对应的输出宽度、输出高度和输出通道数量三个维度进行划分、以及,对权重数据对应的输出宽度、输出高度、输入通道数量和输出通道数量四个维度进行划分,获得所述候选子图块集合。
本发明的另一个方面,提供一种卷积运算方法,采用前文记载的所述的数据重用方法。
本实施例的卷积运算方法,采用前文记载的数据重用方法,可以使得数据进出片上存储器的次数最少,每个数据的重用性或复用率最高,提高卷积运算效率,节省卷积运算时间。
本发明的另一个方面,提供一种卷积运算装置,采用前文记载的所述的数据重用装置。
本实施例的卷积运算装置,采用前文记载的数据重用装置,可以使得数据进出片上存储器的次数最少,每个数据的重用性或复用率最高,提高卷积运算效率,节省卷积运算时间。
本发明的另一个方面,提供一种运算芯片包括前文记载的所述的数据重用装置,或,包括前文记载的所述的卷积运算装置。
本发明的另一个方面,提供一种电子设备,包括:
一个或多个处理器;
一个存储单元,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,能使得所述一个或多个处理器实现根据前文记载的所述的数据重用方法或前文记载的所述的卷积运算方法。
本发明的另一个方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时能实现根据前文记载的所述的数据重用方法或前文记载的所述的卷积运算方
其中,计算机可读介质可以是本发明的装置、设备、系统中所包含的,也可以是单独存在。
其中,计算机可读存储介质可是任何包含或存储程序的有形介质,其可以是电、磁、光、电磁、红外线、半导体的系统、装置、设备,更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、光纤、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或它们任意合适的组合。
其中,计算机可读存储介质也可包括在基带中或作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码,其具体的例子包括但不限于电磁信号、光信号,或它们任意合适的组合。
可以理解的是,以上实施方式仅仅是为了说明本发明的原理而采用的示例性实施方式,然而本发明并不局限于此。对于本领域内的普通技术人员而言,在不脱离本发明的精神和实质的情况下,可以做出各种变型和改进,这些变型和改进也视为本发明的保护范围。