CN113496272A - 一种基于异构平台的卷积神经网络运算方法 - Google Patents
一种基于异构平台的卷积神经网络运算方法 Download PDFInfo
- Publication number
- CN113496272A CN113496272A CN202110717674.3A CN202110717674A CN113496272A CN 113496272 A CN113496272 A CN 113496272A CN 202110717674 A CN202110717674 A CN 202110717674A CN 113496272 A CN113496272 A CN 113496272A
- Authority
- CN
- China
- Prior art keywords
- fpga
- cpu
- convolutional neural
- neural network
- layer
- 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
- 238000013527 convolutional neural network Methods 0.000 title claims abstract description 32
- 238000000034 method Methods 0.000 title claims abstract description 23
- 239000011159 matrix material Substances 0.000 claims abstract description 53
- 238000004364 calculation method Methods 0.000 claims abstract description 17
- 238000013461 design Methods 0.000 claims abstract description 12
- 238000011773 genetically engineered mouse model Methods 0.000 claims description 16
- 230000006870 function Effects 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 210000002569 neuron Anatomy 0.000 claims description 5
- 230000008569 process Effects 0.000 claims description 5
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 210000002364 input neuron Anatomy 0.000 claims description 2
- 210000004205 output neuron Anatomy 0.000 claims description 2
- 238000000638 solvent extraction Methods 0.000 claims description 2
- 230000003068 static effect Effects 0.000 claims description 2
- 238000011161 development Methods 0.000 abstract description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 210000004027 cell Anatomy 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008707 rearrangement Effects 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/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
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于异构平台的卷积神经网络运算方法,采用CPU端和FPGA端组成异构平台,划分卷积神经网络的卷积层和全连接层,FPGA端设计运算阵列计算矩阵相乘,CPU端初始化FPGA端并重排数据,CPU端读取FPGA端的运算结果,将卷积神经网络运算转变为矩阵乘法运算,将规模较大的卷积或者全连接计算转换成多个小矩阵的循环迭代计算,只需根据当前层尺寸参数与矩阵参数设计,直接更改CPU代码,完成不同规模的卷积神经网络运算,相较传统的基于单一CPU或FPGA的开发方式,提升了效率与灵活性。
Description
技术领域
本发明属于卷积神经网络技术领域,具体涉及一种异构平台技术。
背景技术
卷积神经网络是一种在图像处理有优势的前馈神经网络,随着硬件平台计算能力的不断提升,卷积神经网络在图像识别、目标检测和语音识别等方面取得了显著效果。伴随着硬件能力提升,卷积神经网络的复杂度也在不断提升,针对部分规模庞大的网络,巨大的运算量对开发实现提出了较大的挑战。
现阶段,相较传统的利用CPU处理器进行网络的推理,大多数卷积神经网络领域的研究者都会使用异构开发方式完成对网络的推理,使用异构开发方式能较大程度提高开发效率。OpenCL是一个在异构平台上编写程序的语言,异构平台可由CPU与GPU/DSP/FPGA硬件加速器组成,现阶段绝大多数成熟的异构开发平台都是采用CPU+GPU的组合。
FPGA作为一种可编程逻辑器件,其丰富的片上资源与开发的灵活性,展现出较大的优势。通过CPU+FPGA的组合,可充分利用FPGA作为可编程器件的在线重构特点,实现对不同类型与规模的卷积神经网络开发效率的提升。
发明内容
本发明为了解决现有技术存在的问题,提出了一种基于异构平台的卷积神经网络运算方法,针对不同网络类型、不同网络层存在的特征图尺寸、卷积核尺寸和神经元数量不同的特点,在只对CPU进行参数设置的情况下,完成FPGA对不同规模卷积神经网络的可重构加速计算,为了实现上述目的,本发明采用了以下技术方案。
采用CPU端和FPGA端组成异构平台,划分卷积神经网络的卷积层和全连接层,FPGA端设计运算阵列计算矩阵相乘,CPU端初始化FPGA端并重排数据,CPU端读取FPGA端的运算结果,将卷积神经网络运算转变为矩阵乘法运算。
在Linux环境以OpenCL规范,采用C++语言编译CPU端生成可执行文件、C语言编译FPGA端生成二进制比特流文件,CPU端通过PCIe总线将二进制比特流文件写入FPGA端,CPU端内存通过DMA模块读写FPGA端内存。
将卷积神经网络划分为卷积层conv1至convX、全连接层fc1至fcY,定义每个卷积层的对应参数Paraconv1~X,包括图像长H、图像宽W、通道数N、步长S、补零P、卷积核尺寸K、卷积核数M,定义每个全连接层的对应参数Parafc1~Y,包括单元数Q、神经元数R。
运算阵列采用矩阵乘法核函数GEMM-Kernel,输入两个矩阵数据,输出矩阵相乘的结果,定义静态参数BS1、BS2、BS3,单个GEMM-Kernel单次读内存的矩阵运算大小为[BS1,BS2]×[BS2,BS3],循环读取内存,完成两个矩阵相乘。
进一步的,FPGA端设计G1×G2个独立的GEMM单元,每个GEMM单元独立访问FPGA端的内存,分次将待处理矩阵的对应分块读取至本地存储,完成分块矩阵的乘法运算,累加循环读取的计算结果,写入FPGA端的内存。
替代的,各GEMM单元可同时处理[BS1,BS2]×[BS2,BS3]的小维度矩阵乘法,CPU端控制运算阵列可处理卷积层[K2×N,M]和全连接层[Q,R]的大维度矩阵乘法。
CPU端根据当前卷积神经网络的尺寸参数和FPGA端运算阵列的设计参数,配置GEMM-Kernel函数的BS1、BS2、BS3,根据当前层的参数设置将待处理数据重排为满足矩阵乘法的格式,通过DMA按顺序写入FPGA端的内存,启动FPGA端的运算阵列供GEMM单元读取。
进一步的,若卷积层的特征图尺寸较大或全连接层的输入输出神经元数较多,则CPU端划分待处理数据,分块发给不同的GEMM单元,由多个GEMM单元独立并行处理,CPU端读取每个GEMM单元的处理结果并汇总。
FPGA端每完成一层运算,CPU端读取FPGA端的运算结果,激活下一层运算并重排或划分,若下一层为卷积层,则CPU端根据补零矩阵,CPU端和FPGA端循环读取和运算,若全连接层计算完毕,则CPU端执行Softmax分类处理。
本发明的有益效果:将网络中运算需求最大的卷积层和全连接层的计算,转换成通用矩阵乘法计算,通过矩阵乘法中分块矩阵的设计思想,将规模较大的卷积或者全连接计算过程,转换成多个小矩阵的循环迭代计算,通过CPU+FPGA的异构平台,在完成FPGA的矩阵乘法阵列的设计后,针对不同规模的卷积神经网络的推理运算,只需根据当前层尺寸参数与矩阵乘法阵列参数设计,可直接通过更改CPU代码,完成不同网络模型、不同层参数的加速处理,相较传统的基于单一CPU或FPGA开发方式,提升了效率与灵活性。
附图说明
图1是异构平台结构图,图2是运算流程图,图3是GEMM运算阵列结构图,图4是数据重排原理图,图5是矩阵乘法原理图。
具体实施方式
以下结合附图对本发明的技术方案做具体的说明。
异构平台的结构如图1所示,由CPU端和FPGA端组成,CPU端的内存与FPGA端的内存可以通过DMA直接交互。
运算流程如图2所示,根据FPGA特点完成GEMM-Kernel设计,单个Kernel具备完成矩阵A和矩阵B乘法的功能,单个Kernel在单次读写内存时支持[BS1,BS2]×[BS2,BS3]大小的矩阵乘法,根据实际FPGA的资源,设计G1×G2个独立的GEMM单元,如图3所示,组成GEMM运算阵列。
通过CPU编译GEMM-Kernel模块,生成二进制比特流文件,烧写至FPGA芯片,在CPU设置目标卷积神经网络的参数,包含每个卷积层的尺寸Paraconv1~X和每个全连接层的尺寸Parafc1~Y。
卷积层根据Paraconv1~X得到单个卷积核单次滑窗需要完成的乘加元素个数为K2×N,M个卷积核同时滑窗需要完成的乘加元素个数为K2×N×M,即本次卷积层操作需完成[K2×N,M]维度的基准矩阵乘法运算。
全连接层时根据Parafc1~Y得到单个神经元操作需要完成的乘加元素个数为Q,R个神经元同时乘权需要完成的乘加元素个数为Q×R,即本次全连接层操作需完成[Q,R]维度的基准矩阵乘法运算。
CPU根据GEMM-Kernel函数的BS1、BS2、BS3参数,重排当前需要完成的矩阵乘法数据,如图4所示,重排M个卷积核的权重参数,在权重矩阵的单行按单个卷积核的通道数排列,在单列按每个卷积核的权重排列,将权重矩阵和数据矩阵同时发给FPGA,使FPGA顺序读取内存数据,以达到最大读写效率。
CPU通过满足OpenCL规范的Kernel参数设置模块,将当前需要完成的矩阵乘法的维度发给FPGA,启动GEMM阵列运算,如图5所示,从FPGA内存循环读入A11 B11、A12 B21完成满足[BS1,BS2]×[BS2,BS3]大小的矩阵乘法,累加结果,得到C11,写入FPGA内存,FPGA循环读取计算,得到整个矩阵C,分块写入内存,供CPU读取,CPU增加偏置与激活操作。
重复上述步骤直至卷积层、全连接层计算完毕,CPU执行Softmax计算得到最终的分类结果。
上述作为本发明的实施例,并不限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (9)
1.一种基于异构平台的卷积神经网络运算方法,其特征在于,包括:采用CPU端和FPGA端组成异构平台,划分卷积神经网络的卷积层和全连接层,FPGA端设计运算阵列计算矩阵相乘,CPU端初始化FPGA端并重排初始图像和中间结果的数据,CPU端读取FPGA端的运算结果,将卷积神经网络运算转变为矩阵乘法运算。
2.根据权利要求1所述的基于异构平台的卷积神经网络运算方法,其特征在于,所述采用CPU端和FPGA端组成异构平台,包括:在Linux环境以OpenCL规范,采用C++语言编译CPU端生成可执行文件、C语言编译FPGA端生成二进制比特流文件,CPU端通过PCIe总线将二进制比特流文件写入FPGA端,CPU端内存通过DMA模块读写FPGA端内存。
3.根据权利要求1所述的基于异构平台的卷积神经网络运算方法,其特征在于,所述划分卷积神经网络的卷积层和全连接层,包括:将卷积神经网络划分为卷积层conv1至convX、全连接层fc1至fcY,定义每个卷积层的对应参数Paraconv1~X,包括图像长H、图像宽W、通道数N、步长S、补零P、卷积核尺寸K、卷积核数M,定义每个全连接层的对应参数Parafc1~Y,包括单元数Q、神经元数R。
4.根据权利要求1所述的基于异构平台的卷积神经网络运算方法,其特征在于,所述FPGA端设计运算阵列计算矩阵相乘,包括:运算阵列采用矩阵乘法核函数GEMM-Kernel,输入两个矩阵数据,输出矩阵相乘的结果,定义静态参数BS1、BS2、BS3,单个GEMM-Kernel单次读内存的矩阵运算大小为[BS1,BS2]×[BS2,BS3],循环读取内存,完成两个矩阵相乘。
5.根据权利要求4所述的基于异构平台的卷积神经网络运算方法,其特征在于,所述运算阵列采用矩阵乘法核函数GEMM-Kernel,包括:FPGA端设计G1×G2个独立的GEMM单元,每个GEMM单元独立访问FPGA端的内存,分次将待处理矩阵的对应分块读取至本地存储,完成分块矩阵的乘法运算,累加循环读取的计算结果,写入FPGA端的内存。
6.根据权利要求5所述的基于异构平台的卷积神经网络运算方法,其特征在于,还包括:各GEMM单元可同时处理[BS1,BS2]×[BS2,BS3]的小维度矩阵乘法,CPU端控制运算阵列可处理卷积层[K2×N,M]和全连接层[Q,R]的大维度矩阵乘法。
7.根据权利要求4所述的基于异构平台的卷积神经网络运算方法,其特征在于,所述CPU端初始化FPGA端并重排数据,包括:CPU端根据当前卷积神经网络的尺寸参数和FPGA端运算阵列的设计参数,配置GEMM-Kernel函数的BS1、BS2、BS3,根据当前层的参数设置将待处理数据重排为满足矩阵乘法的格式,通过DMA按顺序写入FPGA端的内存,启动FPGA端的运算阵列供GEMM单元读取。
8.根据权利要求7所述的基于异构平台的卷积神经网络运算方法,其特征在于,还包括:若卷积层的特征图尺寸较大或全连接层的输入输出神经元数较多,则CPU端划分待处理数据,分块发给不同的GEMM单元,由多个GEMM单元独立并行处理,CPU端读取每个GEMM单元的处理结果并汇总。
9.根据权利要求1所述的基于异构平台的卷积神经网络运算方法,其特征在于,所述CPU端读取FPGA端的运算结果,包括:FPGA端每完成一层运算,CPU端读取FPGA端的运算结果,激活下一层运算并重排或划分,若下一层为卷积层,则CPU端根据补零矩阵,CPU端和FPGA端循环读取和运算,若全连接层计算完毕,则CPU端执行Softmax分类处理。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110505092 | 2021-05-10 | ||
CN2021105050929 | 2021-05-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113496272A true CN113496272A (zh) | 2021-10-12 |
Family
ID=77997762
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110717674.3A Pending CN113496272A (zh) | 2021-05-10 | 2021-06-28 | 一种基于异构平台的卷积神经网络运算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113496272A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114267337A (zh) * | 2022-03-02 | 2022-04-01 | 合肥讯飞数码科技有限公司 | 一种语音识别系统及实现前向运算的方法 |
CN116698411A (zh) * | 2023-06-29 | 2023-09-05 | 重庆邮电大学空间通信研究院 | 一种基于卷积神经网络的滚动轴承健康状态预警方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109376843A (zh) * | 2018-10-12 | 2019-02-22 | 山东师范大学 | 基于fpga的脑电信号快速分类方法、实现方法及装置 |
CN109447256A (zh) * | 2018-09-12 | 2019-03-08 | 上海交通大学 | 基于FPGA的Tensorflow系统加速的设计方法 |
CN109558329A (zh) * | 2018-12-10 | 2019-04-02 | 广东浪潮大数据研究有限公司 | 一种程序检测方法、装置、设备及可读存储介质 |
CN110333946A (zh) * | 2019-05-14 | 2019-10-15 | 王娅雯 | 一种基于人工智能cpu数据处理系统及方法 |
CN110399971A (zh) * | 2019-07-03 | 2019-11-01 | Oppo广东移动通信有限公司 | 一种卷积神经网络加速方法及装置、存储介质 |
-
2021
- 2021-06-28 CN CN202110717674.3A patent/CN113496272A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109447256A (zh) * | 2018-09-12 | 2019-03-08 | 上海交通大学 | 基于FPGA的Tensorflow系统加速的设计方法 |
CN109376843A (zh) * | 2018-10-12 | 2019-02-22 | 山东师范大学 | 基于fpga的脑电信号快速分类方法、实现方法及装置 |
CN109558329A (zh) * | 2018-12-10 | 2019-04-02 | 广东浪潮大数据研究有限公司 | 一种程序检测方法、装置、设备及可读存储介质 |
CN110333946A (zh) * | 2019-05-14 | 2019-10-15 | 王娅雯 | 一种基于人工智能cpu数据处理系统及方法 |
CN110399971A (zh) * | 2019-07-03 | 2019-11-01 | Oppo广东移动通信有限公司 | 一种卷积神经网络加速方法及装置、存储介质 |
Non-Patent Citations (3)
Title |
---|
YUTA等: "Real-time Image Processing Based on Service Function Chaining Using CPU-FPGA Architecture", 《COMPUTER SCIENCE》 * |
李岑等: "用于实时目标检测的FPGA神经网络加速器设计", 《微电子学与计算机》 * |
李玥琨: "基于卷积神经网络的深度学习分析平台的设计与实现", 《硕士电子期刊》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114267337A (zh) * | 2022-03-02 | 2022-04-01 | 合肥讯飞数码科技有限公司 | 一种语音识别系统及实现前向运算的方法 |
CN114267337B (zh) * | 2022-03-02 | 2022-07-19 | 合肥讯飞数码科技有限公司 | 一种语音识别系统及实现前向运算的方法 |
CN116698411A (zh) * | 2023-06-29 | 2023-09-05 | 重庆邮电大学空间通信研究院 | 一种基于卷积神经网络的滚动轴承健康状态预警方法及装置 |
CN116698411B (zh) * | 2023-06-29 | 2024-03-08 | 重庆邮电大学空间通信研究院 | 一种基于卷积神经网络的滚动轴承健康状态预警方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Wang et al. | An overview of FPGA based deep learning accelerators: challenges and opportunities | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
CN113496272A (zh) | 一种基于异构平台的卷积神经网络运算方法 | |
CN110543939A (zh) | 一种基于fpga的卷积神经网络后向训练的硬件加速实现架构 | |
Hoffmann et al. | A survey on CNN and RNN implementations | |
Zhang et al. | Pattpim: A practical reram-based dnn accelerator by reusing weight pattern repetitions | |
Moon et al. | Memory-reduced network stacking for edge-level CNN architecture with structured weight pruning | |
Zhang et al. | Implementation and optimization of the accelerator based on FPGA hardware for LSTM network | |
Samragh et al. | Codex: Bit-flexible encoding for streaming-based fpga acceleration of dnns | |
Andri et al. | Going further with winograd convolutions: Tap-wise quantization for efficient inference on 4x4 tiles | |
Wu | Review on FPGA-based accelerators in deep learning | |
Guo et al. | A high-efficiency fpga-based accelerator for binarized neural network | |
Doroshenko et al. | Automated Software Design for FPGAs on an Example of Developing a Genetic Algorithm. | |
CN117421703A (zh) | 一种深度符号回归加速器及深度符号回归方法 | |
Lien et al. | VSA: Reconfigurable vectorwise spiking neural network accelerator | |
Hu et al. | Data optimization cnn accelerator design on fpga | |
Lu et al. | SparseNN: A performance-efficient accelerator for large-scale sparse neural networks | |
Qu et al. | A coordinated model pruning and mapping framework for rram-based dnn accelerators | |
CN107273970B (zh) | 支持在线学习的卷积神经网络的可重构平台及其构建方法 | |
Sun et al. | Computation on sparse neural networks and its implications for future hardware | |
Liu et al. | Enabling efficient ReRAM-based neural network computing via crossbar structure adaptive optimization | |
US20210365828A1 (en) | Multi-pass system for emulating sampling of a plurality of qubits and methods for use therewith | |
Wen | FPGA-Based Deep Convolutional Neural Network Optimization Method | |
WO2021013117A1 (en) | Systems and methods for providing block-wise sparsity in a neural network | |
Zhao et al. | Flipping bits to share crossbars in reram-based dnn accelerator |
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 |