CN113496272A - 一种基于异构平台的卷积神经网络运算方法 - Google Patents

一种基于异构平台的卷积神经网络运算方法 Download PDF

Info

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
Application number
CN202110717674.3A
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.)
CETC 14 Research Institute
Original Assignee
CETC 14 Research Institute
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 CETC 14 Research Institute filed Critical CETC 14 Research Institute
Publication of CN113496272A publication Critical patent/CN113496272A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference 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分类处理。
CN202110717674.3A 2021-05-10 2021-06-28 一种基于异构平台的卷积神经网络运算方法 Pending CN113496272A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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广东移动通信有限公司 一种卷积神经网络加速方法及装置、存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
YUTA等: "Real-time Image Processing Based on Service Function Chaining Using CPU-FPGA Architecture", 《COMPUTER SCIENCE》 *
李岑等: "用于实时目标检测的FPGA神经网络加速器设计", 《微电子学与计算机》 *
李玥琨: "基于卷积神经网络的深度学习分析平台的设计与实现", 《硕士电子期刊》 *

Cited By (4)

* Cited by examiner, † Cited by third party
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