CN110110844B - 基于OpenCL的卷积神经网络并行处理方法 - Google Patents

基于OpenCL的卷积神经网络并行处理方法 Download PDF

Info

Publication number
CN110110844B
CN110110844B CN201910331464.3A CN201910331464A CN110110844B CN 110110844 B CN110110844 B CN 110110844B CN 201910331464 A CN201910331464 A CN 201910331464A CN 110110844 B CN110110844 B CN 110110844B
Authority
CN
China
Prior art keywords
matrix
product
opencl
parallel
recombination
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.)
Active
Application number
CN201910331464.3A
Other languages
English (en)
Other versions
CN110110844A (zh
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.)
Xidian University
Original Assignee
Xidian University
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 Xidian University filed Critical Xidian University
Priority to CN201910331464.3A priority Critical patent/CN110110844B/zh
Publication of CN110110844A publication Critical patent/CN110110844A/zh
Application granted granted Critical
Publication of CN110110844B publication Critical patent/CN110110844B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

Abstract

本发明提出了一种基于OpenCL的卷积神经网络并行处理方法,主要解决现有卷积神经网络并行化处理中模型复杂度高、运行速度缓慢的问题。实现步骤为:获取图像数据矩阵的重组矩阵;获取权值矩阵;分块并行计算权值矩阵与重组矩阵的乘积;对乘积矩阵进行并行批量归一化;输出特征值矩阵。本发明利用计算机图形处理器GPU中大量的并行计算单元,将卷积神经网络的卷积过程转化为大型矩阵乘法,分块并行计算权值矩阵与重组矩阵的乘积,简化了卷积层数据的处理过程,优化了数据的访存方式,提高了数据的复用率,使得本发明大幅提高了卷积神经网络的运行速度。

Description

基于OpenCL的卷积神经网络并行处理方法
技术领域
本发明属于计算机技术领域,更进一步涉及计算机视觉和深度学习技术领域中的一种使用开放计算语言OpenCL(Open Computing Language)的卷积神经网络并行处理方法。本发明可以实现对卷积神经网络的图像卷积过程进行加速,可用于计算机视觉的实时目标检测。
背景技术
卷积神经网络的卷积过程需要进行大量的浮点运算,当卷积神经网络的层数不断加深时,CPU的执行效率远远不能满足要求。而GPU提供了大量的并行计算单元,OpenCL可以在主机端对GPU进行编程,利用CPU+GPU的异构架构可以实现对卷积神经网络的图像卷积过程进行加速。
长沙马沙电子科技有限公司在其申请的专利文献“一种基于大规模高性能集群的卷积神经网络并行处理方法”(申请日:2014年11月21日,申请号:2014106748603,公开号:CN104463324 A)中公开了一种基于大规模高性能集群的卷积神经网络并行处理方法。该方法首先将要训练的网络模型构建出多个副本,每个副本的模型参数均相同,副本的个数与高性能集群的节点数相同,每个节点上分布一个模型副本;选定一个节点作为主节点,负责模型参数的广播与收集。其次,将训练集分为若干子集,每次将训练子集分发给除主节点之外的其余子节点,共同进行参数梯度的计算,并将梯度值累计,累计值用来更新主节点模型参数,将更新后的模型参数广播给各个子节点,直到模型训练终止。该方法存在不足的是,通过构建网络模型副本的方法实现卷积神经网络的并行处理,并行化程度依赖于集群的节点数,模型复杂度高,可移植性差,成本较高,大大限制了其应用范围。
西安电子科技大学在其申请的专利文献“基于OpenCL标准的卷积神经网络加速方法”(申请日:2017年7月5日,申请号:201710543986.0,公开号:CN107341127 A)中公开了一种基于OpenCL标准的卷积神经网络加速方法。该方法首先将原始的三维图像数据以及权重数据到GPU全局内存中,再将图像数据传输到GPU的局部内存中,初始化参数、构造激活函数后计算卷积神经网络的图像数据,最后将计算结果传回主机内存。该方法的不足之处是,该方法是将数据加载至GPU局部内存后进行卷积运算,数据的复用率较低,在访存数据过程中需要耗费大量时间,导致卷积层运行速度慢。
发明内容
本发明的目的是针对上述现有技术的不足,提出一种基于OpenCL的卷积神经网络并行处理方法,用于解决现有卷积神经网络并行化处理中模型复杂度高、运行速度缓慢的问题。
实现本发明目的的思路是,根据图像卷积原理,在GPU中将图像数据矩阵转化为一个二维的重组矩阵,将所有卷积核的权值组成一个二维的权值矩阵,将图像的卷积过程转化为权值矩阵与重组矩阵相乘的过程,再利用矩阵分块乘法的原理将矩阵分块并加载至OpenCL工作项的私有内存中进行相乘,对分块矩阵的乘积进行累加得到重组矩阵和权值矩阵的乘积矩阵。然后,在GPU中对乘积矩阵进行并行批量归一化。最后,使用带泄漏的线性整流函数将乘积矩阵中每个元素进行激活,得到图像的特征值矩阵。
本发明的具体步骤如下:
(1)获取图像数据矩阵的重组矩阵:
(1a)在主机内存中读取图像数据矩阵;
(1b)在GPU全局内存中创建图像数据矩阵缓存对象,将图像数据矩阵从主机内存传输至图像数据矩阵缓存对象中;
(1c)对图像数据矩阵进行并行组合重排,获得一个二维的重组矩阵;
(2)获取权值矩阵:
(2a)在主机内存中分别读取卷积核的数量和所有卷积核的权值,将所读取的所有卷积核的权值依次按行排列,组成权值矩阵;
(2b)在GPU全局内存中创建权值矩阵缓存对象,将权值矩阵从主机内存传输至权值矩阵缓存对象中;
(3)分块并行计算权值矩阵与重组矩阵的乘积:
(3a)创建OpenCL矩阵乘法内核,设置OpenCL矩阵乘法内核的二维全局工作项总数和二维工作组大小,并行执行OpenCL矩阵乘法内核的所有工作项;
(3b)以64×64个数据元素的大小,将权值矩阵不重叠地均匀分块,每一块构成一个权值共享矩阵,将重组矩阵不重叠地均匀分块,每一块构成一个重组共享矩阵,在GPU中并行地将所有权值共享矩阵和重组共享矩阵从全局内存传输至工作组的局部内存;
(3c)以8×4个数据元素的大小,将权值共享矩阵不重叠地均匀分块,每一块构成一个权值因子矩阵,将重组共享矩阵不重叠地均匀分块,每一块构成一个重组因子矩阵,在GPU中并行地将所有权值因子矩阵和重组因子矩阵从局部内存传输至工作项的私有内存;
(3d)在每个并行的工作项中,将权值因子矩阵和重组因子矩阵相乘,将乘积累加后组成乘积分块矩阵;
(3e)在GPU全局内存中创建乘积矩阵缓存对象,将每个工作项中的乘积分块矩阵组合成完整的乘积矩阵,并行地将乘积矩阵从私有内存中传输至乘积矩阵缓存对象中;
(4)对乘积矩阵进行并行批量归一化:
(4a)创建OpenCL批量均方内核,将OpenCL批量均方内核的一维全局工作项数设置为乘积矩阵行数的512倍,将一维工作组大小设置为512,并行执行OpenCL批量均方内核的所有工作项;
(4b)在GPU中并行地计算批量乘积矩阵中每行的均值和每行的方差;
(4c)创建OpenCL批量归一化内核,将OpenCL批量归一化内核的一维全局工作项总数设置为批量乘积矩阵的总数与乘积矩阵行数和列数的乘积,将一维工作组大小设置为512,并行执行OpenCL批量归一化内核的所有工作项;
(4d)在GPU中并行地将乘积矩阵进行批量归一化;
(5)输出特征值矩阵:
(5a)使用带泄漏的线性整流函数,构造OpenCL激活内核,计算批量乘积矩阵的总数与乘积矩阵行数和列数的乘积,将该乘积设置为OpenCL激活内核的一维全局工作项的总数,将一维工作组大小设置为512;
(5b)利用带泄漏的线性整流函数,在GPU中将乘积矩阵中的每个元素并行地进行激活,得到特征值矩阵;
(5c)将GPU全局内存中的特征值矩阵传输回主机内存,输出特征值矩阵和运行时间。
本发明与现有的技术相比具有以下优点:
第一,本发明根据图像卷积原理,在GPU中将图像数据矩阵转化为一个二维的重组矩阵,将所有卷积核的权值组成一个二维的权值矩阵,将图像的卷积过程转化为权值矩阵与重组矩阵相乘的过程,简化了卷积层数据的处理过程,克服了现有技术中采用大规模高性能集群并行处理卷积神经网络时结构复杂的问题,扩大了本发明的适用范围。
第二,本发明利用计算机图形处理器GPU中大量的并行计算单元,分块并行计算权值矩阵与重组矩阵的乘积,优化了数据的访存方式,提高了数据的复用率,克服了现有技术中将数据加载至GPU局部内存后进行卷积运算,数据的复用率较低的问题,使得本发明大幅提高了卷积神经网络的运行速度。
附图说明
图1为本发明的流程图;
图2为本发明的仿真1的结果图。
具体实施方式
下面结合附图对本发明做进一步的描述。
参照附图1,对本发明的具体步骤进一步的描述。
步骤1,获取图像数据矩阵的重组矩阵。
在主机内存中读取图像数据矩阵。
在GPU全局内存中创建图像数据矩阵缓存对象,将图像数据矩阵从主机内存传输至图像数据矩阵缓存对象中。
根据卷积核的尺寸和图像数据矩阵的通道数计算重组矩阵的行数,对图像数据矩阵进行并行组合重排,获得一个二维的重组矩阵,重组矩阵的大小为K×N。
所述并行组合重排的具体步骤如下:
第1步,按照下式,计算扩展圈数p,将图像数据矩阵中每一个二维特征矩阵边缘扩展p圈,在所有扩展的位置填充数据0:
p=(k-1)/2
其中,p表示扩展圈数,k表示卷积核的尺寸。
第2步,按照下式,计算二维重组矩阵的列数:
N=[(h+2×p-k)/s+1]×[(w+2×p-k)/s+1]
其中,N表示二维重组矩阵的列数,h表示图像数据矩阵的高度,s表示卷积滑动的步长,w表示图像数据矩阵的宽度。
第3步,按照下式,计算二维重组矩阵的行数:
K=d×k2
其中,K表示二维重组矩阵的行数,d表示图像数据矩阵的通道数。
第4步,创建OpenCL矩阵变换内核,将OpenCL矩阵变换内核的全局工作项数设置为d×N,工作组大小设置为512。
第5步,在GPU中创建重组矩阵缓存对象,并行执行OpenCL矩阵变换内核,每个工作项将k2个数据元素写入重组矩阵缓存对象,获得一个二维的重组矩阵。
步骤2,获取权值矩阵。
在主机内存中分别读取卷积核的数量和所有卷积核的权值,将所读取的所有卷积核的权值依次按行排列,组成权值矩阵。权值矩阵的大小为M×K,其中M为卷积核的总数,K为重组矩阵的行数。
在GPU全局内存中创建权值矩阵缓存对象,将权值矩阵从主机内存传输至权值矩阵缓存对象中。
步骤3,分块并行计算权值矩阵与重组矩阵的乘积。
创建OpenCL矩阵乘法内核,设置OpenCL矩阵乘法内核的二维全局工作项总数和二维工作组大小,并行执行OpenCL矩阵乘法内核的所有工作项。
所述设置OpenCL矩阵乘法内核的二维全局工作项总数和二维工作组大小的具体步骤如下:
第1步,按照下式,计算并设置OpenCL矩阵乘法内核二维工作组的大小:
Figure GDA0002617390250000051
其中,WNN表示OpenCL矩阵乘法内核二维工作组第一维的大小,TSN表示重组共享矩阵第一维的大小,取值为64,PWN表示乘积分块矩阵第一维的大小,取值为4,WNN表示二维工作组第二维的大小,TSM表权值共享矩阵第二维的大小,取值为64,PWM表示乘积分块矩阵第二维的大小,取值为8;
第2步,按照下式,计算并设置OpenCL矩阵乘法内核二维全局工作项的总数:
G1=(N+TSN-1)/TSN*WNN
G2=(M+TSM-1)/TSM*WNM
其中,G1表示OpenCL矩阵乘法内核二维全局工作项第一维度的总数,N表示重组矩阵的列数,G2表示二维全局工作项第二维度的总数,M表示权值矩阵的行数。
以64×64个数据元素的大小,将权值矩阵不重叠地均匀分块,每一块构成一个权值共享矩阵,将重组矩阵不重叠地均匀分块,每一块构成一个重组共享矩阵,在GPU中并行地将所有权值共享矩阵和重组共享矩阵从全局内存传输至工作组的局部内存。
以8×4个数据元素的大小,将权值共享矩阵不重叠地均匀分块,每一块构成一个权值因子矩阵,将重组共享矩阵不重叠地均匀分块,每一块构成一个重组因子矩阵,在GPU中并行地将所有权值因子矩阵和重组因子矩阵从局部内存传输至工作项的私有内存。
在每个并行的工作项中,将权值因子矩阵和重组因子矩阵相乘,将乘积累加后组成乘积分块矩阵,乘积分块矩阵的大小为8×4,在分块矩阵和重组矩阵边缘不满足分块大小的情况下将所处工作项计算的乘积分块矩阵的大小调整为1×1。
在GPU全局内存中创建乘积矩阵缓存对象,将每个工作项中的乘积分块矩阵组合成完整的乘积矩阵,并行地将乘积矩阵从私有内存中传输至乘积矩阵缓存对象中。
步骤4,对乘积矩阵进行并行批量归一化。
创建OpenCL批量均方内核,将OpenCL批量均方内核的一维全局工作项数设置为乘积矩阵行数的512倍,将一维工作组大小设置为512,并行执行OpenCL批量均方内核的所有工作项。
在GPU中并行地计算批量乘积矩阵中每行的均值和每行的方差。
所述在GPU中并行地计算批量乘积矩阵中每行的均值和每行的方差是由下述公式计算得到的:
Figure GDA0002617390250000071
Figure GDA0002617390250000072
其中,μk表示批量乘积矩阵中全部乘积矩阵所有第k行的均值,m表示批量乘积矩阵中乘积矩阵的总数,n表示乘积矩阵的列的总数,xi,k,j表示第i个乘积矩阵中第k行的第j列的值,
Figure GDA0002617390250000073
表示批量乘积矩阵中全部乘积矩阵所有第k行的方差。
创建OpenCL批量归一化内核,将OpenCL批量归一化内核的一维全局工作项总数设置为批量乘积矩阵的总数与乘积矩阵行数和列数的乘积,将一维工作组大小设置为512,并行执行OpenCL批量归一化内核的所有工作项。
在GPU中并行地将乘积矩阵进行批量归一化。
所述在GPU中并行地将乘积矩阵进行批量归一化是由下述公式实现的:
Figure GDA0002617390250000074
其中,
Figure GDA0002617390250000075
表示批量归一化后第i个乘积矩阵中第k行的第j列的值,ε表示一个防止分母为0的极小正数,其取值为0.00001。
步骤5,输出特征值矩阵。
使用带泄漏的线性整流函数,构造OpenCL激活内核,计算批量乘积矩阵的总数与乘积矩阵行数和列数的乘积,将该乘积设置为OpenCL激活内核的一维全局工作项的总数,将一维工作组大小设置为512。
所述带泄漏的线性整流函数如下:
Figure GDA0002617390250000076
其中,f(x)表示带泄漏的线性整流函数的输出值,x表示卷积结果矩阵中元素的数值,k∈(0,1)是一个常数,取值为0.1。
利用带泄漏的线性整流函数,在GPU中将乘积矩阵中的每个元素并行地进行激活,得到特征值矩阵。
将GPU全局内存中的特征值矩阵传输回主机内存,输出特征值矩阵和运行时间。
下面结合仿真实验对本发明的效果做进一步说明。
1.仿真实验条件:
本发明仿真实验的硬件测试平台是:CPU为intel Core i5-6500,主频为3.2GHz,内存16GB,GPU为NVIDIA TITAN Xp,显存为12GB;
软件平台是:Ubuntu 16.04 LTS,64位操作系统,gcc 5.4.0,OpenCL 1.2。
2.仿真实验内容及其结果分析:
本发明的仿真实验有两个。
本发明的第一个仿真实验是采用本发明的方法和两个现有技术来测试计算矩阵乘法结果的速度。
在本发明的仿真实验1中所采用的两个现有技术是指:
第一个是传统的、在工程技术中常用的矩阵相乘并行计算方法,该方法将两个矩阵传输至GPU全局内存后,每个工作项计算乘积结果矩阵中的一个元素。
第二个是西安电子科技大学在其申请专利文献“基于OpenCL标准的卷积神经网络加速方法”(申请日:2017年7月5日,申请号:201710543986.0,公开号:CN107341127 A)中使用的将矩阵分块传输至GPU局部内存后进行矩阵乘法的方法。
本发明仿真实验1的结果如图2所示,图2中横坐标表示OpenCL矩阵乘法内核所计算的矩阵的行列数,纵坐标表示计算矩阵乘法结果所用的时间,内核1采用的前述第一个现有技术的方法,内核2采用的是前述第二个现有技术的方法,内核3采用的是本发明的方法。三个内核分别对32×32,64×64,128×128,256×256,512×512,1024×1204,2048×2048,4096×4096的矩阵进行矩阵乘法运算,将每个内核计算每个矩阵所用的时间绘制成折线图。
由图2可以看出内核1仅在矩阵较小时有一些速度的优势,随着矩阵的增大,运算量不断增加,在矩阵大小达1024×1024时,内核1运算能力已经饱和,内核2利用局部内存优化了全局内存的访问,运行速度相比于内核1有相当大的提升,内核3在内核2的基础上,进一步将局部内存中的矩阵分块传输至访问速度更快的私有内存,同时提高了数据的复用率,减少了对全局内存和局部内存的访问次数,从而大幅度提高了大型矩阵乘法的速度,在速度上相比于内核2提升较大,特别是在计算4096×4096大小的大型矩阵的乘法时,内核3的运行速度已经达到了内核1的9倍,内核2的2倍。
本发明的第二个仿真实验是采用本发明的方法和一个现有技术测试目标检测深度卷积神经网络YOLOv2的速度性能。
在本发明的仿真实验2中,采用的一个现有技术是指目前工程技术中常用的使用CPU运行卷积神经网络的方法。
在本发明的仿真实验2从目标检测数据集COCO的测试集中随机选取3幅图像作为测试图像,将所选的3幅图像分别输入到使用CPU的YOLOv2网络和使用本发明的YOLOv2网络对所选图像进行目标检测,得出两种方法进行目标检测所需的时间,结果如表1所示。
表1使用CPU和本发明的YOLOv2网络目标检测时间表(单位:ms)
所选图像的序号 CPU 本发明
1 12424.5 31.7
2 12362.1 29.6
3 12396.8 31.9
由表1可见,本发明所提出的基于OpenCL的卷积神经网络并行处理方法相比于传统的只使用CPU的卷积神经网络的运行方法,速度大幅度提高。
以上仿真实验表明:本发明利用计算机图形处理器GPU中大量的并行计算单元,对卷积神经网络进行并行化处理,将卷积过程简化为大型矩阵的乘加操作,分块并行计算权值矩阵与重组矩阵的乘积,优化了数据的访存方式,提高了数据的复用率,使得本发明可以大幅度提高卷积神经网络的运行速度。

Claims (6)

1.一种基于OpenCL的卷积神经网络并行处理方法,其特征在于,获取图像数据矩阵的重组矩阵,分块并行计算权值矩阵与重组矩阵的乘积,并行批量归一化乘积矩阵;该方法的具体步骤包括如下:
(1)获取图像数据矩阵的重组矩阵:
(1a)在主机内存中读取图像数据矩阵;
(1b)在GPU全局内存中创建图像数据矩阵缓存对象,将图像数据矩阵从主机内存传输至图像数据矩阵缓存对象中;
(1c)对图像数据矩阵进行并行组合重排,获得一个二维的重组矩阵;
(2)获取权值矩阵:
(2a)在主机内存中分别读取卷积核的数量和所有卷积核的权值,将所读取的所有卷积核的权值依次按行排列,组成权值矩阵;
(2b)在GPU全局内存中创建权值矩阵缓存对象,将权值矩阵从主机内存传输至权值矩阵缓存对象中;
(3)分块并行计算权值矩阵与重组矩阵的乘积:
(3a)创建OpenCL矩阵乘法内核,设置OpenCL矩阵乘法内核的二维全局工作项总数和二维工作组大小,并行执行OpenCL矩阵乘法内核的所有工作项;
(3b)以64×64个数据元素的大小,将权值矩阵不重叠地均匀分块,每一块构成一个权值共享矩阵,将重组矩阵不重叠地均匀分块,每一块构成一个重组共享矩阵,在GPU中并行地将所有权值共享矩阵和重组共享矩阵从全局内存传输至工作组的局部内存;
(3c)以8×4个数据元素的大小,将权值共享矩阵不重叠地均匀分块,每一块构成一个权值因子矩阵,将重组共享矩阵不重叠地均匀分块,每一块构成一个重组因子矩阵,在GPU中并行地将所有权值因子矩阵和重组因子矩阵从局部内存传输至工作项的私有内存;
(3d)在每个并行的工作项中,将权值因子矩阵和重组因子矩阵相乘,将乘积累加后组成乘积分块矩阵;
(3e)在GPU全局内存中创建乘积矩阵缓存对象,将每个工作项中的乘积分块矩阵组合成完整的乘积矩阵,并行地将乘积矩阵从私有内存中传输至乘积矩阵缓存对象中;
(4)对乘积矩阵进行并行批量归一化:
(4a)创建OpenCL批量均方内核,将OpenCL批量均方内核的一维全局工作项数设置为乘积矩阵行数的512倍,将一维工作组大小设置为512,并行执行OpenCL批量均方内核的所有工作项;
(4b)在GPU中并行地计算批量乘积矩阵中每行的均值和每行的方差;
(4c)创建OpenCL批量归一化内核,将OpenCL批量归一化内核的一维全局工作项总数设置为批量乘积矩阵的总数与乘积矩阵行数和列数的乘积,将一维工作组大小设置为512,并行执行OpenCL批量归一化内核的所有工作项;
(4d)在GPU中并行地将乘积矩阵进行批量归一化;
(5)输出特征值矩阵:
(5a)使用带泄漏的线性整流函数,构造OpenCL激活内核,计算批量乘积矩阵的总数与乘积矩阵行数和列数的乘积,将该乘积设置为OpenCL激活内核的一维全局工作项的总数,将一维工作组大小设置为512;
(5b)利用带泄漏的线性整流函数,在GPU中将乘积矩阵中的每个元素并行地进行激活,得到特征值矩阵;
(5c)将GPU全局内存中的特征值矩阵传输回主机内存,输出特征值矩阵和运行时间。
2.根据权利要求1所述的基于OpenCL的卷积神经网络并行处理方法,其特征在于,步骤(1c)中所述并行组合重排的具体步骤如下:
第一步,按照下式,计算扩展圈数p,将图像数据矩阵中每一个二维特征矩阵边缘扩展p圈,在所有扩展的位置填充数据0:
p=(k-1)/2
其中,p表示扩展圈数,k表示卷积核的尺寸;
第二步,按照下式,计算二维重组矩阵的列数:
N=[(h+2×p-k)/s+1]×[(w+2×p-k)/s+1]
其中,N表示二维重组矩阵的列数,h表示图像数据矩阵的高度,s表示卷积滑动的步长,w表示图像数据矩阵的宽度;
第三步,按照下式,计算二维重组矩阵的行数:
K=d×k2
其中,K表示二维重组矩阵的行数,d表示图像数据矩阵的通道数;
第四步,创建OpenCL矩阵变换内核,将OpenCL矩阵变换内核的全局工作项数设置为d×N,工作组大小设置为512;
第五步,在GPU中创建重组矩阵缓存对象,并行执行OpenCL矩阵变换内核,每个工作项将k2个数据元素写入重组矩阵缓存对象,获得一个二维的重组矩阵。
3.根据权利要求1所述的基于OpenCL的卷积神经网络并行处理方法,其特征在于,步骤(3a)中所述设置OpenCL矩阵乘法内核的二维全局工作项总数和二维工作组大小的具体步骤如下:
第一步,按照下式,计算并设置OpenCL矩阵乘法内核二维工作组的大小:
Figure FDA0002617390240000031
其中,WNN表示OpenCL矩阵乘法内核二维工作组第一维的大小,TSN表示重组共享矩阵第一维的大小,取值为64,PWN表示乘积分块矩阵第一维的大小,取值为4,WNN表示二维工作组第二维的大小,TSM表权值共享矩阵第二维的大小,取值为64,PWM表示乘积分块矩阵第二维的大小,取值为8;
第二步,按照下式,计算并设置OpenCL矩阵乘法内核二维全局工作项的总数:
G1=(N+TSN-1)/TSN*WNN
G2=(M+TSM-1)/TSM*WNM
其中,G1表示OpenCL矩阵乘法内核二维全局工作项第一维度的总数,N表示重组矩阵的列数,G2表示二维全局工作项第二维度的总数,M表示权值矩阵的行数。
4.根据权利要求1所述的基于OpenCL的卷积神经网络并行处理方法,其特征在于,步骤(4b)中所述在GPU中并行地计算批量乘积矩阵中每行的均值和每行的方差是由下述公式计算得到的:
Figure FDA0002617390240000041
Figure FDA0002617390240000042
其中,μk表示批量乘积矩阵中全部乘积矩阵所有第k行的均值,m表示批量乘积矩阵中乘积矩阵的总数,n表示乘积矩阵的列的总数,xi,k,j表示第i个乘积矩阵中第k行的第j列的值,
Figure FDA0002617390240000043
表示批量乘积矩阵中全部乘积矩阵所有第k行的方差。
5.根据权利要求4所述的基于OpenCL的卷积神经网络并行处理方法,其特征在于,步骤(4d)中所述在GPU中并行地将乘积矩阵进行批量归一化是由下述公式实现的:
Figure FDA0002617390240000044
其中,
Figure FDA0002617390240000045
表示批量归一化后第i个乘积矩阵中第k行的第j列的值,ε表示一个防止分母为0的极小正数,其取值为0.00001。
6.根据权利要求1所述的基于OpenCL的卷积神经网络并行处理方法,其特征在于,步骤(5a)中所述带泄漏的线性整流函数如下:
Figure FDA0002617390240000046
其中,f(x)表示带泄漏的线性整流函数的输出值,x表示卷积结果矩阵中元素的数值,k∈(0,1)是一个常数,取值为0.1。
CN201910331464.3A 2019-04-24 2019-04-24 基于OpenCL的卷积神经网络并行处理方法 Active CN110110844B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910331464.3A CN110110844B (zh) 2019-04-24 2019-04-24 基于OpenCL的卷积神经网络并行处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910331464.3A CN110110844B (zh) 2019-04-24 2019-04-24 基于OpenCL的卷积神经网络并行处理方法

Publications (2)

Publication Number Publication Date
CN110110844A CN110110844A (zh) 2019-08-09
CN110110844B true CN110110844B (zh) 2021-01-12

Family

ID=67486423

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910331464.3A Active CN110110844B (zh) 2019-04-24 2019-04-24 基于OpenCL的卷积神经网络并行处理方法

Country Status (1)

Country Link
CN (1) CN110110844B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112396154A (zh) * 2019-08-16 2021-02-23 华东交通大学 一种基于卷积神经网络训练的并行方法
CN110737473A (zh) * 2019-09-24 2020-01-31 北京小米移动软件有限公司 数据处理方法及装置、终端、存储介质
CN110782009B (zh) * 2019-10-17 2023-09-08 湖南大学 基于ARMv8体系的计算内核优化方法
CN111786688B (zh) 2020-06-16 2021-12-03 重庆邮电大学 一种基于嵌入式gpu的宽带并行信道化接收方法
CN112433847B (zh) * 2020-11-09 2024-04-02 中国船舶集团有限公司 一种OpenCL内核提交的方法及装置
CN112766467B (zh) * 2021-04-06 2021-08-20 深圳市一心视觉科技有限公司 基于卷积神经网络模型的图像识别方法
CN113269765B (zh) * 2021-06-04 2022-10-28 重庆大学 可扩张卷积神经网络训练方法及ct影像分割模型构建方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023844B (zh) * 2009-09-18 2014-04-09 深圳中微电科技有限公司 并行处理器及其线程处理方法
US9727385B2 (en) * 2011-07-18 2017-08-08 Apple Inc. Graphical processing unit (GPU) implementing a plurality of virtual GPUs
CN107563392A (zh) * 2017-09-07 2018-01-09 西安电子科技大学 使用OpenCL加速的YOLO目标检测方法
CN109002752A (zh) * 2018-01-08 2018-12-14 北京图示科技发展有限公司 一种基于深度学习的复杂公共场景快速行人检测方法
CN111275194B (zh) * 2020-02-16 2022-06-21 苏州浪潮智能科技有限公司 一种基于fpga的nlp推理加速系统

Also Published As

Publication number Publication date
CN110110844A (zh) 2019-08-09

Similar Documents

Publication Publication Date Title
CN110110844B (zh) 基于OpenCL的卷积神经网络并行处理方法
Chen et al. An enhanced hybrid MobileNet
CN107341127B (zh) 基于OpenCL标准的卷积神经网络加速方法
Ewees et al. Enhanced salp swarm algorithm based on firefly algorithm for unrelated parallel machine scheduling with setup times
CN111242289A (zh) 一种规模可扩展的卷积神经网络加速系统与方法
CN109729734A (zh) 芯片装置及相关产品
CN112200300B (zh) 卷积神经网络运算方法及装置
CN108205703B (zh) 多输入多输出矩阵平均值池化向量化实现方法
CN111814626B (zh) 一种基于自注意力机制的动态手势识别方法和系统
CN101996245B (zh) 一种图形对象的形状特征描述与检索方法
CN107451097B (zh) 国产申威26010众核处理器上多维fft的高性能实现方法
CN109033030A (zh) 一种基于gpu的张量分解及重构方法
CN114943345A (zh) 基于主动学习和模型压缩的联邦学习全局模型训练方法
CN103177414A (zh) 一种基于结构的图节点相似度并行计算方法
CN112508190A (zh) 结构化稀疏参数的处理方法、装置、设备及存储介质
US20210182357A1 (en) System and method for model parameter optimization
CN105389291B (zh) 基于增量式凸局部非负矩阵分解的数据处理方法
Shiri et al. An FPGA implementation of singular value decomposition
CN103440275A (zh) 一种基于普利姆的k均值聚类方法
CN113792621A (zh) 一种基于fpga的目标检测加速器设计方法
Yoo et al. Fast depthwise separable convolution for embedded systems
CN109446478B (zh) 一种基于迭代和可重构方式的复协方差矩阵计算系统
US20220207374A1 (en) Mixed-granularity-based joint sparse method for neural network
Wen et al. MapReduce-based BP neural network classification of aquaculture water quality
CN112364989A (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
GR01 Patent grant
GR01 Patent grant