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

技术编号:30345990 阅读:22 留言:0更新日期:2021-10-12 23:33
本发明专利技术公开了一种基于异构平台的卷积神经网络运算方法,采用CPU端和FPGA端组成异构平台,划分卷积神经网络的卷积层和全连接层,FPGA端设计运算阵列计算矩阵相乘,CPU端初始化FPGA端并重排数据,CPU端读取FPGA端的运算结果,将卷积神经网络运算转变为矩阵乘法运算,将规模较大的卷积或者全连接计算转换成多个小矩阵的循环迭代计算,只需根据当前层尺寸参数与矩阵参数设计,直接更改CPU代码,完成不同规模的卷积神经网络运算,相较传统的基于单一CPU或FPGA的开发方式,提升了效率与灵活性。提升了效率与灵活性。提升了效率与灵活性。

【技术实现步骤摘要】
一种基于异构平台的卷积神经网络运算方法


[0001]本专利技术属于卷积神经网络
,具体涉及一种异构平台技术。

技术介绍

[0002]卷积神经网络是一种在图像处理有优势的前馈神经网络,随着硬件平台计算能力的不断提升,卷积神经网络在图像识别、目标检测和语音识别等方面取得了显著效果。伴随着硬件能力提升,卷积神经网络的复杂度也在不断提升,针对部分规模庞大的网络,巨大的运算量对开发实现提出了较大的挑战。
[0003]现阶段,相较传统的利用CPU处理器进行网络的推理,大多数卷积神经网络领域的研究者都会使用异构开发方式完成对网络的推理,使用异构开发方式能较大程度提高开发效率。OpenCL是一个在异构平台上编写程序的语言,异构平台可由CPU与GPU/DSP/FPGA硬件加速器组成,现阶段绝大多数成熟的异构开发平台都是采用CPU+GPU的组合。
[0004]FPGA作为一种可编程逻辑器件,其丰富的片上资源与开发的灵活性,展现出较大的优势。通过CPU+FPGA的组合,可充分利用FPGA作为可编程器件的在线重构特点,实现对不同类型与规模的卷积神经网络开发效率的提升。

技术实现思路

[0005]本专利技术为了解决现有技术存在的问题,提出了一种基于异构平台的卷积神经网络运算方法,针对不同网络类型、不同网络层存在的特征图尺寸、卷积核尺寸和神经元数量不同的特点,在只对CPU进行参数设置的情况下,完成FPGA对不同规模卷积神经网络的可重构加速计算,为了实现上述目的,本专利技术采用了以下技术方案。
[0006]采用CPU端和FPGA端组成异构平台,划分卷积神经网络的卷积层和全连接层,FPGA端设计运算阵列计算矩阵相乘,CPU端初始化FPGA端并重排数据,CPU端读取FPGA端的运算结果,将卷积神经网络运算转变为矩阵乘法运算。
[0007]在Linux环境以OpenCL规范,采用C++语言编译CPU端生成可执行文件、C语言编译FPGA端生成二进制比特流文件,CPU端通过PCIe总线将二进制比特流文件写入FPGA端,CPU端内存通过DMA模块读写FPGA端内存。
[0008]将卷积神经网络划分为卷积层conv1至conv
X
、全连接层fc1至fc
Y
,定义每个卷积层的对应参数Para
conv1~X
,包括图像长H、图像宽W、通道数N、步长S、补零P、卷积核尺寸K、卷积核数M,定义每个全连接层的对应参数Para
fc1~Y
,包括单元数Q、神经元数R。
[0009]运算阵列采用矩阵乘法核函数GEMM

Kernel,输入两个矩阵数据,输出矩阵相乘的结果,定义静态参数BS1、BS2、BS3,单个GEMM

Kernel单次读内存的矩阵运算大小为[BS1,BS2]×
[BS2,BS3],循环读取内存,完成两个矩阵相乘。
[0010]进一步的,FPGA端设计G1×
G2个独立的GEMM单元,每个GEMM单元独立访问FPGA端的内存,分次将待处理矩阵的对应分块读取至本地存储,完成分块矩阵的乘法运算,累加循环读取的计算结果,写入FPGA端的内存。
[0011]替代的,各GEMM单元可同时处理[BS1,BS2]×
[BS2,BS3]的小维度矩阵乘法,CPU端控制运算阵列可处理卷积层[K2×
N,M]和全连接层[Q,R]的大维度矩阵乘法。
[0012]CPU端根据当前卷积神经网络的尺寸参数和FPGA端运算阵列的设计参数,配置GEMM

Kernel函数的BS1、BS2、BS3,根据当前层的参数设置将待处理数据重排为满足矩阵乘法的格式,通过DMA按顺序写入FPGA端的内存,启动FPGA端的运算阵列供GEMM单元读取。
[0013]进一步的,若卷积层的特征图尺寸较大或全连接层的输入输出神经元数较多,则CPU端划分待处理数据,分块发给不同的GEMM单元,由多个GEMM单元独立并行处理,CPU端读取每个GEMM单元的处理结果并汇总。
[0014]FPGA端每完成一层运算,CPU端读取FPGA端的运算结果,激活下一层运算并重排或划分,若下一层为卷积层,则CPU端根据补零矩阵,CPU端和FPGA端循环读取和运算,若全连接层计算完毕,则CPU端执行Softmax分类处理。
[0015]本专利技术的有益效果:将网络中运算需求最大的卷积层和全连接层的计算,转换成通用矩阵乘法计算,通过矩阵乘法中分块矩阵的设计思想,将规模较大的卷积或者全连接计算过程,转换成多个小矩阵的循环迭代计算,通过CPU+FPGA的异构平台,在完成FPGA的矩阵乘法阵列的设计后,针对不同规模的卷积神经网络的推理运算,只需根据当前层尺寸参数与矩阵乘法阵列参数设计,可直接通过更改CPU代码,完成不同网络模型、不同层参数的加速处理,相较传统的基于单一CPU或FPGA开发方式,提升了效率与灵活性。
附图说明
[0016]图1是异构平台结构图,图2是运算流程图,图3是GEMM运算阵列结构图,图4是数据重排原理图,图5是矩阵乘法原理图。
具体实施方式
[0017]以下结合附图对本专利技术的技术方案做具体的说明。
[0018]异构平台的结构如图1所示,由CPU端和FPGA端组成,CPU端的内存与FPGA端的内存可以通过DMA直接交互。
[0019]运算流程如图2所示,根据FPGA特点完成GEMM

Kernel设计,单个Kernel具备完成矩阵A和矩阵B乘法的功能,单个Kernel在单次读写内存时支持[BS1,BS2]×
[BS2,BS3]大小的矩阵乘法,根据实际FPGA的资源,设计G1×
G2个独立的GEMM单元,如图3所示,组成GEMM运算阵列。
[0020]通过CPU编译GEMM

Kernel模块,生成二进制比特流文件,烧写至FPGA芯片,在CPU设置目标卷积神经网络的参数,包含每个卷积层的尺寸Para
conv1~X
和每个全连接层的尺寸Para
fc1~Y

[0021]卷积层根据Para
conv1~X
得到单个卷积核单次滑窗需要完成的乘加元素个数为K2×
N,M个卷积核同时滑窗需要完成的乘加元素个数为K2×
N
×
M,即本次卷积层操作需完成[K2×
N,M]维度的基准矩阵乘法运算。
[0022]全连接层时根据Para
fc1~Y
得到单个神经元操作需要完成的乘加元素个数为Q,R个神经元同时乘权需要完成的乘加元素个数为Q
×
R,即本次全连接层操作需完成[Q,R]维度的基准矩阵乘法运算。
[0023]CPU根据GEMM

Kernel函数的BS1、BS2、BS3参数,重排当前需要完成的矩阵乘法数据,如图4所示,重排M个卷积核的权重参本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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至conv
X
、全连接层fc1至fc
Y
,定义每个卷积层的对应参数Para
conv1~X
,包括图像长H、图像宽W、通道数N、步长S、补零P、卷积核尺寸K、卷积核数M,定义每个全连接层的对应参数Para
fc1~Y
,包括单元数Q、神经元数R。4.根据权利要求1所述的基于异构平台的卷积神经网络运算方法,其特征在于,所述FPGA端设计运算阵列计算矩阵相乘,包括:运算阵列采用矩阵乘法核函数GEMM

Kernel,输入两个矩阵数据,输出矩阵相乘的结果,定义静态参数BS1、BS2、BS3,单个GEMM

Kernel单次读内存的矩阵运算大小为[BS1,BS2]
×
[BS2,BS3],循环读取内存,完成两个矩阵相乘。5.根据权利要求4所述的基于异构平台的卷积神经网络运...

【专利技术属性】
技术研发人员:陈子洋凌元
申请(专利权)人:中国电子科技集团公司第十四研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1