CN112905954A - 一种利用fpga bram的cnn模型卷积运算加速计算方法 - Google Patents
一种利用fpga bram的cnn模型卷积运算加速计算方法 Download PDFInfo
- 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
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 45
- 239000011159 matrix material Substances 0.000 claims abstract description 48
- 238000000034 method Methods 0.000 claims description 17
- 238000013527 convolutional neural network Methods 0.000 description 15
- 230000001133 acceleration Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000019771 cognition Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
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硬件加速计算领域,特别是涉及一种针对矩阵乘法运算的加速计算方法。
背景技术
卷积神经网络(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);
(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),如下所示。
(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)
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。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114492781A (zh) * | 2022-04-02 | 2022-05-13 | 苏州浪潮智能科技有限公司 | 一种硬件加速器及数据处理方法、系统、设备、介质 |
Citations (8)
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加速方法、加速装置及计算机可读存储介质 |
-
2020
- 2020-12-28 CN CN202011574881.XA patent/CN112905954A/zh active Pending
Patent Citations (8)
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)
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)
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 |