CN112836813B - 一种用于混合精度神经网络计算的可重构脉动阵列系统 - Google Patents
一种用于混合精度神经网络计算的可重构脉动阵列系统 Download PDFInfo
- Publication number
- CN112836813B CN112836813B CN202110173515.1A CN202110173515A CN112836813B CN 112836813 B CN112836813 B CN 112836813B CN 202110173515 A CN202110173515 A CN 202110173515A CN 112836813 B CN112836813 B CN 112836813B
- Authority
- CN
- China
- Prior art keywords
- reconfigurable
- matrix
- precision
- calculation
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Evolutionary Computation (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Artificial Intelligence (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种用于混合精度神经网络计算的可重构脉动阵列系统,可重构脉动阵列系统包括:可重构脉动阵列模块,与可重构脉动阵列模块耦合连接的多精度数据流重构模块,以及与多精度数据流重构模块耦合连接的DRAM片外存储器,多精度数据流重构模块用于对混合精度神经网络的运算进行加速;DRAM片外存储器用于存储数据;其中,可重构脉动阵列模块包括可重构PE单元,输入图像矩阵,卷积核矩阵,片上网络单元。本发明实施例可重构设计,根据卷积核复用次数和输入数据精度的不同对脉动阵列结构进行重构从而支持不同数据流下的混合精度卷积运算,根据不同神经网络的不同计算场景提升卷积计算效率,对神经网络的训练和推理有良好的加速效果。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及的是一种用于混合精度神经网络计算的可重构脉动阵列系统。
背景技术
在人工智能领域,卷积神经网络的应用十分广泛,涵盖语音识别、图像识别、图像分割、自然语言处理等。在卷积神经网络中,大部分的运算都发生在卷积层上。因此,加速卷积神经网络计算的核心在于加快卷积层的计算。而数据在做卷积运算时需要被多次调用,如果数据的读取写入主要通过存储单元和计算单元的交互,会极大增加了卷积神经网络的处理时间,降低了卷积神经网络的效率。为了加快卷积层的计算,必须进行数据复用,以实现对片上数据的有效利用,降低从片外读取数据的次数。脉动阵列能够很好的实现数据复用,从而加快卷积层的运算。
为了满足计算上对功耗、性能、精度的要求,量化精度进一步精细化到神经网络不同层选择不同精度,计算时需要满足混合精度的计算需求。常规加速器的计算位宽确定,若要进行低精度计算会将高位置零,这将造成硬件资源的浪费。为减小低精度计算时硬件资源的浪费,提高计算的效率,需要设计一款能充分提高位宽利用率的支持混合精度可重构的脉动阵列加速器。
因此,现有技术还有待改进和发展。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种用于混合精度神经网络计算的可重构脉动阵列系统,旨在解决现有技术中卷积神经网络的效率低,功耗大、性能低、精度差,造成硬件资源浪费的问题。
本发明解决问题所采用的技术方案如下:
第一方面,本发明实施例提供一种用于混合精度神经网络计算的可重构脉动阵列系统,其中,所述可重构脉动阵列系统包括:可重构脉动阵列模块,与所述可重构脉动阵列模块耦合连接的多精度数据流重构模块,以及与所述多精度数据流重构模块耦合连接的DRAM片外存储器,所述多精度数据流重构模块用于对混合精度神经网络的运算进行加速;所述DRAM片外存储器用于存储数据;其中,可重构脉动阵列模块包括可重构PE单元,输入图像矩阵,卷积核矩阵,片上网络单元。
在一种实现方式中,其中,所述可重构PE单元包括可重构乘法器,可重构加法器,选择器;所述可重构PE单元用于重构乘法器和加法器的计算逻辑。
在一种实现方式中,其中,所述可重构PE单元在预设的精度信号下,将接收的矩阵数据存储,并将脉动数据流输入到可重构乘法器;所述可重构乘法器根据精度信号进行重构,并将乘法运算结果输出给加法器;所述加法器根据控制信号来执行累加,并将累加结果输出到所述选择器。
在一种实现方式中,其中,所述可重构PE单元还包括PE缓存器,所述可重构PE单元在预设周期对输入的脉动数据进行一次乘累加操作,并得到的乘累加结果存储在PE缓存器中。
在一种实现方式中,其中,所述可重构脉动阵列系统还包括阵列适应模块,所述阵列适应模块在预设的精度信号下,将更新矩阵输入给可重构脉动阵列模块。
在一种实现方式中,其中,所述片上网络单元管理所述PE缓存器的数据输出。
在一种实现方式中,其中,所述输入图像矩阵的每一行按顺序输入到可重构脉动阵列模块对应的行中;所述卷积核矩阵的每一列按顺序输入到可重构脉动阵列模块对应的列中。
在一种实现方式中,其中,所述可重构脉动阵列模块的计算模式根据预设的计算精度进行重构。
在一种实现方式中,其中,所述可重构脉动阵列模块的计算模式支持可重构浮点运算。
第二方面,本发明实施例还提供一种处理设备。该设备至少包括如上第一方面所描述的脉动阵列系统。
本发明的有益效果:本发明实施例可重构脉动阵列系统包括:可重构脉动阵列模块,与可重构脉动阵列模块耦合连接的多精度数据流重构模块,以及与多精度数据流重构模块耦合连接的DRAM片外存储器,多精度数据流重构模块用于对混合精度神经网络的运算进行加速;DRAM片外存储器用于存储数据;其中,可重构脉动阵列模块包括可重构PE单元,输入图像矩阵,卷积核矩阵,片上网络单元。本发明实施例可重构设计,根据卷积核复用次数和输入数据精度的不同对脉动阵列结构进行重构从而支持不同数据流下的混合精度卷积运算,根据不同神经网络的不同计算场景提升卷积计算效率,对神经网络的训练和推理有良好的加速效果。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种用于混合精度神经网络计算的可重构脉动阵列系统的结构示意图。
图2为本发明实施例提供的可重构PE单元的内部结构图。
图3为本发明实施例提供的脉动数据流的示意图。
图4为本发明实施例提供的片上网络单元管理数据输出示意图。
图5为本发明实施例提供的可重构脉动阵列中对角线的平行线上的可重构PE单元的计算结果输出示意图。
图6为本发明实施例提供的多精度数据流重构模块示意图。
图7为本发明实施例提供两组8bit*4bit矩阵的拼接示意图。
图8为本发明实施例提供的一种矩阵乘加处理设备的结构示意图。
具体实施方式
本发明公开了一种用于混合精度神经网络计算的可重构脉动阵列系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样被特定定义,否则不会用理想化或过于正式的含义来解释。
由于现有技术中,当前神经网络多精度计算中硬件加速主要面临以下几个问题:第一,低精度计算时输入输出数据的带宽低;第二,低精度计算时硬件资源的浪费;第三,多精度的重构设计困难。
为了解决现有技术的问题,本实施例提供了一种用于混合精度神经网络计算的可重构脉动阵列系统,通过可重构脉动阵列系统可以实现可重构设计,根据卷积核复用次数和输入数据精度的不同对脉动阵列结构进行重构从而支持不同数据流下的混合精度卷积运算,根据不同神经网络的不同计算场景提升卷积计算效率,对神经网络的训练和推理有良好的加速效果。所述可重构脉动阵列系统包括:可重构脉动阵列模块,与可重构脉动阵列模块耦合连接的多精度数据流重构模块,以及与多精度数据流重构模块耦合连接的DRAM片外存储器,多精度数据流重构模块用于对混合精度神经网络的运算进行加速;DRAM片外存储器用于存储数据;其中,可重构脉动阵列模块包括可重构PE单元,输入图像矩阵,卷积核矩阵,片上网络单元。
在实际应用中,由于不同神经网络的不同层的参数不同,输入数据和卷积核重用的次数也不一样,故我们设计一种可重构的脉动阵列:脉动阵列采用特定脉动流形式(以下简称DF),输入图像在进入脉动阵列之前需要经过原始图像到计算矩阵的转换,卷积运算是将卷积核以滑动窗口的方式在输入图像上滑动,当前窗口内对应元素相乘然后求和得到结果,一个窗口一个结果。本发明实施例设计的所述可重构脉动阵列系统包括可重构脉动阵列模块,如图1所示,所述可重构脉动阵列模块包括可重构PE单元,输入图像矩阵,卷积核矩阵,片上网络单元。在本实施例中,所述可重构脉动阵列模块由16*16=256个可重构PE单元组成,如图2所示,每个可重构PE单元中的运算单元包括一个可重构的乘法器和一个可重构的加法器以及对应的控制单元,根据计算数据流信号flow和精度信号sel,可重构PE单元可进行对应的重构操作;所述片上网络单元用于管理所述PE缓存器的数据输出。所述可重构脉动阵列系统还包括与所述可重构脉动阵列模块耦合连接的多精度数据流重构模块,所述多精度数据流重构模块用于对混合精度神经网络的运算进行加速;所述可重构脉动阵列系统还包括与所述多精度数据流重构模块耦合连接的DRAM片外存储器。
为了提高运算效率,所述可重构PE单元包括可重构乘法器,可重构加法器,选择器;所述可重构PE单元用于重构乘法器和加法器的计算逻辑。
实际中,所述可重构PE单元包括可重构乘法器,可重构加法器,选择器;所述可重构乘法器用于将乘数和被乘数分别输出至部分积产生单元;部分积产生单元,用于对接收自输入单元的乘数和被乘数的每一位进行操作产生一个部分积,并输出给部分积压缩单元。所述可重构加法器可以采用可重构定浮点通用加法器。所述选择器可以根据顶层配置信息选择相应的定点或浮点加法运算通路,并进行输出控制;也可以根据控制信号判断是否开始新一轮的累加。所述可重构PE单元用于重构乘法器和加法器的计算逻辑,也即用于重构乘法运算和重构加法运算,使得能提高神经网络多精度计算的效率,例如,每个可重构PE单元中的运算单元包括一个可重构的乘法器和一个可重构的加法器以及对应的控制单元,根据计算数据流信号flow和精度信号sel,可重构PE可进行对应的重构操作,也即重构乘法器和加法器的计算逻辑。
在一种实现方式中,所述可重构PE单元在预设的精度信号下,将接收的矩阵数据存储,并将脉动数据流输入到可重构乘法器;所述可重构乘法器根据精度信号进行重构,并将乘法运算结果输出给加法器;所述加法器根据控制信号来执行累加,并将累加结果输出到所述选择器。
具体地,所述可重构PE单元在预设的精度信号下,将接收的矩阵数据存储,并将脉动数据流输入到可重构乘法器;例如:当精度信号给定后,可重构PE单元接收已处理好的矩阵数据并存入对应的input RF和weight RF中,根据数据流的特性,将脉动数据流输入给乘法器。所述可重构乘法器根据精度信号进行重构,并将乘法运算结果输出给加法器;所述加法器根据控制信号来执行累加,并将累加结果输出到所述选择器。例如:乘法器根据精度信号进行重构,具体步骤为:1.根据输入精度信号判断计算并行度;2.将输入的两个有符号数取绝对值,并存储符号位;3.将两个数的绝对值相乘得到绝对值乘积,符号位做异或操作得到乘积的符号位;4.根据乘积的符号位对绝对值乘积进行取补码操作。完成当前精度下的乘法运算并输出乘积给加法器。加法器前的选择器根据控制信号cycle_num判断是否开始新一轮的累加,其中,所述cycle_num判断条件是可重构PE单元在阵列中横纵坐标相加和等于(cycle_num-(compute_num+1))%32,其中,compute_num是计算矩阵长度;最后,将可重构加法器输出的结果给到选择器,根据脉动数据流信号进行输出操作。
在另一种实现方式中,所述可重构PE单元还包括PE缓存器,所述可重构PE单元在预设周期对输入的脉动数据进行一次乘累加操作,并得到的乘累加结果存储在PE缓存器中。
具体地,所述可重构PE单元还包括PE缓存器,在本实施例中,可重构PE单元在每个周期(如:一个时钟周期)会对输入的数据进行一次乘累加操作,并将得到的数据存储在PE缓存器中。缓冲器相当于一个寄存器,暂时保存数据.缓冲是用来在两种不同速度的器件之间传输信息时平滑传输过程的常用手段。除了在关键的地方采用少量硬件缓冲器之外,大都采用软件缓冲。
为了实现对脉动数据流的处理,所述可重构脉动阵列系统还包括阵列适应模块,所述阵列适应模块在预设的精度信号下,将更新矩阵输入给可重构脉动阵列模块。
实际中,阵列适应模块也设置在所述可重构脉动阵列系统中,以实现将实时更新的矩阵输入到可重构脉动阵列模块。例如,如图3所示,当精度信号给定后,阵列适应模块将处理后的新矩阵输入给阵列,我们把输入图像矩阵记作矩阵I,位宽是Wi,卷积核矩阵记作矩阵J,位宽是Wj,输出矩阵记作O,位宽是W0。其中,矩阵I和矩阵J是用来做矩阵乘法和卷积运算,而卷积运算在矩阵乘法基础上多了求和;可以用一个PE硬件分周期的方式完成,也可以设置一串PE采用流水线的方式完成。
为了更加高效的输出数据结果,所述片上网络单元管理所述PE缓存器的数据输出。
实际中,过一定的周期后阵列中对角线的平行线上的可重构PE单元会在同一个周期输出计算结果,输出结果的平行线会按顺序平移,如图4所示,根据输出规律我们设计了如图5所示的片上网络单元(NoC)来管理数据的输出。
为了实现神经网络的卷积,所述输入图像矩阵的每一行按顺序输入到可重构脉动阵列模块对应的行中;所述卷积核矩阵的每一列按顺序输入到可重构脉动阵列模块对应的列中。
具体地,I矩阵的每一行按顺序输入到阵列对应的行中,同时J矩阵的每一列按顺序输入到阵列对应的列中。其中,矩阵I和矩阵J是用来做矩阵乘法和卷积运算,而卷积运算在矩阵乘法基础上多了求和。实际计算时,矩阵都足够大,所以I矩阵和J矩阵需要根据阵列的大小进行裁剪,每次最多只能输入16行或16列。每行或者每列的数据都可以多次复用,矩阵计算完毕需要三层循环,如图6所示。数据流重构模块中的第一层循环计算当前行和列的所有数,第二层循环遍历J矩阵的所有列,第三层循环遍历I矩阵的所有行。在第二层循环中将I矩阵的输入数在最右端(DF)输出后再写回到当前行对应的发射FIFO中,以便下次可以再次输入复用。
为了提高神经网络的计算精度,所述可重构脉动阵列模块的计算模式根据预设的计算精度进行重构。
具体地,当输入图像矩阵和卷积核矩阵的数据精度都是nbit时,一组nbit*nbit的计算会利用到可重构PE单元中乘法器所有的计算单元,所以乘法器和加法器一个周期只进行一组乘累加计算。此时,每个可重构PE单元每个计算周期对I矩阵中的一个nbit数和J矩阵的一个nbit数的进行乘累加操作。当输入图像和卷积核的数据精度分别是nbit和n/2bit时,乘法器和加法器一个周期内并行进行2组乘累加计算,此时,脉动阵列并行进行I1*J1、I2*J2的矩阵乘法计算。如图7所示,以8bit*4bit为例,根据精度信号,矩阵适应模块将I1矩阵和I2矩阵进行拼接,得到一个新矩阵I;将J1矩阵和J2矩阵进行拼接,得到一个新矩阵J。此时每个可重构PE单元的每个周期对I矩阵中的一个16bit数和J矩阵中的一个8bit数进行乘累加操作。第一组nbit*nbit的乘累加计算中输入的乘数和被乘数位宽分别是n和n,第二组nbit和n/2bit乘累加计算中输入的乘数和被乘数的位宽分别是n和n/2。两组是并行计算。
此外,本申请中所述可重构脉动阵列模块的计算模式支持可重构浮点运算。当高精度拆分成m个低精度运算时,数据流的运算方式如下:当输入图像矩阵和卷积核矩阵的数据精度都是nbit时,一组nbit*nbit的计算会利用到可重构PE单元中乘法器所有的计算单元,所以乘法器和加法器一个周期只进行一组乘累加计算。此时,每个可重构PE单元每个计算周期对I矩阵中的一个nbit数和J矩阵的一个nbit数的进行乘累加操作。当输入图像矩阵和卷积核矩阵的数据精度分别是nbit和n/2bit时,乘法器和加法器一个周期内并行进行2组乘累加计算,此时,脉动阵列并行进行I1*J1、I2*J2的矩阵乘法计算。
图请参见图8,是本发明实施例提供的一种矩阵乘加处理设备的结构示意图。如图8所示的处理设备1300包括一个或多个处理器1301、通信接口1302和存储器1303,处理器1301、通信接口1302和存储器1303可通过总线方式连接,也可通过无线传输等其他手段实现通信。本发明实施例以通过总线1304连接为例其中,该存储器1303用于存储指令,该处理器1301具有前述图1-图7实施例中揭示的脉动阵列结构,用于执行该存储器1303存储的指令。该存储器1303存储程序代码,且处理器1301可以调用存储器1303中存储的程序代码实现如图中矩阵乘加处理设备1300的相关功能,具体可参见前述图1-图7实施例中的相关阐述,这里不再赘述。
应当理解,在本发明实施例中,所称处理器1301可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
通信接口1302可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他模块或装置设备进行通信。例如,本申请实施例中通信接口1302具体可用于接收用户输入的输入数据;或者接收外部设备的数据等。
存储器1303可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器还可以包括上述种类的存储器的组合。存储器可用于存储一组程序代码,以便于处理器调用存储器中存储的程序代码以实现如上乘加器10的相关功能。
需要说明的,图8仅仅是本发明实施例的一种可能的实现方式,实际应用中,处理设备还可以包括更多或更少的部件,这里不作限制。关于本发明实施例中未示出或未描述的内容,可参见前述方法实施例中的相关阐述,这里不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及实施步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的终端设备和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理设备中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (3)
1.一种用于混合精度神经网络计算的可重构脉动阵列系统,其特征在于,所述可重构脉动阵列系统包括:
可重构脉动阵列模块,与所述可重构脉动阵列模块耦合连接的多精度数据流重构模块,以及与所述多精度数据流重构模块耦合连接的DRAM片外存储器,所述多精度数据流重构模块用于对混合精度神经网络的运算进行加速;所述DRAM片外存储器用于存储数据;其中,所述可重构脉动阵列模块采用特定脉动流形式,包括可重构PE单元,输入图像矩阵,卷积核矩阵,片上网络单元;
所述可重构PE单元包括可重构乘法器,可重构加法器,选择器;所述可重构PE单元用于重构乘法器和加法器的计算逻辑;
所述可重构PE单元在预设的精度信号下,将接收的矩阵数据存储,并将脉动数据流输入到可重构乘法器;所述可重构乘法器根据精度信号进行重构,并将乘法运算结果输出给加法器;所述加法器根据控制信号来执行累加,并将累加结果输出到所述选择器;
所述输入图像矩阵的每一行按顺序输入到可重构脉动阵列模块对应的行中;所述卷积核矩阵的每一列按顺序输入到可重构脉动阵列模块对应的列中;
所述可重构乘法器根据精度信号进行重构,并将乘法运算结果输出给加法器;所述加法器根据控制信号来执行累加,并将累加结果输出到所述选择器,包括:
根据所述精度信号判断计算并行度;
将输入的两个有符号数取绝对值,并存储符号位;
将所述两个有符号数的绝对值相乘得到绝对值乘积,符号位做异或操作得到乘积的符号位;
根据所述乘积的符号位对所述绝对值乘积进行取补码操作;
完成当前精度下的乘法运算并输出乘积给所述加法器;
所述加法器前的选择器根据控制信号cycle_num判断是否开始新一轮的累加,其中,所述cycle_num判断条件是可重构PE单元在阵列中横纵坐标相加和等于(cycle_num-(compute_num+1))%32,其中,compute_num是计算矩阵长度;
将所述可重构加法器输出的结果给到所述选择器,根据脉动数据流信号进行输出操作;
所述输入图像矩阵的每一行按顺序输入到可重构脉动阵列模块对应的行中;所述卷积核矩阵的每一列按顺序输入到可重构脉动阵列模块对应的列中,包括:
所述输入图像矩阵和卷积核矩阵需要根据阵列的大小进行裁剪,每次最多只能输入16行或16列,每行或者每列的数据多次复用,矩阵计算完毕需要三层循环,数据流重构模块中的第一层循环计算当前行和列的所有数,第二层循环遍历卷积核矩阵的所有列,第三层循环遍历所述输入图像矩阵的所有行,在第二层循环中将所述输入图像矩阵的输入数在最右端DF输出后再写回到当前行对应的发射FIFO中;
所述可重构脉动阵列模块的计算模式根据预设的计算精度进行重构,包括:
当所述输入图像矩阵和卷积核矩阵的数据精度都是nbit时,一组nbit*nbit的计算会利用到可重构PE单元中乘法器所有的计算单元,所述乘法器和加法器一个周期只进行一组乘累加计算,每个可重构PE单元每个计算周期对I矩阵中的一个nbit数和J矩阵的一个nbit数的进行乘累加操作;其中,I为所述输入图像矩阵,位宽是Wi,J为所述卷积核矩阵,位宽是Wj,nbit*nbit的乘累加计算中输入的乘数和被乘数位宽分别是n和n;
当所述输入图像和卷积核的数据精度分别是nbit和n/2bit时,乘法器和加法器一个周期内并行进行2组乘累加计算, 脉动阵列并行进行I1*J1、I2*J2的矩阵乘法计算,其中,I1为数据精度是nbit的输入图像矩阵,I2为数据精度是n/2bit的输入图像矩阵,J1为数据精度是nbit的卷积核矩阵、J2为数据精度是n/2bit的卷积核矩阵;根据精度信号,矩阵适应模块将I1矩阵和I2矩阵进行拼接,得到一个新矩阵I,将J1矩阵和J2矩阵进行拼接,得到一个新矩阵J,每个可重构PE单元的每个周期对I矩阵中的一个nbit数和J矩阵中的一个n/2bit数进行乘累加操作,nbit和n/2bit乘累加计算中输入的乘数和被乘数的位宽分别是n和n/2;
nbit*nbit和nbit*n/2bit两组并行计算;
所述可重构PE单元还包括PE缓存器,所述可重构PE单元在预设周期对输入的脉动数据进行一次乘累加操作,并得到的乘累加结果存储在PE缓存器中;
所述可重构脉动阵列系统还包括阵列适应模块,所述阵列适应模块在预设的精度信号下,将更新矩阵输入给可重构脉动阵列模块;其中,所述将更新矩阵输入给可重构脉动阵列模块,采用一个PE单元分周期的方式完成,或采用设置一串PE单元采用流水线的方式完成;
所述片上网络单元管理所述PE缓存器的数据输出。
2.根据权利要求1所述的用于混合精度神经网络计算的可重构脉动阵列系统,其特征在于,所述可重构脉动阵列模块的计算模式支持可重构浮点运算。
3.一种处理设备,其特征在于,包括如权利要求1-2任一项所述的可重构脉动阵列系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110173515.1A CN112836813B (zh) | 2021-02-09 | 2021-02-09 | 一种用于混合精度神经网络计算的可重构脉动阵列系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110173515.1A CN112836813B (zh) | 2021-02-09 | 2021-02-09 | 一种用于混合精度神经网络计算的可重构脉动阵列系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112836813A CN112836813A (zh) | 2021-05-25 |
CN112836813B true CN112836813B (zh) | 2023-06-16 |
Family
ID=75932858
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110173515.1A Active CN112836813B (zh) | 2021-02-09 | 2021-02-09 | 一种用于混合精度神经网络计算的可重构脉动阵列系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112836813B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113743600B (zh) * | 2021-08-26 | 2022-11-11 | 南方科技大学 | 适用于多精度神经网络的存算一体架构脉动阵列设计方法 |
CN114237551B (zh) * | 2021-11-26 | 2022-11-11 | 南方科技大学 | 一种基于脉动阵列的多精度加速器及其数据处理方法 |
CN114707647B (zh) * | 2022-03-08 | 2023-10-24 | 南方科技大学 | 适用于多精度神经网络的精度无损存算一体装置及方法 |
US20240004952A1 (en) * | 2022-06-29 | 2024-01-04 | Mediatek Singapore Pte. Ltd. | Hardware-Aware Mixed-Precision Quantization |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
US20200311021A1 (en) * | 2019-03-31 | 2020-10-01 | Intel Corporation | Systems and methods for reconfigurable systolic arrays |
-
2021
- 2021-02-09 CN CN202110173515.1A patent/CN112836813B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107578098A (zh) * | 2017-09-01 | 2018-01-12 | 中国科学院计算技术研究所 | 基于脉动阵列的神经网络处理器 |
US20200311021A1 (en) * | 2019-03-31 | 2020-10-01 | Intel Corporation | Systems and methods for reconfigurable systolic arrays |
Non-Patent Citations (1)
Title |
---|
A Reconfigurable Multiple-Precision Floating-Point Dot Product Unit for High-Performance Computing;Wei Mao, et al.;《2021 Design, Automation & Test in Europe Conference & Exhibition (DATE)》;20210205;第1793-1798页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112836813A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112836813B (zh) | 一种用于混合精度神经网络计算的可重构脉动阵列系统 | |
US10810484B2 (en) | Hardware accelerator for compressed GRU on FPGA | |
CN107832082B (zh) | 一种用于执行人工神经网络正向运算的装置和方法 | |
CN108805266B (zh) | 一种可重构cnn高并发卷积加速器 | |
CN109409511B (zh) | 一种用于动态可重构阵列的卷积运算数据流调度方法 | |
US20180046897A1 (en) | Hardware accelerator for compressed rnn on fpga | |
CN107797962B (zh) | 基于神经网络的计算阵列 | |
CN109146067B (zh) | 一种基于FPGA的Policy卷积神经网络加速器 | |
CN107766935B (zh) | 多层人造神经网络 | |
WO2020176250A1 (en) | Neural network layer processing with normalization and transformation of data | |
KR102472282B1 (ko) | 고급 상호 연결 통신기술을 이용한 ai 훈련 가속화 방법 및 시스템 | |
CN112950656A (zh) | 一种基于fpga平台的按通道进行预读取数据的分块卷积方法 | |
EP4318275A1 (en) | Matrix multiplier and method for controlling matrix multiplier | |
CN110543936A (zh) | 一种cnn全连接层运算的多并行加速方法 | |
US11568227B1 (en) | Neural network inference circuit read controller with multiple operational modes | |
CN111210004B (zh) | 卷积计算方法、卷积计算装置及终端设备 | |
CN115238863A (zh) | 一种卷积神经网络卷积层的硬件加速方法、系统及应用 | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
CN114003201A (zh) | 矩阵变换方法、装置及卷积神经网络加速器 | |
US20240046081A1 (en) | Data transfer for non-dot product computations on neural network inference circuit | |
WO2021179289A1 (zh) | 卷积神经网络的运算方法、装置、设备和存储介质 | |
CN111047037B (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116090530A (zh) | 可配置卷积核大小和并行计算数目的脉动阵列结构及方法 | |
CN113283591B (zh) | 基于Winograd算法和近似乘法器的高效卷积实现方法及装置 | |
CN115688905A (zh) | 对深度学习模型进行加速处理的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |