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

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

Parallel Processing Method of Convolutional Neural Network Based on OpenCL

【技术实现步骤摘要】
基于OpenCL的卷积神经网络并行处理方法
本专利技术属于计算机
,更进一步涉及计算机视觉和深度学习
中的一种使用开放计算语言OpenCL(OpenComputingLanguage)的卷积神经网络并行处理方法。本专利技术可以实现对卷积神经网络的图像卷积过程进行加速,可用于计算机视觉的实时目标检测。
技术介绍
卷积神经网络的卷积过程需要进行大量的浮点运算,当卷积神经网络的层数不断加深时,CPU的执行效率远远不能满足要求。而GPU提供了大量的并行计算单元,OpenCL可以在主机端对GPU进行编程,利用CPU+GPU的异构架构可以实现对卷积神经网络的图像卷积过程进行加速。长沙马沙电子科技有限公司在其申请的专利文献“一种基于大规模高性能集群的卷积神经网络并行处理方法”(申请日:2014年11月21日,申请号:2014106748603,公开号:CN104463324A)中公开了一种基于大规模高性能集群的卷积神经网络并行处理方法。该方法首先将要训练的网络模型构建出多个副本,每个副本的模型参数均相同,副本的个数与高性能集群的节点数相同,每个节点上分布一个模型副本;选定一个节点作为主节点,负责模型参数的广播与收集。其次,将训练集分为若干子集,每次将训练子集分发给除主节点之外的其余子节点,共同进行参数梯度的计算,并将梯度值累计,累计值用来更新主节点模型参数,将更新后的模型参数广播给各个子节点,直到模型训练终止。该方法存在不足的是,通过构建网络模型副本的方法实现卷积神经网络的并行处理,并行化程度依赖于集群的节点数,模型复杂度高,可移植性差,成本较高,大大限制了其应用范围。西安电子科技大学在其申请的专利文献“基于OpenCL标准的卷积神经网络加速方法”(申请日:2017年7月5日,申请号:201710543986.0,公开号:CN107341127A)中公开了一种基于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.一种基于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全局内存中的特征值矩阵传输回主机内存,输出特征值矩阵和运行时间。...

【技术特征摘要】
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的卷积神经网络并行处理...

【专利技术属性】
技术研发人员:田小林荀亮张晰李娇娇李芳李帅逯甜甜焦李成
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

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

1