CN112905954A - 一种利用fpga bram的cnn模型卷积运算加速计算方法 - Google Patents

一种利用fpga bram的cnn模型卷积运算加速计算方法 Download PDF

Info

Publication number
CN112905954A
CN112905954A CN202011574881.XA CN202011574881A CN112905954A CN 112905954 A CN112905954 A CN 112905954A CN 202011574881 A CN202011574881 A CN 202011574881A CN 112905954 A CN112905954 A CN 112905954A
Authority
CN
China
Prior art keywords
bram
matrix
fpga
cnn model
convolution operation
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.)
Pending
Application number
CN202011574881.XA
Other languages
English (en)
Inventor
王志昊
李东方
陈亚莎
郦伟
沈炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Computer Technology and Applications
Original Assignee
Beijing Institute of Computer Technology and Applications
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Computer Technology and Applications filed Critical Beijing Institute of Computer Technology and Applications
Priority to CN202011574881.XA priority Critical patent/CN112905954A/zh
Publication of CN112905954A publication Critical patent/CN112905954A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)

Abstract

本发明涉及一种利用FPGA BRAM的CNN模型卷积运算加速计算方法,其中,包括:(1)将输入矩阵A和矩阵B存入FPGA的BRAM;假设输入矩阵分别为A(M*N)和B(N*P),输出矩阵为C(M*P);)并行计算矩阵C的元素Cij;当读取完成后,计算Cij,同时下一个计算单元继续读取输入数据:(3)将Cij写回BRAM,得到矩阵乘法的计算结果C(M*P)。本发明能够提高CNN模型卷积运算计算性能。

Description

一种利用FPGA BRAM的CNN模型卷积运算加速计算方法
技术领域
本发明涉及FPGA硬件加速计算领域,特别是涉及一种针对矩阵乘法运算的加速计算方法。
背景技术
卷积神经网络(Convolutional Neural Networks,CNN)模型作为一种典型的深度学习神经网络结构,受到自然视觉认知机制启发而来,在图像识别方面具有出色表现。由于实际应用场景中的数据量大幅度增加,传统的处理器计算方式已难以满足CNN计算性能的需求,现场可编程门阵列(Field Programmable Gate Array,FPGA)具有高性能、低功耗、并行化程度高的特点,适用于作为计算设备完成CNN 模型的加速计算。
CNN模型通常包含卷积、池化和全连接运算,其中卷积运算作为 CNN模型的核心计算单元之一,其计算性能对于整个CNN模型的性能至关重要。目前已有部分基于FPGA的卷积运算加速计算方法,主要是将卷积运算映射为矩阵乘法,然后利用两个矩阵不同行列相乘时运算独立的特点,借助FPGA丰富的逻辑资源,实现矩阵乘法的并行计算。然而此类方法仍然没有完全发挥FPGA的硬件并行优势。
发明内容
本发明的目的在于提供一种利用FPGA BRAM的CNN模型卷积运算加速计算方法,用于解决上述先有技术的问题。
本发明一种利用FPGA BRAM的CNN模型卷积运算加速计算方法,其中,包括:(1)将输入矩阵A和矩阵B存入FPGA的BRAM;假设输入矩阵分别为A(M*N)和B(N*P),输出矩阵为C(M*P);
Figure BDA0002863264510000021
Figure BDA0002863264510000022
Figure BDA0002863264510000023
(2)并行计算矩阵C的元素Cij;当读取完成后,按照公式(1)计算Cij,同时下一个计算单元继续读取输入数据:
Cij=ai1×b1j+ai2×b2j+…+ain×bnj (1)
(3)将Cij写回BRAM,得到矩阵乘法的计算结果C(M*P)。
根据本发明所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法的一实施例,其中,根据输入矩阵A和B的规模,为矩阵乘法运算分配计算资源。
根据本发明所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法的一实施例,其中,每一个Cij的计算过程都对应分配一个计算单元。
根据本发明所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法的一实施例,其中,利用BRAM两个端口,同时写入两个不同的矩阵C的元素。
根据本发明所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法的一实施例,其中,对每一个Cij的计算过程,都依次通过 BRAM的两个端口同时读取Ai*和B*j。
根据本发明所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法的一实施例,其中,步骤(2)依次循环处理完全部M*P个 Cij
本发明利用FPGA中包含两个端口的BRAM,并行访问内存,进一步提高计算性能。
附图说明
图1一种利用FPGA BRAM的矩阵乘法加速计算方法流程图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。
本发明一种利用FPGA BRAM的矩阵乘法加速计算方法包括:
(1)将输入矩阵A和矩阵B存入FPGA的BRAM。
一方面BRAM作为FPGA内存读写速度快,可加快计算过程的数据读取速度,另一方面BRAM包含两个读写端口,允许计算过程并行访问内存,提高计算效率。
假设输入矩阵分别为A(M*N)和B(N*P),输出矩阵为C(M*P),如下所示。
Figure BDA0002863264510000031
Figure BDA0002863264510000032
Figure BDA0002863264510000033
(2)并行计算Cij
首先,由于FPGA具有丰富的计算资源,可根据输入矩阵A、B的规模,为矩阵乘法运算分配计算资源,其中每一个Cij的计算过程都对应分配一个计算单元;
其次,针对每一个Cij的计算过程,都依次通过BRAM的两个端口同时读取A的第i行和B的第j列Ai*和B*j,以此降低数据读取产生的时间开销;
最后,当读取完成后,按照如下公式(1)计算Cij,同时下一个计算单元继续读取输入数据:
Cij=ai1×b1j+ai2×b2j+…+ain×bnj (1)
(3)将Cij写回BRAM。
这一步骤同样利用BRAM两个端口,同时写入两个Cij,降低数据写入产生的时间开销。
最终得到矩阵乘法的计算结果C(M*P)。
如图1所示,一种利用FPGA BRAM的矩阵乘法加速计算方法, 包括以下步骤:
步骤1:用户输入矩阵A和矩阵B,并将两个矩阵写入FPGA BRAM,同时根据矩阵A和矩阵B的规模,为后续矩阵乘法分配FPGA 计算资源,一个Cij对应一个计算单元。
步骤2:针对步骤1写入到BRAM中的矩阵A和矩阵B,Cij对应的矩阵乘法计算单元从BRAM两个端口中同时读取Ai*和B*j,依次循环处理完全部M*P个Cij
步骤3:针对步骤2中的Cij计算单元,若读取完输入矩阵数据,则依据上文公式(1)计算Cij
步骤4:针对步骤3计算结果,每两个Cij为一组,同时写入BRAM,直到全部Cij计算并写入完成,流程结束。
相比于目前已有的基于FPGA的矩阵乘法加速计算方法,本发明方法在矩阵乘法的计算过程中,充分利用BRAM的两个读写端口,使得在从BRAM读取输入矩阵数据或是往BRAM写入最终计算结果数据时,读写数据的时间开销仅为传统加速计算方法的一半,提高矩阵乘法整体的计算效率。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

Claims (6)

1.一种利用FPGA BRAM的CNN模型卷积运算加速计算方法,其特征在于,包括:
(1)将输入矩阵A和矩阵B存入FPGA的BRAM;
假设输入矩阵分别为A(M*N)和B(N*P),输出矩阵为C(M*P);
Figure FDA0002863264500000011
Figure FDA0002863264500000012
Figure FDA0002863264500000013
(2)并行计算矩阵C的元素Cij
当读取完成后,按照公式(1)计算Cij,同时下一个计算单元继续读取输入数据:
Cij=ai1×b1j+ai2×b2j+…+ain×bnj (1)
(3)将Cij写回BRAM,得到矩阵乘法的计算结果C(M*P)。
2.如权利要求1所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法,其特征在于,根据输入矩阵A和B的规模,为矩阵乘法运算分配计算资源。
3.如权利要求2所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法,其特征在于,每一个Cij的计算过程都对应分配一个计算单元。
4.如权利要求1所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法,其特征在于,利用BRAM两个端口,同时写入两个不同的矩阵C的元素。
5.如权利要求1所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法,其特征在于,对每一个Cij的计算过程,都依次通过BRAM的两个端口同时读取Ai*和B*j。
6.如权利要求1所述的利用FPGA BRAM的CNN模型卷积运算加速计算方法,其特征在于,步骤(2)依次循环处理完全部M*P个Cij
CN202011574881.XA 2020-12-28 2020-12-28 一种利用fpga bram的cnn模型卷积运算加速计算方法 Pending CN112905954A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011574881.XA CN112905954A (zh) 2020-12-28 2020-12-28 一种利用fpga bram的cnn模型卷积运算加速计算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011574881.XA CN112905954A (zh) 2020-12-28 2020-12-28 一种利用fpga bram的cnn模型卷积运算加速计算方法

Publications (1)

Publication Number Publication Date
CN112905954A true CN112905954A (zh) 2021-06-04

Family

ID=76111608

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011574881.XA Pending CN112905954A (zh) 2020-12-28 2020-12-28 一种利用fpga bram的cnn模型卷积运算加速计算方法

Country Status (1)

Country Link
CN (1) CN112905954A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114492781A (zh) * 2022-04-02 2022-05-13 苏州浪潮智能科技有限公司 一种硬件加速器及数据处理方法、系统、设备、介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609715A (zh) * 2009-05-11 2009-12-23 中国人民解放军国防科学技术大学 行列访问端口分离的矩阵寄存器文件
CN102156676A (zh) * 2010-02-10 2011-08-17 富士通株式会社 高速缓存系统
CN104572011A (zh) * 2014-12-22 2015-04-29 上海交通大学 基于fpga的通用矩阵定点乘法器及其计算方法
CN104899182A (zh) * 2015-06-09 2015-09-09 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN109447893A (zh) * 2019-01-28 2019-03-08 深兰人工智能芯片研究院(江苏)有限公司 一种卷积神经网络fpga加速中图像前处理方法及装置
CN110647719A (zh) * 2019-09-20 2020-01-03 西安电子科技大学 基于fpga的三维fft计算装置
CN110704022A (zh) * 2019-07-02 2020-01-17 甘肃省科学院传感技术研究所 向量与矩阵的fpga并行快速乘法器模块及其计算方法
CN111626405A (zh) * 2020-05-15 2020-09-04 Tcl华星光电技术有限公司 一种cnn加速方法、加速装置及计算机可读存储介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101609715A (zh) * 2009-05-11 2009-12-23 中国人民解放军国防科学技术大学 行列访问端口分离的矩阵寄存器文件
CN102156676A (zh) * 2010-02-10 2011-08-17 富士通株式会社 高速缓存系统
CN104572011A (zh) * 2014-12-22 2015-04-29 上海交通大学 基于fpga的通用矩阵定点乘法器及其计算方法
CN104899182A (zh) * 2015-06-09 2015-09-09 中国人民解放军国防科学技术大学 一种支持可变分块的矩阵乘加速方法
CN109447893A (zh) * 2019-01-28 2019-03-08 深兰人工智能芯片研究院(江苏)有限公司 一种卷积神经网络fpga加速中图像前处理方法及装置
CN110704022A (zh) * 2019-07-02 2020-01-17 甘肃省科学院传感技术研究所 向量与矩阵的fpga并行快速乘法器模块及其计算方法
CN110647719A (zh) * 2019-09-20 2020-01-03 西安电子科技大学 基于fpga的三维fft计算装置
CN111626405A (zh) * 2020-05-15 2020-09-04 Tcl华星光电技术有限公司 一种cnn加速方法、加速装置及计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
QINGGANG WANG 等: "A Conflict-free Scheduler for High-performance Graph Processing on Multi-pipeline FPGAS", 《ACM TRANSACTIONS ON ARCHITECTURE AND CODE OPTIMIZATION》, vol. 17, no. 2, pages 1 - 5 *
沈俊忠;肖涛;乔寓然;杨乾明;文梅;: "一种支持优化分块策略的矩阵乘加速器设计", 计算机工程与科学, no. 09, pages 1748 - 1753 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114492781A (zh) * 2022-04-02 2022-05-13 苏州浪潮智能科技有限公司 一种硬件加速器及数据处理方法、系统、设备、介质

Similar Documents

Publication Publication Date Title
US20220012593A1 (en) Neural network accelerator and neural network acceleration method based on structured pruning and low-bit quantization
US20180157969A1 (en) Apparatus and Method for Achieving Accelerator of Sparse Convolutional Neural Network
US11763156B2 (en) Neural network compression based on bank-balanced sparsity
CN104915322B (zh) 一种卷积神经网络硬件加速方法
US11775430B1 (en) Memory access for multiple circuit components
US20210065005A1 (en) Systems and methods for providing vector-wise sparsity in a neural network
CN112840356B (zh) 运算加速器、处理方法及相关设备
WO2022037257A1 (zh) 卷积计算引擎、人工智能芯片以及数据处理方法
CN111178518A (zh) 一种基于fpga的软硬件协同的加速方法
CN110796235B (zh) 卷积神经网络Valid卷积的向量化实现方法
CN110796236B (zh) 多样本多通道卷积神经网络池化的向量化实现方法
CN113051216B (zh) 一种基于FPGA加速的MobileNet-SSD目标检测装置及方法
CN110807170B (zh) 多样本多通道卷积神经网络Same卷积向量化实现方法
CN107256424A (zh) 三值权重卷积网络处理系统及方法
CN111105023A (zh) 数据流重构方法及可重构数据流处理器
CN113792621A (zh) 一种基于fpga的目标检测加速器设计方法
CN113762493A (zh) 神经网络模型的压缩方法、装置、加速单元和计算系统
CN109993293B (zh) 一种适用于堆叠式沙漏网络的深度学习加速器
CN112200310B (zh) 智能处理器、数据处理方法及存储介质
CN112905954A (zh) 一种利用fpga bram的cnn模型卷积运算加速计算方法
WO2022047802A1 (en) Processing-in-memory device and data processing method thereof
CN113222129A (zh) 一种基于多级缓存循环利用的卷积运算处理单元及系统
KR20230081697A (ko) 팽창 컨볼루션 계산 가속화 방법 및 장치
CN109800867B (zh) 一种基于fpga片外存储器的数据调用方法
CN116185937B (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