CN113610222A - 计算神经网络卷积运算的方法及系统、硬件装置 - Google Patents
计算神经网络卷积运算的方法及系统、硬件装置 Download PDFInfo
- Publication number
- CN113610222A CN113610222A CN202110766472.8A CN202110766472A CN113610222A CN 113610222 A CN113610222 A CN 113610222A CN 202110766472 A CN202110766472 A CN 202110766472A CN 113610222 A CN113610222 A CN 113610222A
- Authority
- CN
- China
- Prior art keywords
- precision
- data
- multiplication
- multiplier
- bit
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 17
- 238000004364 calculation method Methods 0.000 claims abstract description 105
- 238000012545 processing Methods 0.000 claims abstract description 31
- 238000003491 array Methods 0.000 claims description 8
- 238000010606 normalization Methods 0.000 claims description 8
- 230000003139 buffering effect Effects 0.000 claims description 4
- 238000000354 decomposition reaction Methods 0.000 claims description 4
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 210000002569 neuron Anatomy 0.000 description 2
- 210000000225 synapse Anatomy 0.000 description 2
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 1
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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
- G06N3/045—Combinations of networks
-
- 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/08—Learning methods
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Theoretical Computer Science (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
本发明的计算神经网络卷积运算的方法及系统、硬件装置,属于卷积运算方法的技术领域,解决现有技术的方法处理数据读写带宽的资源占用较大,未能实现可变精度乘法运算,硬件利用率低,致使运算效率较低的技术问题。该方法包括,处理器被配置为执行预设计算精度;获取至少一对乘数和被乘数,数位分别被编码为多个定点基本精度数据,并根据程序指令执行定点乘法运算;处理器被配置为第一计算精度乘法时,乘数和被乘数被分割为低精度位数表示的高位和低位数据,并按预设可变精度乘法指令进行计算。本发明用以完善多精度卷积运算的功能,提高处理器运算速率。
Description
技术领域
本发明属于卷积运算方法的技术领域,尤其涉及一种计算神经网络卷积运算的方法及系统、硬件装置。
背景技术
移动网或物联网的设备端由于存储资源、算力资源、实时性、功耗等因素限制,需要动态的根据任务实现资源和算力分配,实现性能与功耗资源之间的平衡。使用低精度卷积神经网络以牺牲少量识别准确度的方式获取更高的性能,其所采用的数据位宽相对较低,可通过简单的逻辑进行实现,节省计算及存储资源。在满足一定输出结果精度的条件下可以通过改变卷积神经网络计算中所使用的数据的精度,如,双精度数转为单精度或转为半精度或压缩到INT8以适当地减少计算量。
全精度及低精度的卷积神经网络在性能、功耗、准确度上各具优劣,实际应用场景中需要根据相应的需求进行选择,需要一种能够兼容全精度与低精度的卷积神经网络计算的处理器,例如,在针对一个视频文件逐帧地进行识别时,存在针对其中的某些帧图像需要快速地进行识别,而针对其他某些帧图像需要进行精准地识别,若是卷积神经网络处理器能够兼具对全精度、以及低精度的处理能力,则可以满足当前的需求。
现有技术中的方法是处理器用于处理全精度数据的硬件与用于处理低精度数据的硬件简单地组合在一起,如,单一化处理,无法实现可变精度卷积乘法运算,致使待处理数据中的特征数据和卷积运算中权重数据复用效率低,提高处理器读写带宽的资源占用,运算速度低,同时,硬件资源利用率低。
有鉴于此,特提出本发明。
发明内容
本发明的目的在于提供一种计算神经网络卷积运算的方法,解决现有技术的方法处理数据读写带宽的资源占用较大,未能实现可变精度乘法运算,浪费硬件资源的技术问题。本案的技术方案有诸多技术有益效果,见下文介绍:
一方面提供一种计算神经网络卷积运算的方法,所述方法包括:
处理器被配置为执行预设计算精度;
获取至少一对乘数和被乘数,且所述乘数和被乘数尾数位分别被编码为多个定点基本精度数据,并根据程序指令执行定点乘法运算,所述乘数为卷积核权重数据,所述被乘数为输入数据;
所述处理器被配置为基本计算精度乘法时,所述乘数和被乘数以基本精度数据为单元对应相乘,计算当前精度乘法结果,和/或,所述处理器被配置为第一计算精度乘法时,所述乘数和被乘数被分割为低精度位数表示的高位和低位数据,并按预设可变精度乘法指令进行计算,且所述乘数和被乘数高位、低位分别至少可被分割为一个基本精度数据。
另一方面提供一种计算神经网络卷积运算的方法,使用以上部分或全部所述的方法进行计算。
如,包括使用卷积核进行卷积计算,所述方法包括:
所述卷积核的权重数据和对应的特征数据,根据程序指令分别加载至权重和特征数据装载器,其中:所述数据装载器由多个缓存块构成,每个所述缓存块能够存储一个基本精度位的数据,多个连续的所述缓存块能够存储位数超过所述基本精度位数的高精度数据;
根据处理器预设计算精度配置指令进行计算。
其次提供一种计算神经网络卷积运算的系统,所述系统包括:
配置模块,用于将处理器配置为执行预设精度计算;
获取模块,获取至少一对乘数和被乘数,且所述乘数和被乘数尾数位分别被编码为多个定点基本精度数据,并根据程序指令执行定点乘法运算,所述乘数为卷积核权重数据,所述被乘数为输入数据;
计算模块,用于在所述处理器被配置为基本计算精度乘法时,所述乘数和被乘数以基本精度数据为单元对应相乘,计算当前精度乘法结果,和/或,在所述处理器被配置为第一计算精度乘法时,所述乘数和被乘数被分割为低精度位数表示的高位和低位数据,并按预设可变精度乘法指令进行计算,且所述乘数和被乘数高位、低位分别至少可被分割为一个基本精度数据。
其次提供一种计算神经网络卷积运算的硬件装置,包括:
中心控制器单元,用于运行计算机可读指令、数据调度和指令译码,并指令或配置卷积运算电路运行如以上部分或全部所述的方法,或,如以上计算神经网络卷积运算部分或全部所述的方法;
输入数据缓存电路,用于缓存输入数据;
权重数据缓存电路,用于缓存卷积核的权重数据;
卷积运算加速器,用于通过根据程序运算指令对装载的输入数据和权重数据按照预设计算精度执行卷积运算;
所述中心控制器单元、输入数据缓存电路、权重数据缓存电路和卷积运算加速器通过耦合方式电连接,其中:
所述中心控制器单元根据程序运行指令,将所述输入数据和权重数据由各自缓存单元按卷积运算指令加载至所述卷积运算乘加器,执行卷积运算。
与现有技术相比,本发明提供的技术方案包括以下有益效果:
本案的方法对高精度数据进行计算时,所述乘数和被乘数被分割为低精度位数表示的高位和低位数据,并按预设可变精度乘法指令进行计算,且所述乘数和被乘数高位、低位分别至少可被分割为一个基本精度数据表示。将高精度数据转化以多个中间精度乘法进行计算,且每个中间精度乘法计算均以基本精度数据来进行计算,整体上实现以基本精度数据计算高精度数据,实现可变精度计算,对任意所输入的高精度数据均可转化为基本精度的计算,通用性强,降低功耗,提高运算速度,并且通过灵活的配置实现内部资源可重构,以便最大化的利用硬件资源。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的方法的流程图;
图2为发明的方法中高精度数据分为中间精度数据和基本精度数据的示意图;
图3为发明的可变精度乘法器的原理图;
图4数据块存储数据的示意图;
图5子卷积处理单元-PE的结构图;
图6本发明方法中卷积核滑动计算的示意图;
图7本发明方法中卷积核滑动计算的示意图;
图8本发明方法中卷积计算的流程图;
图9本发明提供系统框架图;
图10本发明硬件装置中的卷积运算加速器示意图;
图11本发明硬件装置中基于卷积运算加速器计算的原理图;
图12本发明硬件装置中每个卷积运算电路单元的结构图。
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,下文描述在所附权利要求书的范围内的实施例的各种方面。应显而易见,本文中所描述的方面可体现于广泛多种形式中,且本文中所描述的任何特定结构及/或功能仅为说明性的。基于本发明,所属领域的技术人员应了解,本文中所描述的一个方面可与任何其它方面独立地实施,且可以各种方式组合这些方面中的两者或两者以上。举例来说,可使用本文中所阐述的任何数目个方面来实施设备及/或实践方法。另外,可使用除了本文中所阐述的方面中的一或多者之外的其它结构及/或功能性实施此设备及/或实践此方法。
还需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
另外,在以下描述中,提供具体细节是为了便于透彻理解实例。然而,所属领域的技术人员将理解,可在没有这些特定细节的情况下实践所述方面。为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
如图1所示的计算神经网络卷积运算的方法,所述方法包括:
S101:处理器被配置为执行预设计算精度,如,通过阵列的方式并行进行数据运算,计算的数据可以是图像数据或声音或其他的特征数据,具体的为:
处理器被配置为由包含多个基本精度乘法器构成的阵列并行计算多个基本精度乘法,基本精度乘法器可以是8位精度乘法器或是16位精度乘法器,对基本精度的选取依照所要计算的数据要求可任意设置。通过预设计算精度指令,以指令若干基本精度乘法器组合配置用于计算中间精度乘法,且构成中间精度乘法器,中间精度乘法可由基本精度乘法进行计算,且作为下一级精度乘法计算的基础,需要指出的是,中间精度乘法可以是一次中间精度乘法,也可以是多次指令运算的中间级运算,如,待处理的数据作为输入数据被处理,如,经过神经网络处理,可输入多个基本精度的数据,例如,基本精度为N位精度,则高精度数可表示K*N位精度数据,则当N=8,K分别1、2、4、6…时分别表示8位精度、16位精度、32位精度或48位精度等,其中N为自然数,K为偶数。
在运行计算指令时,如图2所示,计算128位精度的高精度数据乘法,以8位精度作为基本精度,可将128位精度的数据乘法分解为多个中间精度乘法实现,具体的:
将高精度128位精度的数据分割为高64位和低64位中间数据,然后将中间精度数据按高低位依次分解为32位精度数据,32位精度的中间精度数据又按高低位分解为16位精度,16位精度数据同理被分解为以8位精度数据作为基本精度进行运算;又如,需要计算64位精度的高精度数据,以8位精度作为基本精度,按照中间精度数据按高低位依次分解为为32精度、32位精度的中间精度数据又按高低位分解为16位精度,16位精度数据同理被分解为以8位精度数据作为基本精度进行运算;
因此任意位高精度数据乘法运算可通过如下方式表示,具体的:
对于两个K*N位的高精度数对(乘数和被乘数)A和B的乘法运算,即A×B乘法表示为:
A×B=A高×B高×2K*N+A低×B低+2K*N/2(A高×B低+A低×B高)=A高×B高×2K*N+A低×B低+2K*N/2{(A高×B高+A低×B低)+(A高-A低)×(B低-B高)},其中“A高×B高”、“A低×B低”表示乘法数对的高低位对应乘法操作、“2K*N”、“2K*N/2”表示移K*N和K*N/2位移位操作、“(A高-A低)×(B低-B高)”表示乘法数对的高低位的差积操作、“+”表示“拼接”或“求和”操作、“-”表示“求差”操作;
综上一个高精度数对的乘法可分解为三个中间精度数对A高×B高、A低×B低、(A高-A低)×(B低-B高)三个乘法操作,然后通过移位、拼接/加法运算实现高精度数对的乘法运算。进一步的中间精度数对乘法操作可依次被分解成基于基本精度数据的乘法操作,因此,通过灵活配置处理器基本精度乘法阵列,实现多精度乘法混合运算操作。
指令若干中间精度乘法器组合配置用于计算第一精度乘法计算,通过中间乘法器的配置,能够实现输入数据以可变精度乘法运算的方式进行计算,如,对基本精度乘法或由基本精度乘法器构成的中间乘法器的按照预设计算精度指令进行配置,实现可变精度乘法计算,具体的:
在第一精度数据为32位时,32位第一精度数据可分解为高低位分别为16位的中间精度数据乘法运算,而16位中间精度数据的乘法可进一步分解为8位基本精度乘法运算,因此可通过3个8位基本精度乘法器实现32位精度数据的高位积(32位精度的被乘数高位和32位乘数的高位对应的积)或低位积(32位精度的被乘数低位和32位乘数的低位对应的积)或高低位的差积(32位精度的被乘数高低位差和32位乘数的高低位差对应的积),根据以上可知3个8位基本精度乘法器构成16位中间精度乘法器在一个周期内完成一个16位中间精度的乘法,即至少完成一个高位积或低位积或差积的运算,因此9个基本精度乘法器作为3个16位中间乘法器可实现3个16位中间精度的乘法运算即同步完成高位积、低位积和差积运算,然后与其他移位、拼接/加法器共同构成32位第一精度乘法器或作为更高精度位(如64位精度)的中间精度乘法器。
如图3所示,对于K*N位精度的数对X和W,其中:X0和X1表示被乘数X的高位和低位数,W0和W1表示乘数W的高位和低位,计算X×W则可分别通过三个K*N/2位基本精度乘法器或中间精度乘法器计算高位积、低位积和差积。如第一精度数据为64位时,3个32位中间精度乘法器构成64位乘法器,而每个32位精度乘法器需要3个16位精度乘法器,每个16位精度乘法器需要9个基本精度乘法器,即并行实现64位精度乘法需要27个基本精度乘法器;又例如,在第一精度数据为128位时,81个基本精度乘法器,即3个64位中间乘法器构成128位乘法器,且每个64位中由3个32位中间精度乘法器构成,该方法的电路结构设置避免了现有技术中将多精度与单精度或半精度,或是,单精度与半精度,或是,多精度与半精度获取其他组合方式单一的组合使用,增加处理器处理计算时乘法器构成资源浪费、读写带宽的资源占用较大,运行时间长的问题,通过可变精度计算可最大化的利用硬件资源。
在另一种方式中,在基本乘法器资源不足时,可通过多个周期依次计算高位积、低位积、差积。
具体的,在计算64位精度乘法,需要27个基本精度乘法器,每9个基本乘法器组成一个32位中间精度乘法器可并行加速计算32位中间精度数据表示的64位精度数据的高位积、低位积和差积,但当前硬件基本乘法器资源只有9个即一个32中间精度乘法器,因此可在三个周期通过32位中间精度乘法器分别计算64位精度数据的高位积、低位积和差积,然后经过移位、拼接/求和、规范化操作实现32位高精度数据乘法运算。
S102:获取至少一对乘数和被乘数,乘数为卷积核权重数据,被乘数为输入数据,输入数据,例如,图像数据或声音或其他的特征数据。权重数据,根据运算乘法的卷积核的行、列所决定,卷积核的行列如L*O表示卷积核尺寸,L.O均为自然数整数,例如,卷积核为3*3=9,或4*4=16,或2*3=6,5*5=25,卷积运算表示为卷积核矩阵与输入数据矩阵进行相应的点积即内积运算。如,乘数和被乘数尾数位分别被编码为多个定点基本精度数据,并根据程序指令执行定点乘法运算。定点乘法运算为两个原码表示的数相乘,其运算规则是乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积,运算的过程与十进制乘法相似,同号相乘为正,异号相乘为负,是可变精度计算的基础数据准备;
在处理基本精度数据时,能够被同时处理,如,数据经缓存后通过可重构电路输入至相应的乘法器或乘加器中运行预设精度乘法计算,也能够适用于不同精度输入数据的计算,具体的:
S103:处理器被配置为基本计算精度乘法时,乘数和被乘数以基本精度数据为单元对应相乘,计算当前精度乘法结果,如,乘数与被乘数的精度或是位数相同,例如,乘数与被乘数均为8位,数据装载器缓存乘数与被乘数,根据操作指令,输送至对应基本精度乘法器中进行计算,多个乘法器能够同时对所输入的多个乘数和被乘数对进行乘法运算,并输出计算,或是,每个乘法器的计算结果按照预设卷积指令经累加器求合计算后进行输出;
当处理器被配置为第一计算精度乘法时,乘数和被乘数被分割为低精度位数表示的高位和低位数据,分割方法,例如,乘数为32位高位精度数据,以16位精度数据的乘法作为中间乘法数据,分割为高16位中间精度数据和低16位中间精度数据,进一步的,将高16位中间精度数据位分为高8位基本精度数据和低8位基本精度数据,低16位中间精度数据分为高8位基本精度数据和低8位精度数据,在计算时,可按照在基本乘法器资源不足时或够用时的计算方法进行运算。
综上,该方法在对输入数据进行计算时,实现可变精度的计算,计算过程不再局限于多精度与单精度或半精度数据的单一组合使用,通过可变精度的方法计算运算,在可变精度过程中以当前的精度(基本精度)作为下一级的运算的精度进行计算,直至输出预设精度的等级计算,具体的,为以中间乘法器对应的中间精度数据为单位逐级进行基本精度的运算,完成第一计算精度乘法运算,降低功耗,并通过灵活的配置实现内部资源可重构,以便最大化的利用硬件资源。访存带宽资源占用指,将高精度数据通过压缩映射等操作映射到低精度位表示,然后执行卷积计算,因此,通过压缩数据位减少访存带宽资源,同时片内通信带宽资源也相对变少。
作为本发明所提供的部分实施方式,计算第一精度乘法的方法包括:
被分配高精度乘数和被乘数的分别编码为由低精度位数表示的高位、低位数据,数据编码是数据从一种形式或格式转换为另一种形式的过程,用预先规定的方法将文字、数字或其它对象编成数码。中间乘数和中间被乘数进行计算,其乘法结果作为中间精度乘法;
通过基本精度乘法计算中间精度乘法运算,确定高精度乘法高位积结果和低位积乘法结果,即为,中间精度乘法为可变精度乘法运算,输入的任意精度数据,被中间精度乘法划分为基本精度数据的乘法运算,直至计算第一精度乘法对对应的第一精度数据,并进行输出。确定高精度乘法高位积结果和低位积乘法结果的方法,如,第一精度数据为16位,对应位的数据运算可被分多个不同基本精度乘法器进行计算,具体的:
第一精度数据为16位,乘数为16位,则可分为高8位中间精度数A,和低8位中间精度数B,同理被乘数16位,则可分为高8位中间精度数C,和低8位中间精度数,上述16位精度数据经过1次分解即可表示为8位基本精度数据,因此此时分解后的A/B/C/D中间精度数为基本精度数据;
确定差积结果,差积结果根据部分基本精度乘法器被配置为复用乘数和被乘数高、低位数据计算,且计算乘数高位和低位之间的差和被乘数高位和低位之间的差,并将差值作为中间乘数和中间被乘数输入至基本精度乘法器或中间乘法器执行乘法运算所确定,即为,(A-B)*(C-D),先通过减法器进行相减再进行乘积;
确定高位积,高位积根据部分基本精度乘法器被配置为乘数和被乘数高位数据的乘积所确定,即为,A*C;
确定低位积,低位积根据部分基本精度乘法器被配置为乘数和被乘数低位数据的乘积所确定,B*D;
高位积、低位积和差积结果经过相应的运算处理,例如,移位,和/或,拼接,和/或,规范化后作为高精度数乘法结果,其中:规范化即为截断处理,例如,基本精度为8位,而计算后的结果为16位,去掉后8位,保留前8位数据作为当前精度计算结果即可。
在另一种混合精度乘法运算中,当前乘法运算的数据依赖与前一个乘法输出,即前一乘法采用16位精度乘法,输出32位乘法结果作为下一乘法的输入,而当前乘法采用32位精度乘法,因此不需要对前一乘法结果进行规范化处理,可直接作为当前乘法的输入数据。同理,若当前乘法精度(8位)小于前一乘法结果输出(32位),则需要对前一乘法结果输出通过规范化(所述规范化为截断、压缩映射中的一种或多种组合使用),编码为当前乘法精度(8位)输入数据的表示,作为输入进行计算。
通过指令不同乘法器进行不同精度乘法积的计算,不同精度乘法积作为中间精度乘法运算的基础。需要指出的是,上述举例仅是做帮助理解,并非对本案技术方案的具体限定。
作为本发明所提供的部分实施方式,如图2所示,基本精度数据被设置成为N位,在计算第一精度乘法时对应第一精度数据,第一精度数据为可被分为中间精度数据,且第一精度数据为K*N位,中间精度数据为K*N/2位,且K为正偶数,N为自然数。
进一步的,第一精度数据为高精度乘法对应高精度数据,高精度数据通过log2 K次分解,获得不同的中间精度数据,用于中间精度乘法运算,如,第一精度为128位的高精度数据,K=16=24,因此,需要对128位的高精度数据进行4次分解,并以8位精度数据作为基本精度进行运算。
如图8所示,另一方面提供一种计算神经网络卷积运算的方法,使用以上部分或全部的方法进行计算。例如,输入的数据为特征数据,使用神经网络进行计算,包括对卷积核的使用,如6和图7滑窗方式进行卷积计算,卷积核内为权重数据,对图像数据的处理具体的为:
卷积核的权重数据和对应的图像数据或特征数据,根据程序指令分别加载至权重和特征数据装载器,如图4所示,其中:数据装载器由多个缓存块构成,每个缓存块能够存储一个N位基本精度位的数据,多个连续的缓存块能够存储位数超过基本精度位数的高精度数据;
根据处理器预设计算精度配置指令进行计算。
作为本发明所提供的部分实施方式,根据处理器预设计算精度配置指令进行计算的方法包括:
如图4和图5所示,卷积核和特征数据装载器分别由9缓存块构成,每个PE包含9个N=8位基本乘法器,因此在执行8位基本精度卷积乘法运算时,权重数据和特征数据的装载器中每个缓存块可存储一个对应的权重数据和特征数据,然后加载至对应的8位基本精度乘法器中由一个PE在一个操作周期内实现卷积核尺寸为3*3的卷积运算,即可实现9个数对的基本精度乘法运算;在执行高精度(16位)乘法运算时,每两个缓存块存储一个16位精度的数据,同时9个8位基本精度乘法器通过指令配置可实现3个16位精度数据对的乘法运算,即三个8位基本精度乘法器一组构成一个16精度位乘法,每组其中两个乘法器通过第一可重构配置电路分别接收16位精度数据的高8位数据和低8位数据,进行高位积和低位积的运算,另一个8位基本精度乘法器通过两个减法器及数据复用器分别接收两个16位数据的高位和低位做差后送入该8位基本精度乘法器中计算差积结果,然后通过移位、拼接/求和、规范化电路单元将上述三个积结果整合作为16位精度乘法输出。
在处理器的指令为基本精度乘法时,多个基本精度乘法器(8位精度乘法器)并行计算多个权重数据和对应特征数据的积,其积的和作为当前卷积结果或部分和的结果,或,对每个乘法器的乘积结果进行累加并输出,或,
在处理器的运算指令为第一精度乘法时,高精度权重数据和特征数据被分解为由高位、低位数据表示的中间精度数据并执行中间精度乘法运算,并将中间乘法运算再分解为基本精度乘法运算,获得第一精度乘法计算结果,且将多个第一精度乘法结果的和作为当前卷积核的卷积结果。如,第一精度数据为分为1024位,以512、256、128、64、32、16位为中间精度数据,并通过8位基本精度完成计算,通过上述的中间精度乘法运算,实现可变精度的计算,降低处理器的运算量。
其次提供一种混合精度卷积运算处理的系统,如图9所示,系统包括:
配置模块,用于将处理器配置为执行预设精度计算;
获取模块,获取至少一对乘数和被乘数,且乘数和被乘数尾数位分别被编码为多个定点基本精度数据,并根据程序指令执行定点乘法运算,乘数为卷积核权重数据,被乘数为输入数据;
计算模块,用于在处理器被配置为基本计算精度乘法时,乘数和被乘数以基本精度数据为单元对应相乘,计算当前精度乘法结果,和/或,在处理器被配置为第一计算精度乘法时,乘数和被乘数被分割为低精度位数表示的高位和低位数据,并按预设可变精度乘法指令进行计算,且乘数和被乘数高位、低位分别至少可被分割为一个基本精度数据。
作为本发明所提供的部分实施方式,配置模块还用于,将处理器被配置为由包含多个基本精度乘法器构成的阵列并行计算多个基本精度乘法,通过预设计算精度指令,指令若干基本精度乘法器组合配置用于计算中间精度乘法,且构成中间精度乘法器;
指令若干中间精度乘法器组合配置用于计算第一精度乘法。
实现内部资源可重构,以便最大化的利用乘法器硬件资源。
作为本发明所提供的部分实施方式,计算模块还用于,被分配高精度乘数和被乘数分别被编码为由低精度位数表示的高位、低位数据,并作为中间乘数和中间被乘数进行计算,其乘法结果作为中间精度乘法;
通过基本精度乘法计算中间精度乘法运算,确定高精度乘法高位积结果和低位积乘法结果,其中包括:
确定差积结果,差积结果根据部分基本精度乘法器被配置为复用乘数和被乘数高、低位数据计算,且计算乘数高位和低位之间的差和被乘数高位和低位之间的差,并将差值作为中间乘数和中间被乘数输入至基本精度乘法器或中间乘法器执行乘法运算所确定,复用可减少乘法器数量的使用,如上述的,(A-B)*(C-D);
确定高位积,高位积根据部分基本精度乘法器被配置为乘数和被乘数高位数据的乘积所确定;
确定低位积,低位积根据部分基本精度乘法器被配置为乘数和被乘数低位数据的乘积所确定;
高位积、低位积和差积结果经过移位,和/或,拼接,和/或,规范化后作为高精度数乘法结果。
作为本发明所提供的部分实施方式,基本精度数据被设置成为N位,计算第一精度乘法时对应第一精度数据,第一精度数据为可被分为中间精度数据,且第一精度数据为K*N位,中间精度数据为K*N/2位,且K为正偶数,N为自然数;
第一精度数据为高精度乘法对应高精度数据,高精度数据通过log2 K次分解,获得不同的中间精度数据,用于中间精度乘法运算。
一种多精度运算处理的硬件装置,如图10至图12所示,其包括:
中心控制器单元,用于运行计算机可读指令、数据调度和指令译码,并指令或配置卷积运算电路运行如以上部分或全部的方法;
输入数据缓存电路,用于缓存输入数据(即为被乘数);
权重数据缓存电路,用于缓存卷积核的权重数据(即为乘数);
卷积运算加速器,用于通过根据程序运算指令对装载的输入数据和权重数据按照预设计算精度执行卷积运算(即为卷积计算,通过乘法器构成);
中心控制器单元、输入数据缓存电路、权重数据缓存电路和卷积运算加速器通过耦合方式电连接,其中:
中心控制器单元根据程序运行指令,将输入数据和权重数据由各自缓存单元按卷积运算指令加载至卷积运算乘加器,执行卷积运算。
如图11所示,一种多粒度卷积并行加速器以空间维度结合矩阵计算所实现输入通道并行(并行计算多个输入特征图与对应卷积核的卷积运算)、神经元并行(并行计算每个特征图中多个特征窗口数据与对应卷积核的卷积运算)、输出通道并行(并行计算多个卷积核与对应输入特征图数据的卷积运算)、突触并行(并行计算每个卷积核中的多个权重数据与对应特征数据的卷积运算)。包括:多个乘法器构成一个子卷积处理单元-PE(如图5所示)用于突触并行计算,多个PE构成卷积运算电路单元-PU(如图12所示)用于神经元并行计算、多个卷积运算电路单元PU构成一个第一计算阵列(即为,PU阵列)用于输入通道并行计算,多个第一计算阵列构成第二计算阵列(即为子PU矩阵)用于卷积核并行计算,其中每个PE中的乘法器阵列可通过可重构电路进行配置,以实现多精度数据乘法运算即实现多精度混合卷积运算。基于图11的卷积加速器架构可在实现多精度数据卷积运算的同时,进一步的实现卷积运算在多种计算粒度上的并行加速。
图5所示,子卷积处理单元-PE包括多个基本精度乘法器,每个乘法器通过基于对应精度配置指令构成的数据通路接收数据装载器中的存储的对应乘数和被乘数。
作为本发明所提供的部分实施方式,卷积运算加速器内部包含多个乘加器,多个乘加器用于并行计算卷积核和对应输入数据(特征数据)卷积计算;
多个基本精度乘加器构成一个子卷积处理单元-PE,子卷积处理单元在基本精度乘法指令条件下用于并行计算多个权重数据与对应输入数据的点积运算,例如,9个基本精度乘法器构成的子卷积处理单元-PE,基于卷积运算和配置指令,通过对应数据通路将特征数据和权重数据加载至PE中对应基本精度乘法器中进行卷积计算,可并行完成大小为3*3的卷积核与对应输入数据的基本精度卷积运算。
进一步的,在执行高于基本精度的卷积运算时可通过配置指令,配置PE单元中基本精度乘法器阵列数据通路,以及结合内部可重构电路中的数据选择器、加法器、移位器、减法器等实现高精度的卷积运算。
作为本发明所提供的部分实施方式,多个子卷积处理单元-PE构成一个卷积运算电路单元-PU,在输入特征数据有多个输入通道时,每个PU负责每个卷积核深度通道与对应输入通道数据的卷积运算,同时每个PU中的每个PE负责计算每个输入通道数据的一部分卷积运算,其中每个输入通道数据的部分构成一个输入数据块,具体的:
以第一层输入RGB图像为例,输入有R/G/B三个通道,输入层卷积核的维度为3*3*3*4,即,卷积核尺寸为3*3、深度通道数为3(与输入数据通道数相同)、卷积核个数为4。将每个输入通道图像横向分割多块,每块由所对应的PU中的不同PE与对应通道的卷积核执行卷积运算,每3个PU为一组分别执行R/G/B三个输入通道数据与对应卷积核3个深度通道的权重数据执行卷积运算,同时4个第一计算阵列分别计算4个卷积核与对应输入通道数据的卷积运算,然后多个周期后每个第一计算阵列将R/G/B三个输入通道数据分别与当前卷积核3个深度通道权重的卷积结果累加,作为当前卷积核一个输出通道的卷积结果。
在另一种方式中,每个PE单元包含9个基本精度乘法器,计算3*3大小卷积核在基本精度指令下的卷积运算时,可在一个周期完成9个权重数据与对应输入数据的乘法运算,若对于5*5大小的卷积核执行基本进度卷积运算,则有25个特征数据,在9个基本精度乘法器构成阵列的条件下一个周期只能计算9个数据对的积与和,因此需要3个周期完成25个数据对的卷积乘法运算;
多个输入通道数据与对应卷积核多个深度通道的权重数据的卷积结果经累加器累加,输出当前卷积核的卷积结果。
作为本发明所提供的部分实施方式,如图11所示,多个卷积运算电路单元PU构成一个第一计算阵列(即为PU阵列),多个第一计算阵列构成(即为PU阵列)构成第二计算阵列(子PU矩阵);
第二计算阵列中每个第一计算阵列共同与输入数据缓存电路(特征数据缓存单元)耦合,共享输入数据;
每个输入数据缓存电路包含多个输入数据缓存组,每个输入数据缓存组与多个第一计算阵列中的对应PU耦合;卷积核缓存电路包含多个卷积核缓存组,缓存对应多个卷积核数据,且每个缓存组分别单独与第一计算阵列耦合。
作为本发明所提供的部分实施方式,如图5所示,多个基本精度乘加器构成一个子卷积处理单元PE,还包括:
输入数据装载器,用于运行指令向子卷积处理单元PE装载输入数据;
权重数据装载器,用于运行指令向子卷积处理单元PE装载权重数据;
权重装载器和输入数据装载器,分别由多个存储块构成,如图4所示,每个存储块能够存储一个基本精度数据,多个存储块组合能够存储高精度数据;
每个存储块分别与基本精度乘法器耦合连接,用于基本精度乘法运算,例如,3*3大小的基本精度卷积核数据,可由9个基本精度存储块存储,并由一个PE中9个基本精度乘法器实现并行卷积运乘法算;
进一步的,每个PE中还包含第一可重构电路和第二可重构电路,用于根据预设计算精度指令配置,实现多精度卷积运算。
以上所述需要通过动态配置PE中基本精度乘法器阵列电路来实施,如图3和图5所示,其中图3由3个N位基本精度乘法器或中间精度乘法器通过可重构电路连接实现多精度乘法的具体电路结构,图5基于图3基础上由9个N位(示例中N=8)基本精度乘法器构成的子卷积处理单元PE,每3个N位基本精度乘法器通过第一可重构电路构成一个2N位精度乘法器,3个2N位精度乘法器精度乘法器通过第二可重构电路构成一个4N位精度乘法器,用于根据计算精度指令实现多精度卷积运算,其中:
在计算基本精度卷积运算时,基于配置指令,每个缓存块与对应基本乘法器耦合构成基本精度乘法数据运算通路,实现基本精度的卷积运算;
第一可重构配置电路,用于根据程序计算精度指令配置电路通断和/或数据通路实现指令精度计算,如,基本精度为8位,在执行16位精度计算指令时,可通过控制数据通路按照预设指令寻址方式从特征数据装载器和权重装载器中向三个基本精度乘法器中的两个基本精度乘法器分别加载数据对的高位和低位数据,以及通过第一可重构电路中的数据复用器将特征数据和权重数据的高低位分别输入至减法器进行减法运算后输入至另一个乘法器中,分别计算器高位积、低位积和差积,同时通过配置加法器、复用器、移位器、拼接器等将上述积结果进行整合生成16位精度数据乘法结果。
三个8位基本精度乘法器构成高精度乘法器实现16位精度数据计算;
第二可重构电路,用于在计算第一精度乘法时,根据指令基于第一可重构电路实现中间精度乘法运算,并基于第二可重构电路将3个中间精度乘法器的结果整和,实现基于中间精度乘法的第一精度乘法运算,其中,第二可重构电路可看做第一可重构电路的分形形式。如,3个8位乘法器通过第一可重构电路够成一个16位中间乘法运算,因此3个16位中间乘法通过第二可重构电路实现一个32位精度数据的乘法计算,64位、128位或其他,依次类推。
进一步的,可重构电路的设置数量根据高精度乘法分解为基本精度乘法的的次数log2 K来确定,如图5所示PE最大可实现4N(K=4,N=8)位高精度数乘法运算,需要分解log2 4=2次通过N位基本精度乘法器实现高精度乘法运算,即设置了第一可重构电路和第二可重构电路两级可重构电路,其中:第一可重构电路用于计算中间精度乘法运算,第二可重构电路用于基于第一可重构电路的构成的中间精度乘法器实现第一精度乘法运算。
进一步的,第一可重构电路和第二可重构电路分别包含多路复用器、数据选择器、移位器、加法器、减法器一种或多种,计算卷积处理的公知计算原则,其中:
复用器在执行中间精度乘法或第一精度乘法时,复用接收乘数与被乘数数对的高位、低位数据,并加载至对应减法器中计算每个数高低位的差;
数据选择器,用于根据配置指令选择对应数据通路;
加法器,用于对高位积、低位积和差积结果求和;
移位器,用于对高位积和上述加法器求和结果进行移位处理;
拼接器,用于对上述移位处理结果进行拼接或求和操作,从而获得中间精度乘法结果或第一精度乘法结果。
以下,通过三个实施例进行说明,卷积核尺寸为当下主流卷积核,为3*3大小,以8位作为基本精度(存储块为8bit),分别对8位、16位和32位精度的输入数据进行计算,如下:
如图5所示,模式0(N位,示列N=8bit),特征数据W和权重数据X为8位精度数据:
进行8位精度的数据卷积运算,数据装载器分别按字节存储9个8位权值数据和特征数据ID_W[1:9]、ID_X[1:9],然后根据PE电路内部多路复用器和或数据选择器配置信息(即第一可重构电路配置),实现9个8位乘法器的电路初始化配置,数据装载器根据数据存储块地址ID[1:9]与9个8位乘法器数据通路配置关系将数据加载至9个8位乘法器Mul[1:9]中,并行完成9个特征数据与9个权重数据的乘法运算,即在一个操作周期完成一个3×3卷积核在特征图上的一次卷积乘法操作,对输出的9个乘法结果通过输出选择电路传输至加法树中,实现卷积核在特征图上的乘加求和运算。
模式1(2N位)时,进行16位精度(第一精度数据)卷积运算,每个特征数据X和权重数据W分别需2个8位存储块进行存储:
数据装载器每两个存储块存储一个数据,分别存储连续3个16位权值数据和特征数据(如,ID[1:2]、ID[3:4]、ID[5:6]缓存块中分别存储3个16位精度数据),然后根据配置信息配置第一可重构电路,按照第一可重构电路配置信息,实现3个16位乘法器的电路初始化配置,其中:每个16位乘法器由3个8位乘法器以及其他附属电路构成,数据装载器根据数据存储块地址ID[1:6]与3个16位乘法器连接关系将ID[1:6]中数据使能加载至对应的6个8位乘法器中(其中ID[7:9]为空不加载),剩余3个乘法器(Mul[7:9])分别通过复用器接收每对{(权重ID[1:2]/特征ID[1:2])、(权重ID[2:3]/特征ID[2:3])、(权重ID[5:6]/特征ID[5:6])}16位精度数据的高低位数据的差,即{(权重高低位差=ID[1]-ID[2]、特征数据高低位差=ID[2]-ID[1])、(权重高低位差=ID[2]-ID[3]、特征数据高低位差=ID[3]-ID[2])、(权重高低位差=ID[3]-ID[4]、特征数据高低位差=ID[4]-ID[3])},然后对上述每对权重与特征数据的高低位差进行乘法运算,将上述高位积、低位积、差积结果经过求和、移位、拼接处理后输出16位精度乘法运算结果,其中mul[1,2]与mul[7]、mul[3,4]与mul[8]、mul[5,6]与mul[9]分别通过第一可重构电路配置成3个16位乘法器,并行完成3个16位精度的特征数据与对应3个权重数据的16位精度乘法运算,即完成一个3×3卷积核行或列在特征图对应窗口行或列上的一次行或列卷积操作。
输出的3个乘法结果传输至加法树中,以实现卷积核在特征图上行或列的乘加求和运算,然后重置特征装载器数据,加载该卷积核第二行或列与对应特征图窗口的行或列,进行乘加运算,从而实现在3个操作周期完成一个3×3卷积核的一次卷积操作。
模式2(4N位)时,进行32位精度的的数据卷积运算,每个权重数据W和特征数据X需要4个存储块进行存储:
数据装载器分别采用4个存储块存储1个32位精度的权值数据和特征数据ID[1:4],然后根据PE电路内部第一和第二可重构电路配置信息,实现1个32位乘法器的电路初始化配(其中:每个32位乘法器由3个16位乘法器通过第二可重构电路构成,根据模式1中1个16位乘法电路需要3个8位乘法器,因此,一个PE单元中9个8位乘法器可构成一个32位乘法器,相比16位乘法器附增了第二可重构电路,包括:为实现32位乘法而新增的减法器、移位器/拼接/加法器、输出选择器等),数据装载器根据数据存储块地址ID[1:4]与1个32位乘法器内部连接关系将ID[1:4]中数据使能加载至对应的4个8位乘法器Mul[1:4]中(其中ID[5:9]为空不加载)用于计算16位中间精度数据的高8位积和低8位积,同时乘法器Mul[7]和Mul[8]分别通过数据复用器接收32位精度数据对的高位ID[1:2]和低位ID[3:4]的高低位数据的差{(权重数据高位的高低位差=ID[1]-ID[2])、特征数据高位的高低位差=ID[2]-ID[1])、(权重数据低位的高低位差=ID[3]-ID[4])、特征数据低位的高低位差=ID[4]-ID[3])}计算16位中间精度数据的差积。
上述的Mul[1:2]与Mul[7]、Mul[3:4]与Mul[8]及其他电路共同完成32位的“X高*W高”和“X低*W低”,对于“(X高-X低)×(W低-W高)”的计算采用Mul[5、6、9]三个8位乘法器实现运算,具体的:
对于32位数据对X和W,先通过数据复用器由两个减法器分别计算特征数据ID[1:4]和权重数据ID[1:4]高低位差{(X高-X低)、(W低-W高)}获得两个16位精度的差值结果“(X高-X低)”和“(W低-W高)”,然后通过Mul[5、6、9]三个8位精度乘法器计算上述两个16位差值结果的积从而获得32位精度乘法的差积结果,分别获得了32数据乘法中的高位积“X高×W高”和低位积“X低×W低”、差积“(X高-X低)×(W低-W高)”三个16位中间精度乘法结果,将上述三个16位中间精度乘法结果通过第二可重构电路中的移位、求和、拼接、规范化操作获得最终32位精度特征数据和权重数据的乘法结果。
综上,当采用32位乘法器时,每一个PE在一个操作周期内只能完成一个特征数据与一个卷积核的权重数据的乘法运算。
以上对本发明所提供的方法及其产品进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离发明创造原理的前提下,还可以对发明进行若干改进和修饰,这些改进和修饰也落入发明权利要求的保护范围。
Claims (19)
1.一种计算神经网络卷积运算的方法,其特征在于,所述方法包括:
处理器被配置为执行预设计算精度;
获取至少一对乘数和被乘数,且所述乘数和被乘数尾数位分别被编码为多个定点基本精度数据,并根据程序指令执行定点乘法运算,所述乘数为卷积核权重数据,所述被乘数为输入数据;
所述处理器被配置为基本计算精度乘法时,所述乘数和被乘数以基本精度数据为单元对应相乘,计算当前精度乘法结果,和/或,所述处理器被配置为第一计算精度乘法时,所述乘数和被乘数被分割为低精度位数表示的高位和低位数据,并按预设可变精度乘法指令进行计算,且所述乘数和被乘数高位、低位分别至少可被分割为一个基本精度数据表示。
2.根据权利要求1所述的方法,其特征在于,所述处理器被配置为执行预设计算精度的方法包括:
所述处理器被配置为由包含多个基本精度乘法器构成的阵列并行计算多个所述基本精度乘法,通过预设计算精度指令,指令若干基本精度乘法器组合配置用于计算中间精度乘法,且构成中间精度乘法器;
指令若干中间精度乘法器组合配置用于计算第一精度乘法。
3.根据权利要求1所述的方法,其特征在于,所述计算第一精度乘法的方法包括:
被分配高精度乘数和被乘数的分别编码为由低精度位数表示的高位、低位数据,并作为中间乘数和中间被乘数进行计算,其乘法结果作为中间精度乘法;
通过基本精度乘法计算中间精度乘法运算,确定高精度乘法高位积结果和低位积差积结果。
4.根据权利要求3所述的方法,其特征在于,所述确定高精度乘法高位积结果和低位积差积结果的方法还包括:
确定差积结果,所述差积结果根据部分所述基本精度乘法器被配置为复用乘数和被乘数高、低位数据计算,且计算所述乘数高位和低位之间的差和被乘数高位和低位之间的差,并将差值作为中间乘数和中间被乘数输入至基本精度乘法器或中间乘法器执行乘法运算所确定;
确定高位积,所述高位积根据部分所述基本精度乘法器被配置为乘数和被乘数高位数据的乘积所确定;
确定低位积,所述低位积根据部分所述基本精度乘法器被配置为乘数和被乘数低位数据的乘积所确定;
所述高位积、低位积和差积结果经过移位,和/或,拼接,和/或,规范化后作为高精度数乘法结果。
5.根据权利要求1所述的方法,其特征在于,所述基本精度数据被设置成为N位,在所述计算第一精度乘法时对应第一精度数据,所述第一精度数据为可被分为中间精度数据,且所述第一精度数据为K*N位,所述中间精度数据为K*N/2位,且K为正偶数,N为自然数。
6.根据权利要求5所述的方法,其特征在于,所述第一精度数据为高精度乘法对应高精度数据,所述高精度数据通过log2 K次分解,获得不同的所述中间精度数据,用于中间精度乘法运算。
7.根据权利要求1至6任意一项所述的方法,其特征在于,包括使用卷积核进行卷积计算,所述方法包括:
所述卷积核的权重数据和对应的特征数据,根据程序指令分别加载至权重和特征数据装载器,其中:所述数据装载器由多个缓存块构成,每个所述缓存块能够存储一个基本精度位的数据,多个连续的所述缓存块能够存储位数超过所述基本精度位数的高精度数据;
根据处理器预设计算精度配置指令进行计算。
8.根据权利要求7所述的方法,其特征在于,根据处理器预设计算精度配置指令进行计算的方法包括:
所述权重数据和特征数据的装载器中的数据分别以缓存块为单位数据加载至对应的基本精度乘法器中进行计算,其中:
在所述处理器的指令为基本精度乘法时,每个所述基本精度乘法器并行计算多个权重数据和对应特征数据的积,其积的和作为当前卷积核卷积结果或部分和的结果,或,在所述处理器的运算指令为第一精度乘法时,所述高精度权重数据和特征数据被分解为由高位、低位数据执行的中间精度乘法运算,并将所述中间乘法运算再分解为基本精度乘法运算,获得第一精度乘法计算结果,且将所述多个所述第一精度乘法结果的和作为当前卷积核的卷积结果。
9.一种计算神经网络卷积运算的方法的系统,其特征在于,所述系统包括:
配置模块,用于将处理器配置为执行预设精度计算;
获取模块,获取至少一对乘数和被乘数,且所述乘数和被乘数尾数位分别被编码为多个定点基本精度数据,并根据程序指令执行定点乘法运算,所述乘数为卷积核权重数据,所述被乘数为输入数据;
计算模块,用于在所述处理器被配置为基本计算精度乘法时,所述乘数和被乘数以基本精度数据为单元对应相乘,计算当前精度乘法结果,和/或,在所述处理器被配置为第一计算精度乘法时,所述乘数和被乘数被分割为低精度位数表示的高位和低位数据,并按预设可变精度乘法指令进行计算,且所述乘数和被乘数高位、低位分别至少可被分割为一个基本精度数据。
10.根据权利要求9所述的系统,其特征在于,所述配置模块还用于,将所述处理器被配置为由包含多个基本精度乘法器构成的阵列并行计算多个所述基本精度乘法,通过预设计算精度指令,指令若干基本精度乘法器组合配置用于计算中间精度乘法,且构成中间精度乘法器;
指令若干中间精度乘法器组合配置用于计算第一精度乘法。
11.根据权利要求9所述的系统,其特征在于,所述计算模块还用于,被分配高精度乘数和被乘数的编码分别为由低精度位数表示高位、低位数据,并作为中间乘数和中间被乘数进行计算,其乘法结果作为中间精度乘法;
通过基本精度乘法计算中间精度乘法运算,确定高精度乘法高位积结果和低位积乘法结果,其中包括:
确定差积结果,所述差积结果根据部分所述基本精度乘法器被配置为复用乘数和被乘数高、低位数据计算,且计算所述乘数高位和低位之间的差和被乘数高位和低位之间的差,并将差值作为中间乘数和中间被乘数输入至基本精度乘法器或中间乘法器执行乘法运算所确定;
确定高位积,所述高位积根据部分所述基本精度乘法器被配置为乘数和被乘数高位数据的乘积所确定;
确定低位积,所述低位积根据部分所述基本精度乘法器被配置为乘数和被乘数低位数据的乘积所确定;
所述高位积、低位积和差积结果经过移位,和/或,拼接,和/或,规范化后作为高精度数乘法结果。
12.根据权利要求9所述的系统,其特征在于,所述基本精度数据被设置成为N位,所述计算第一精度乘法时对应第一精度数据,所述第一精度数据为可被分为中间精度数据,且所述第一精度数据为K*N位,所述中间精度数据为K*N/2位,且K为正偶数,N为自然数;
所述第一精度数据为高精度乘法对应高精度数据,所述高精度数据通过log2 K次分解,获得不同的所述中间精度数据,用于中间精度乘法运算。
13.一种计算神经网络卷积运算的硬件装置,其特征在于,包括:
中心控制器单元,用于运行计算机可读指令、数据调度和指令译码,并指令或配置卷积运算电路运行如权利要求1至8任意一项所述的方法;
输入数据缓存电路,用于缓存输入数据;
权重数据缓存电路,用于缓存卷积核的权重数据;
卷积运算加速器,用于通过根据程序运算指令对装载的输入数据和权重数据按照预设计算精度执行卷积运算;
所述中心控制器单元、输入数据缓存电路、权重数据缓存电路和卷积运算加速器通过耦合方式电连接,其中:
所述中心控制器单元根据程序运行指令,将所述输入数据和权重数据由各自缓存单元按卷积运算指令加载至卷积运算乘加器,执行卷积运算。
14.根据权利要求13所述的硬件装置,其特征在于,
所述卷积运算加速器内部包含多个乘加器,多个所述乘加器用于计算卷积核和对应输入数据卷积计算;
多个乘加器构成一个子卷积处理单元PE,所述子卷积处理单元PE用于计算多个所述基本精度乘法。
15.根据权利要求14所述的硬件装置,其特征在于,多个所述子卷积处理单元PE构成一个卷积运算电路单元PU,负责多通道数据输入中的一个输入通道数据与对应卷积核的计算;
卷积运算中所述卷积核的深度通道与输入数据通道的数量相同,且每个所述子卷积处理单元PE计算每个输入通道数据的部分或全部卷积运算,且每个所述通道输入数据能够被分为多个数据块所存储并与对应所述卷积核深度通道的权重数据在PU中多个对应PE执行卷积运算,经过多个周期完成一个输入数据通道与对应卷积核深度通道权重数据的卷积运算;
多个所述输入通道数据与对应卷积核多个深度通道的权重数据的卷积结果经累加器累加,输出当前卷积核的卷积结果。
16.根据权利要求15所述的硬件装置,其特征在于,多个所述卷积运算电路单元PE构成一个第一计算阵列,多个所述第一计算阵列构成第二计算阵列;
所述第二计算阵列中每个所述第一计算阵列与所述输入数据缓存电路耦合,并共享输入数据;
每个所述输入数据缓存电路包含多个输入数据缓存组,每个所述输入数据缓存组与多个所述第一计算阵列中的对应PU耦合;所述卷积核缓存电路包含多个卷积核缓存组,缓存对应多个所述卷积核数据,且每个所述缓存组分别与所述第一计算阵列耦合。
17.根据权利要求16所述的硬件装置,其特征在于,多个所述乘加器构成一个子卷积处理单元,还包括:
输入数据装载器,用于运行指令向所述子卷积处理单元装载输入数据;
权重数据装载器,用于运行指令向所述子卷积处理单元装载权重数据;
所述权重装载器和输入数据装载器,分别由多个存储块构成,每个存储块能够存储一个基本精度数据,多个所述存储块组合能够存储高精度数据;
每个所述存储块分别与基本精度乘法器耦合连接,用于基本精度乘法运算。
18.根据权利要求17所述的硬件装置,其特征在于,还包括:
第一可重构配置电路和第二可重构配置电路,其中:
所述第一可重构配置电路用于根据程序计算精度指令配置电路通断实现指令精度计算;
所述第二可重构电路,用于在计算第一精度乘法时,根据指令基于第一可重构电路实现中间精度乘法运算,并基于所述第二可重构电路执行基于中间进度乘法的第一精度乘法运算。
19.根据权利要求18所述的硬件装置,其特征在于,所述第一可重构电路和第二可重构电路分别包含多路复用器、数据选择器、移位、加法器、减法器一种或多种,其中:
所述复用器在执行所述中间精度乘法或第一精度乘法时,复用接收乘数与被乘数数对的高位、低位数据,并加载至对应减法器中计算每个数高低位的差。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110766472.8A CN113610222B (zh) | 2021-07-07 | 2021-07-07 | 计算神经网络卷积运算的方法及系统、硬件装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110766472.8A CN113610222B (zh) | 2021-07-07 | 2021-07-07 | 计算神经网络卷积运算的方法及系统、硬件装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113610222A true CN113610222A (zh) | 2021-11-05 |
CN113610222B CN113610222B (zh) | 2024-02-27 |
Family
ID=78304094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110766472.8A Active CN113610222B (zh) | 2021-07-07 | 2021-07-07 | 计算神经网络卷积运算的方法及系统、硬件装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113610222B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108596143A (zh) * | 2018-05-03 | 2018-09-28 | 复旦大学 | 基于残差量化卷积神经网络的人脸识别方法及装置 |
CN108647779A (zh) * | 2018-04-11 | 2018-10-12 | 复旦大学 | 一种低位宽卷积神经网络可重构计算单元 |
CN108733347A (zh) * | 2017-04-20 | 2018-11-02 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及装置 |
CN109739555A (zh) * | 2019-01-04 | 2019-05-10 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
CN110109646A (zh) * | 2019-03-28 | 2019-08-09 | 北京迈格威科技有限公司 | 数据处理方法、装置和乘加器及存储介质 |
CN110780845A (zh) * | 2019-10-17 | 2020-02-11 | 浙江大学 | 一种用于量化卷积神经网络的可配置近似乘法器及其实现方法 |
CN111401554A (zh) * | 2020-03-12 | 2020-07-10 | 交叉信息核心技术研究院(西安)有限公司 | 支持多粒度稀疏与多模式量化的卷积神经网络的加速器 |
US20200279133A1 (en) * | 2017-04-04 | 2020-09-03 | Hailo Technologies Ltd. | Structured Sparsity Guided Training In An Artificial Neural Network |
WO2020215124A1 (en) * | 2019-04-26 | 2020-10-29 | The University Of Sydney | An improved hardware primitive for implementations of deep neural networks |
CN112783473A (zh) * | 2021-01-20 | 2021-05-11 | 北京工业大学 | 一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法 |
-
2021
- 2021-07-07 CN CN202110766472.8A patent/CN113610222B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200279133A1 (en) * | 2017-04-04 | 2020-09-03 | Hailo Technologies Ltd. | Structured Sparsity Guided Training In An Artificial Neural Network |
CN108733347A (zh) * | 2017-04-20 | 2018-11-02 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法及装置 |
CN108647779A (zh) * | 2018-04-11 | 2018-10-12 | 复旦大学 | 一种低位宽卷积神经网络可重构计算单元 |
CN108596143A (zh) * | 2018-05-03 | 2018-09-28 | 复旦大学 | 基于残差量化卷积神经网络的人脸识别方法及装置 |
CN109739555A (zh) * | 2019-01-04 | 2019-05-10 | 腾讯科技(深圳)有限公司 | 包括乘累加模块的芯片、终端及控制方法 |
CN110109646A (zh) * | 2019-03-28 | 2019-08-09 | 北京迈格威科技有限公司 | 数据处理方法、装置和乘加器及存储介质 |
WO2020215124A1 (en) * | 2019-04-26 | 2020-10-29 | The University Of Sydney | An improved hardware primitive for implementations of deep neural networks |
CN110780845A (zh) * | 2019-10-17 | 2020-02-11 | 浙江大学 | 一种用于量化卷积神经网络的可配置近似乘法器及其实现方法 |
CN111401554A (zh) * | 2020-03-12 | 2020-07-10 | 交叉信息核心技术研究院(西安)有限公司 | 支持多粒度稀疏与多模式量化的卷积神经网络的加速器 |
CN112783473A (zh) * | 2021-01-20 | 2021-05-11 | 北京工业大学 | 一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法 |
Non-Patent Citations (4)
Title |
---|
LIEN-CHIH HSU ET AL.: "ESSA: An energy-Aware bit-Serial streaming deep convolutional neural network accelerator", 《JOURNAL OF SYSTEMS ARCHITECTURE》, 31 December 2020 (2020-12-31) * |
刘畅: "深度学习加速器中矩阵向量乘部件设计", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 15 February 2020 (2020-02-15) * |
杨一晨;梁峰;张国和;何平;吴斌;高震霆;: "一种基于可编程逻辑器件的卷积神经网络协处理器设计", 西安交通大学学报, no. 07, 10 July 2018 (2018-07-10) * |
赵博然;张犁;石光明;黄蓉;徐欣冉;: "传输触发架构的可编程神经网络处理器设计", 西安电子科技大学学报, no. 04, 28 December 2017 (2017-12-28) * |
Also Published As
Publication number | Publication date |
---|---|
CN113610222B (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110852416B (zh) | 基于低精度浮点数数据表现形式的cnn硬件加速计算方法及系统 | |
CN112988657A (zh) | 用于机器学习的fpga专家处理块 | |
CN110852434B (zh) | 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置 | |
CN115934030A (zh) | 算数逻辑单元、浮点数乘法计算的方法及设备 | |
CN110413254B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110705703A (zh) | 基于脉动阵列的稀疏神经网络处理器 | |
CN110362293B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN117149130B (zh) | 一种应用于fpga嵌入式dsp的多精度浮点乘法器结构 | |
CN109543815A (zh) | 神经网络的加速方法及装置 | |
CN110554854B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN110673823A (zh) | 乘法器、数据处理方法及芯片 | |
CN111126588B (zh) | 集成电路芯片装置及相关产品 | |
CN111258544B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113610222B (zh) | 计算神经网络卷积运算的方法及系统、硬件装置 | |
CN111091189B (zh) | 集成电路芯片装置及相关产品 | |
CN113031912A (zh) | 乘法器、数据处理方法、装置及芯片 | |
CN112906863B (zh) | 一种神经元加速处理方法、装置、设备及可读存储介质 | |
CN210109789U (zh) | 数据处理器 | |
CN210006031U (zh) | 乘法器 | |
CN210006029U (zh) | 数据处理器 | |
CN110647307B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN210006030U (zh) | 数据处理器 | |
CN110688087B (zh) | 数据处理器、方法、芯片及电子设备 | |
CN111258545B (zh) | 乘法器、数据处理方法、芯片及电子设备 | |
CN113504892A (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 |