本发明专利技术提供了一种资源分配方法以及加速器,该加速器含有多个忆阻器阵列,该方法包括:获取待加速的卷积神经网络的结构参数以及加速器的架构参数;基于所述结构参数和架构参数确定所述卷积神经网络模型的每个卷积层的最小需求量,所述最小需求量为在该加速器上存储对应卷积层中所有权重参数所需的最小忆阻器阵列数;根据预定的约束条件,以每个卷积层在其最小需求量的基础上的分配倍数为调整对象,确定所述卷积神经网络在该加速器上运行的总处理时延最优的资源分配策略,其中,所述最优的资源分配策略指示每个卷积层最终的分配倍数;根据每个卷积层最终的分配倍数和最小需求量,确定该卷积层分配的忆阻器阵列数量。确定该卷积层分配的忆阻器阵列数量。确定该卷积层分配的忆阻器阵列数量。
【技术实现步骤摘要】
一种资源分配方法以及加速器
[0001]本专利技术涉及存内计算领域,具体来说,涉及基于存内计算的硬件资源分配
,更具体地说,涉及一种资源分配方法以及加速器。
技术介绍
[0002]随着人工智能技术的发展,卷积神经网络已经被广泛地应用到了很多领域中,例如:图像识别、对象检测、人脸检测等。与此同时,由于卷积神经网络包含了大量的数据与计算,且多是乘法和求和运算的重复组合,现有的处理器虽然计算能力相比以前而言有很大提升,但在神经网络模型的计算过程中的并行计算效率仍稍显不足。因此,一些研究者着手研究对神经网络模型计算的硬件加速器,使得神经网络加速成为了现如今技术的热点。
[0003]其中,基于存内计算(或者称忆阻器)的卷积神经网络加速器便是当前的一种热门技术。存内计算作为一种新型的计算技术,其本身的结构有利于支持对卷积神经网络的加速需求。顾名思义,存内计算指的是存储计算一体化,它可以消除计算部件与存储器之间不必要的数据访存,从而大大减少访存带来的能量与性能损失。在存内计算领域,忆阻器是常见的存内计算器件之一,可以将数据以电阻形式进行存储。为便于理解,图1展示了常见的基于忆阻器的交叉阵列图。其中,交叉阵列的每条位线通过忆阻器单元与字线相连。假设第一列中各忆阻器的电导值为G
1,1
、G
2,1
和G
3,1
,将电压V1、V2和V3分别施加在三条字线上,每个单元将V
i
×
G
i,1
传递至第一列的位线;根据基尔霍夫定律,第一列的位线上的电流累加之后,该交叉阵列的第一列忆阻器单元即完成了一组点积运算,得到同时,交叉阵列各列之间并行计算,得到第二列对应的I2,第三列对应的I3。因此忆阻器单元构成的交叉阵列可以在O(1)的时间内完成一组矩阵向量乘,这也为加速卷积神经网络运算提供了良好的支持。
[0004]在基于忆阻器的卷积神经网络加速器中,权重以阻值的形式存储在忆阻器中,通过交叉阵列的结构,与输入完成高并行的矩阵向量乘操作。忆阻器同时充当了计算资源以及存储资源。这不仅减少了权重的数据访存,同时也显著提高了计算密度。这样的特点为卷积神经网络多层并行计算提供了支持。不同于传统加速器中,卷积层被顺序计算的过程,忆阻器加速器的计算资源可以支持不同卷积层在满足计算条件之时同时进行计算。因此,不同卷积层之间计算资源的分配成为限制加速器性能的关键因素。在目前的忆阻器构成的卷积神经网络加速器中,忆阻器作为待分配的计算资源,在各卷积层以启发式的分配方式进行分配,得到可行但可能非最优的解,对加速器性能的提升无法完全保证。而且,针对不同卷积神经网络,提取的用于分配资源所需的参数形式不统一,没有通用的准则,导致每种卷积神经网络都需要单独设计资源分配策略,通用性不强。因此,有必要对现有技术进行改进。
技术实现思路
[0005]因此,本专利技术的目的在于克服上述现有技术的缺陷,提供一种资源分配方法以及
加速器。
[0006]本专利技术的目的是通过以下技术方案实现的:
[0007]根据本专利技术的第一方面,提供一种用于对基于忆阻器的卷积神经网络的加速器中的资源进行分配的方法,该加速器含有多个忆阻器阵列,该方法包括:获取待加速的卷积神经网络的结构参数以及加速器的架构参数;基于所述结构参数和架构参数确定所述卷积神经网络模型的每个卷积层的最小需求量,所述最小需求量为在该加速器上存储对应卷积层中所有权重参数所需的最小忆阻器阵列数;根据预定的约束条件,以每个卷积层在其最小需求量的基础上的分配倍数为调整对象,确定所述卷积神经网络在该加速器上运行的总处理时延最优的资源分配策略,其中,所述最优的资源分配策略指示每个卷积层最终的分配倍数;根据每个卷积层最终的分配倍数和最小需求量,确定该卷积层分配的忆阻器阵列数量。
[0008]在本专利技术的一些实施例中,结构参数包括每个卷积层相关的以下结构信息:卷积层的输入通道数、输出通道数、输出特征图的宽和高、卷积层的核尺寸、池化层的核尺寸、卷积层的步长、池化层的步长、卷积层的填充的尺寸、池化层的填充的尺寸,其中,每个卷积层的结构信息中记录该卷积层的后一个池化层的核尺寸、池化层的步长。
[0009]在本专利技术的一些实施例中,所述架构参数包括忆阻器阵列的总数和每个忆阻器阵列的尺寸,该尺寸指示对应忆阻器阵列的位线数量和字线数量。
[0010]在本专利技术的一些实施例中,按照以下方式确定每一个卷积层的最小需求量:
[0011][0012]其中,K
c
×
K
c
表示卷积层的核尺寸,C
i
表示卷积层的输入通道数,C
o
表示卷积层的输出通道数,M表示忆阻器阵列的字线数量,N表示忆阻器阵列的位线数量。
[0013]在本专利技术的一些实施例中,所述方法包括:根据卷积层有没有后一个池化层以及所述池化层的核尺寸和/或池化层的步长分别计算相应的计算总处理时延。
[0014]在本专利技术的一些实施例中,按照以下方式确定所述卷积神经网络在该加速器上运行的总处理时延:基于忆阻器阵列的总个数和尺寸确定相应的资源分配策略;获取各卷积层在对应的资源分配策略下计算一次的周期大小和访存周期大小中最大的周期大小,并根据最大的周期大小和最后一个卷积层运行的周期数确定该资源分配策略的总处理时延。
[0015]在本专利技术的一些实施例中,按照以下方式确定每一个卷积层运行的周期数:
[0016]Op
i
=max{NormalOp
i
+PreOp
i
,Op
i
‑1+Tail
i
}
[0017]其中,Op
i
表示卷积层i运行的周期数,max{
·
}表示取最大值,NormalOp
i
表示卷积层i计算的周期数,PreOp
i
表示卷积层i等待被激活所经过的周期数,Op
i
‑1表示卷积层i的上一个卷积层运行的周期数,Tail
i
表示卷积层i在其上一个卷积层停止计算后仍需运行的周期数。
[0018]在本专利技术的一些实施例中,所述预定的约束条件包括:所有卷积层分配的忆阻器阵列数小于等于加速器所含的忆阻器阵列总数。
[0019]在本专利技术的一些实施例中,所述预定的约束条件包括:所有卷积层分配的忆阻器阵列数量之和小于等于加速器所含的忆阻器阵列总数,以及任意一个卷积层的分配倍数小于等于该卷积层输出特征图的宽乘以高。
[0020]根据本专利技术的第二方面,提供一种加速器,该加速器包括多个芯片,每个芯片包括一个或者多个忆阻器阵列,该加速器被配置为:获取按照第一方面的方法为待加速的卷积神经网络的每个卷积层分配的忆阻器阵列数量;在所述多个芯片中根据每个卷积层分配的忆阻器阵列数量为所述卷积神经网络分配所需的忆阻器阵列数量以执行对应的卷积运算。
[0021]根据本专利技术的第三方面本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种用于对基于忆阻器的卷积神经网络的加速器中的资源进行分配的方法,该加速器含有多个忆阻器阵列,其特征在于,包括:获取待加速的卷积神经网络的结构参数以及加速器的架构参数;基于所述结构参数和架构参数确定所述卷积神经网络模型的每个卷积层的最小需求量,所述最小需求量为在该加速器上存储对应卷积层中所有权重参数所需的最小忆阻器阵列数;根据预定的约束条件,以每个卷积层在其最小需求量的基础上的分配倍数为调整对象,确定所述卷积神经网络在该加速器上运行的总处理时延最优的资源分配策略,其中,所述最优的资源分配策略指示每个卷积层最终的分配倍数;根据每个卷积层最终的分配倍数和最小需求量,确定该卷积层分配的忆阻器阵列数量。2.根据权利要求1所述的方法,其特征在于,所述结构参数包括每个卷积层相关的以下结构信息:卷积层的输入通道数、输出通道数、输出特征图的宽和高、卷积层的核尺寸、池化层的核尺寸、卷积层的步长、池化层的步长、卷积层的填充的尺寸、池化层的填充的尺寸,其中,每个卷积层的结构信息中记录该卷积层的后一个池化层的核尺寸、池化层的步长。3.根据权利要求2所述的方法,其特征在于,所述架构参数包括忆阻器阵列的总数和每个忆阻器阵列的尺寸,该尺寸指示对应忆阻器阵列的位线数量和字线数量。4.根据权利要求3所述的方法,其特征在于,按照以下方式确定每一个卷积层的最小需求量:其中,K
c
×
K
c
表示卷积层的核尺寸,C
i
表示卷积层的输入通道数,C
o
表示卷积层的输出通道数,M表示忆阻器阵列的字线数量,N表示忆阻器阵列的位线数量。5.根据权利要求1所述的方法,其特征在于,所述方法包括:根据卷积层有没有后一个池化层以及所述池化层的核尺寸和/或池化层的步长分别计算相应的计算总处理时延。6.根据权利要求1所述的方法,其特征在于,按照以下方式确定所述卷积神经网络在该加速器上运行的总处理时延:基于忆阻器阵列的总个数和尺寸确定相应的资源分配策略;获取各卷积层在对应的资源分配策略下计算一次的周期大小和访存周期大小中最大的周期大小,并根据最大的...
【专利技术属性】
技术研发人员:李宛茜,陈晓明,韩银和,
申请(专利权)人:中国科学院计算技术研究所,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。