CN112783473A - 一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法 - Google Patents
一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法 Download PDFInfo
- Publication number
- CN112783473A CN112783473A CN202110071298.5A CN202110071298A CN112783473A CN 112783473 A CN112783473 A CN 112783473A CN 202110071298 A CN202110071298 A CN 202110071298A CN 112783473 A CN112783473 A CN 112783473A
- Authority
- CN
- China
- Prior art keywords
- bit
- data
- bits
- port
- calculation
- 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 21
- 238000007493 shaping process Methods 0.000 title claims description 14
- 238000004364 calculation method Methods 0.000 claims description 52
- 230000000295 complement effect Effects 0.000 claims description 11
- 230000008901 benefit Effects 0.000 abstract description 8
- 239000011159 matrix material Substances 0.000 description 13
- 235000019800 disodium phosphate Nutrition 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 238000013527 convolutional neural network Methods 0.000 description 6
- 241001442055 Vipera berus Species 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000013528 artificial neural network Methods 0.000 description 3
- 239000003086 colorant Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 241000282414 Homo sapiens Species 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法,其特点是扩展了FPGA中DSP对低位宽乘法计算的支持,使得一个DSP能够同时计算6个4Bit和3Bit整形数据输入7Bit整形数据输出的乘法运算,充分发挥了低位宽计算优势,大幅度提高计算并行度,减少资源消耗,进而提升计算速度降低功耗。
Description
技术领域
本发明涉及硬件加速数值计算领域,尤其涉及一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法。
背景技术
近年来,卷积神经网络(Convolutional Neural Network,CNN)算法在图像分类、目标检 测、语音识别和自然语言处理等众多领域相比于传统算法显示出了巨大优势,其在一些 图像识别任务上甚至超过了人类的准确率。但是主流的CNN模型包含数百万个浮点参数, 并且需要数十亿次浮点操作才能完成单个图像的计算任务。例如,AlexNet包含244MB参数,分类一张图片需要14亿次浮点运算(1.4GFLOP),VGG-16包含552MB参数,分类 一张图片需要310亿次浮点运算(31.0GFLOP)。巨大的计算量和存储量使得这些算法难以 部署应用到资源受限的移动设备、嵌入式终端上。目前主流方案是将其部署在数据中心 使用多核CPU或GPU计算,然而这样也会存在因功耗过高带来的高额电费成本压力, 或因网络条件受限导致的计算结果传递延时等问题。
为了解决上述问题当前行之有效的方法是对神经网络做模型压缩处理,其中最高效 的方法之一是神经网络量化,将卷积神经网络中的权值和激活值从原始的浮点类型量化 到低位宽整形(4Bit或3Bit),而算法精度几乎没有损失。量化后所需要的储存空间降低了87.5%以上,计算形式也从原始的浮点型运算变为了代价更小低位宽整形数据计算。
然而当前主流CNN加速计算器件,无论是CPU、GPU或者市面上的一些ASIC,都 不能对这种低位宽数据的密集计算提供很好的支持,使得低位宽量化神经网络的优势无 法得到充分地发挥。
对于这种低位宽的密集计算,FPGA有着独一无二的优势,但是FPGA加速计算的并行度取决于其中DSP的数量,现有的方法最多只能用一个DSP实现两个乘法运算,也不 能完全将这种低位宽计算优势完全发挥出来。
本发明以此为切入点扩展了FPGA中DSP对低位宽乘法计算的支持,使得低位宽计算的优势能够充分发挥。
发明内容
本发明提供了一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方 法,其特点是扩展了FPGA中DSP对低位宽乘法计算的支持,使得一个DSP能够同时计 算6个4Bit和3Bit整形数据输入7Bit整形数据输出的乘法运算,充分发挥了低位宽计算 优势,大幅度提高计算并行度,减少资源消耗,进而提升计算速度降低功耗。
本发明采取的技术方案如下:
所述的一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法实现 的计算描述如下:
输入:3个3Bit无符号整型数据a0,a1,a2,即a0,a1,a2∈{0,1,2,...,6,7}。
2个4Bit有符号整形数据w0,w1,即w0,w1∈{-8,-7,-6,...-1,0,1,...,5,6,7}。
输出:6个7Bit有符号整形数据w0a0,w0a1,w0a2,w1a0,w1a1,w1a2,即 w0a0,w0a1,w0a2,w1a0,w1a1,w1a2∈{-64,-63,-62,...,-1,0,1,...,61,62,63}。
所实现的具体计算形式如公式1所示。根据矩阵乘法计算法则其一共包含6次乘法计算。
公式1所述的计算由一个DSP单元实现,在此以Xilinx FPGA中的DSP48E2实现该功能为例,其具体包含以下步骤:
步骤1.设置DSP48E2工作在乘加模式下,其实现的计算与各端口的关系可以表示为:
P=(A+D)×B+C#(2)
其中A,D为27Bit补码输入端口,B为18Bit补码输入端口,C为48Bit补码输入端口,P为48Bit补码输出端口。
步骤2.设置数据输入,使A=w0,D=221w1,B=a0+27a1+214a2,C=0。
其中A=w0的具体操作为:将4Bit数据w0赋值到端口A的第0到第3位上,端口A的 第4到最高位赋值为w0的符号位数值。
D=221w1的具体操作为:将4Bit数据w1赋值到端口D的第21到第24位上,端口D的第25到最高位赋值为w1的符号位数值,第0到第20位置为0。
B=a0+27a1+214a2的具体操作为:将3个3Bit的数据a0,a1,a2分别赋值到B端口 的第0到第2位上、第7到第9位上和第14到第16位上,其余各个数据位置零。
C=0的具体操作为:将端口C所有数据位置零。
步骤3:使用DSP计算,计算表达式如公式3所示。
(w0+221w1)×(a0+27a1+214a2)=w0a0+27w0a1+214w0a2+221w1a0+228w1a1+235w1a2#(3)
计算完成后由P端口输出初步计算结果为:P=w0a0+27w0a1+214w0a2+ 221w1a0+228w1a1+235w1a2。
步骤4:提取计算结果,其方法如公式4所示。
其中P(α,β)表示提取P端口中第β到α位的数据(包含α,β位)并以补码格式返回,α,β 为正整数且0≤β<α≤41,表示P端口的第位数据,返回0或者1,为正整数且例如公式4中w0a1=P(13,7)+P(6)表示w0a1的值为P端口的第7到13位 的7位有符号数值加上第6位上的数值。
由上述步骤实现本发明所述方法,其定制的电路能够在一个时钟周期内完成6个乘 法计算。
本发明的有益效果是:
本发明提出的使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法实 现了使用一个DSP同时计算6个4Bit和3Bit整形数据输入7Bit整形数据输出的乘法运算,比起现有的方法最多只能用一个DSP实现两个乘法运算,大幅度提高了计算效率。
附图说明
图1为DSP48E2工作在乘加模式下示意图。
图2为使用一个DSP同时计算六个乘法示意图。
图3为基于DSP的同时计算六个乘法的低位宽乘法器电路示意图。
图4为矩阵计算处理单元(PE)示意图。
图5为加法树电路示意图。
图6为矩阵计算模块示意图。
具体实施方式
下面结合附图对本发明进行进一步说明。
一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法的具体实施 以Xilinx FPGA中的DSP48E2单元为例,其包含以下步骤:
步骤1.设置DSP48E2工作在乘加模式下,电路示意图如图1所示,其实现功能如 公式2所示。
步骤2.设置数据输入。A,B,D端口对应的数据输入格式如图2上半部分所示。
具体地,对A端口的操作为,将4Bit的输入数据w0赋值到端口A的第0到第3位上,端口A的第4到最高位赋值为w0的符号位数值。对端口D的操作为,将4Bit数据w1赋值到 端口D的第21到第24位上,端口D的第25到最高位赋值为w1的符号位数值,第0到第 20位置为0。对端口B的操作为,将3个3Bit的数据a0,a1,a2分别赋值到B端口的第0到 第2位上、第7到第9位上和第14到第16位上,其余各个数据位置零。图中每个小格 标识一个Bit位,数据部分用不同的颜色标识了出来且用“1,2,3”标识数据位,“$”符号 为对应数据的符号位,空白的小格标识0。端口C所有的Bit位上数值恒为0,所以没有在 图2中表示出来。
步骤3:使用DSP计算,得到的初步计算结果由P端口输出。
步骤4:提取计算结果。将P端口中的初步计算数据取出并以7Bit间隔分割,将分割后的数据按照图2下半部分的方式处理,得到最终计算的结果。图中用不同的颜色标 识了分割后的数据,“$”为各个数据对应的符号位。
进一步地将上述操作实现为电路如图3所示,其输入3个3Bit无符号数据和2个4Bit 有符号数据,输出6个7Bit计算结果。图中的“结果修正模块”实现图2中下半部分的功能,由5个1Bit和7Bit整形数据输入7Bit整形数据输出的加法器组成。
为了使本发明技术方案及优点更加清楚明白在此给出一种应用案例,应当理解,此 处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施实例仅仅是本发明的一种应用案例。
如图4所示使用本发明所述的低位宽乘法器所设计的用于量化卷积神经网络计算加 速中的矩阵计算的基本处理单元,其由Np个低位宽乘法器,一个数据选择器,6个加法树模块,和6个累加器组成。
所述的数据选择器连接低位宽乘法器与加法树模块,将每个低位宽乘法器计算得到 的6结果分别输出到对应的6个加法树模块中。
所述的加法树模块如图5所示,其由Np-1个加法器组成,功能是对接收的Np个数 据进行求和运算。
所述的累加器由一个加法器组成,功能是对输入数据进行累加操作。
矩阵计算的基本处理单元对数据的处理步骤为:
步骤1.Np个低位宽乘法器并行接收输入数据,进行并行乘法计算,计算完成后按图3电路所示方式每个低位宽乘法器输出6个7Bit补码数据的计算结果。
步骤2.加法树模块通过数据选择器接收输入数据,并进行求和计算。数据选择规则 是:自上而下6个加法树模块,分别对应接收每个低位宽乘法器输出的 w0a0,w0a1,w0a2,w1a0,w1a1,w1a2。
步骤3.累加器接收加法树模块的计算结果,进行累加计算后输出。
将Mp个上述的矩阵计算单元组合所得到的矩阵计算模块,如图6所示,其包含输出缓冲区,Mp个处理单元,输出缓冲区,数据排列顺序调整模块等组成部分。输入输出缓 冲区的作用是缓存一次计算所需要的数据,数据排列顺序调整模块将输出矩阵重新调整 为行主序形式。矩阵计算模块接收数据输入流,经计算后输出结果。
通过Np,Mp两个参数,可以调节矩阵计算模型的并行度,用以平衡计算速度与资源消耗。当设置Np=32,Mp=8时,消耗256个DSP单元,在250MHZ的运行频率下, 吞吐量可达768GOPS。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神 和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法,其特征在于:
所述的计算方法输入为3个3Bit无符号整型数据a0,a1,a2,和2个4Bit有符号整形数据w0,w1;输出为6个7Bit有符号整形数据w0a0,w0a1,w0a2,w1a0,w1a1,w1a2;实现的计算形式如公式1所示;
所述的使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法包括如下步骤:
步骤1.设置DSP48E2工作在乘加模式下,其实现的计算与各端口的关系可以表示为:
P=(A+D)×B+C#(2)
其中A,D为27Bit补码输入端口,B为18Bit补码输入端口,C为48Bit补码输入端口,P为48Bit补码输出端口;
步骤2.设置数据输入,使A=w0,D=221w1,B=a0+27a1+214a2,C=0;
其中A=w0的具体操作为:将4Bit数据w0赋值到端口A的第0到第3位上,端口A的第4到最高位赋值为w0的符号位数值;
D=221w1的具体操作为:将4Bit数据w1赋值到端口D的第21到第24位上,端口D的第25到最高位赋值为w1的符号位数值,第0到第20位置为0;
B=a0+27a1+214a2的具体操作为:将3个3Bit的数据a0,a1,a2分别赋值到B端口的第0到第2位上、第7到第9位上和第14到第16位上,其余各个数据位置零;
C=0的具体操作为:将端口C所有数据位置零;
步骤3:使用DSP计算,计算表达式如公式3所示;
(w0+221w1)×(a0+27a1+214a2)=w0a0+27w0a1+214w0a2+221w1a0+228w1a1+235w1a2#(3)
计算完成后由P端口输出初步计算结果为:P=w0a0+27w0a1+214w0a2+221w1a0+228w1a1+235w1a2;
步骤4:提取计算结果,其方法如公式4所示;
2.根据权利要求1所述的一种使用单个DSP单元并行计算6个4Bit和3Bit整形数据乘法运算方法,其特征在于:由所述的计算方法所定制的电路在一个时钟周期内完成计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110071298.5A CN112783473B (zh) | 2021-01-20 | 2021-01-20 | 一种使用单个dsp单元并行计算整形数据乘法运算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110071298.5A CN112783473B (zh) | 2021-01-20 | 2021-01-20 | 一种使用单个dsp单元并行计算整形数据乘法运算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112783473A true CN112783473A (zh) | 2021-05-11 |
CN112783473B CN112783473B (zh) | 2024-02-02 |
Family
ID=75757829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110071298.5A Active CN112783473B (zh) | 2021-01-20 | 2021-01-20 | 一种使用单个dsp单元并行计算整形数据乘法运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112783473B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610222A (zh) * | 2021-07-07 | 2021-11-05 | 绍兴埃瓦科技有限公司 | 计算神经网络卷积运算的方法及系统、硬件装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567178A (zh) * | 2003-07-04 | 2005-01-19 | 中国科学院微电子中心 | 新型乘法器重构算法及电路 |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
KR102037043B1 (ko) * | 2018-08-02 | 2019-10-28 | 울산과학기술원 | 세밀한 정밀도 조정이 가능한 곱셈누적기 |
US20210326118A1 (en) * | 2019-01-04 | 2021-10-21 | Tencent Technology (Shenzhen) Company Limited | Chip including multiply-accumulate module, control method, electronic device, and storage medium |
-
2021
- 2021-01-20 CN CN202110071298.5A patent/CN112783473B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1567178A (zh) * | 2003-07-04 | 2005-01-19 | 中国科学院微电子中心 | 新型乘法器重构算法及电路 |
KR102037043B1 (ko) * | 2018-08-02 | 2019-10-28 | 울산과학기술원 | 세밀한 정밀도 조정이 가능한 곱셈누적기 |
US20210326118A1 (en) * | 2019-01-04 | 2021-10-21 | Tencent Technology (Shenzhen) Company Limited | Chip including multiply-accumulate module, control method, electronic device, and storage medium |
CN109828744A (zh) * | 2019-01-18 | 2019-05-31 | 东北师范大学 | 一种基于fpga的可配置浮点向量乘法ip核 |
Non-Patent Citations (2)
Title |
---|
伞景辉, 常青: "基于FPGA的乘法器实现结构分析与仿真", 微处理机, no. 03 * |
樊迪;王健;来金梅;: "FPGA中适用于低位宽乘累加的DSP块", 复旦学报(自然科学版), no. 05 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113610222A (zh) * | 2021-07-07 | 2021-11-05 | 绍兴埃瓦科技有限公司 | 计算神经网络卷积运算的方法及系统、硬件装置 |
CN113610222B (zh) * | 2021-07-07 | 2024-02-27 | 绍兴埃瓦科技有限公司 | 计算神经网络卷积运算的方法及系统、硬件装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112783473B (zh) | 2024-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107451658B (zh) | 浮点运算定点化方法及系统 | |
Guo et al. | Software-hardware codesign for efficient neural network acceleration | |
CN110852416B (zh) | 基于低精度浮点数数据表现形式的cnn硬件加速计算方法及系统 | |
CN111832719A (zh) | 一种定点量化的卷积神经网络加速器计算电路 | |
CN111382860B (zh) | 一种lstm网络的压缩加速方法及fpga加速器 | |
CN110852434B (zh) | 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置 | |
TWI738048B (zh) | 算數框架系統及操作浮點至定點算數框架的方法 | |
CN110991631A (zh) | 一种基于fpga的神经网络加速系统 | |
CN112540743B (zh) | 面向可重构处理器的有无符号乘累加器及方法 | |
CN110110852B (zh) | 一种深度学习网络移植到fpag平台的方法 | |
CN114647399B (zh) | 一种低能耗高精度近似并行定宽乘法累加装置 | |
CN110265002A (zh) | 语音识别方法、装置、计算机设备及计算机可读存储介质 | |
CN109165006B (zh) | Softmax函数的设计优化及硬件实现方法及系统 | |
CN115982528A (zh) | 基于Booth算法的近似预编码卷积运算方法及系统 | |
CN112434801A (zh) | 一种按照比特精度进行权重拆分的卷积运算加速方法 | |
Gope et al. | Ternary mobilenets via per-layer hybrid filter banks | |
CN111091183B (zh) | 一种神经网络加速系统和方法 | |
CN110188877A (zh) | 一种神经网络压缩方法与装置 | |
CN112783473B (zh) | 一种使用单个dsp单元并行计算整形数据乘法运算方法 | |
CN110620566B (zh) | 基于随机计算与余数系统相结合的fir滤波系统 | |
CN110825346B (zh) | 一种低逻辑复杂度的无符号近似乘法器 | |
CN110555519B (zh) | 一种基于符号随机计算的低复杂度卷积神经网络架构 | |
CN116205244A (zh) | 一种数字信号处理结构 | |
CN111401533A (zh) | 一种神经网络专用计算阵列及其计算方法 | |
CN110879697A (zh) | 一种近似计算tanh函数的装置 |
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 |