CN106846235A - 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 - Google Patents
一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 Download PDFInfo
- Publication number
- CN106846235A CN106846235A CN201611215263.XA CN201611215263A CN106846235A CN 106846235 A CN106846235 A CN 106846235A CN 201611215263 A CN201611215263 A CN 201611215263A CN 106846235 A CN106846235 A CN 106846235A
- Authority
- CN
- China
- Prior art keywords
- temporarily providing
- providing room
- gpu
- convolution
- smb
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明提出一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法,涉及深度学习,高性能计算,GPGPU编程技术领域,该方法包括将<N,C*R*S>大小的矩阵与<C*R*S,K>大小的矩阵相乘,获得<N,K>大小的输出元素,对N维度用bn做分块,对K维度用bk作分块,获得GPU的block维度为<<<P*Q,N/bx,K/by>>>,其中N为批处理图像数目,K为输出图像深度,C为输入图像深度,R为卷积核高度,S为卷积核宽度,P为输出图像高度,Q为输出图像宽度。本发明相比传统的卷积过程简化了步骤,减少了调用次数,增加了数据局部性;避免额外延迟并可选取高效的向量指令,如STS.128,LDG.128减少bank冲突和增加带宽;可以达到75%的峰值性能,超过目前最优的cudnn实现20%‑40%。
Description
技术领域
本发明涉及深度学习,高性能计算,GPGPU编程技术领域,特别涉及一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统。
背景技术
随着人工智能浪潮的掀起,无人车,图像识别,语音识别等应用得到了广泛的推广,深度学习已经成为支持这些应用的重要模型训练手段,但是长期以来,由于深度学习的模型规模大,数据量多的问题,其训练速度较慢,难以得到普遍的使用,传统的深度学习系统采用大规模CPU,GPU分布式互联的方式来提升其速度,其中,“Andrew Lavin and ScottGray.Fast Algorithms For Convolutional Neural Netoworks.Arxiv.CoRR,abs/1509.09308,2015.”提出了两种通用的并行模式:模型并行和数据并行,分别解决模型通信时间较长和数据量较大的情况。而“T.Chilimbi,Y.Suzue,J.Apacijble,andK.Kalyanaraman.Project adam:Building an efficient and scalable deep learningtraining system.11th USENIX Symposium on Operating Systems Design andImplementation,2014.”利用上述并行手段设计了大规模的深度学习框架。在工业界,google发布了tensorflow框架,facebook维护了torch框架,此外开源社区还支持mxnet,caffe等深度学习框架,深度学习的软件框架已经相当成熟。
最近,越来越多的关注集中到了用高性能的手段来优化深度学习的性能,传统的深度学习计算程序大多数依赖于现有的BLAS/CUBLAS高性能计算数学库,但这些数学库只提供了基本的运算函数,如矩阵乘,而深度学习中的卷积等运算如果用传统BLAS计算来实现就不能很好的利用计算资源,现有的GPU端的卷积操作的实现存在如下问题:
Cudnn“https://developer.nvidia.com/cudnn”:不对外开源。基于矩阵乘的实现只能达到60%左右的峰值性能;基于FFT(快速傅里叶变换)的实现只针对stride=1(步长)的情况,不能通用而且需要大量的额外内存;缺少直接卷积算法实现。
Neon“https://github.com/NervanaSystems/neon”:只针对Maxwell GPU实现了直接卷积算法,不能直接高效移植到Kepler GPU,并且在一些特殊的网络配置下性能低。
Caffe“https://github.com/BVLC/caffe”:利用现有的BLAS运算,导致其需要额外内存并且效率十分低。
发明内容
针对现有技术的不足,本发明提出一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统。
本发明提出一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法,将<N,C*R*S>大小的矩阵与<C*R*S,K>大小的矩阵相乘,获得<N,K>大小的输出元素,对N维度用bn做分块,对K维度用bk作分块,获得GPU的block维度为<<<P*Q,N/bx,K/by>>>,其中N为批处理图像数目,K为输出图像深度,C为输入图像深度,R为卷积核高度,S为卷积核宽度,P为输出图像高度,Q为输出图像宽度。
还包括:步骤11,首先根据C*R*S与pad的信息,计算出在输入图像上对应取元素的起始地址,存储到GPU上的二级存储;
步骤12,读取index信息,在输入图像上每次连续取S行bx个元素,取完R列以后,重复C次;
步骤13,在filter取C*R*S行by个元素;
步骤14,将步骤12取出的元素与步骤13取出的元素做矩阵乘运算;
步骤15,在输出时每次输出一行bx个元素,重复k次。
还包括:步骤21,在GPU上的二级存储开辟4个暂存空间smA、smB、smAx、smBx;
步骤22,从GPU上的一级存储读取暂存空间smA大小的矩阵到暂存空间smA,读取暂存空间smB大小的矩阵到暂存空间smB;
步骤23,每次从暂存空间smA加载一列元素到寄存器,从暂存空间smB加载一行元素到寄存器,做矩阵乘运算;
步骤24,在做矩阵乘运算的同时,从GPU上的一级存储读取下一个暂存空间smA与暂存空间smB的一行到暂存空间smAx与暂存空间smBx;
步骤25,做完暂存空间smA与暂存空间smB的矩阵乘以后,将暂存空间smA与暂存空间smAx地址互换,将暂存空间smB与暂存空间smBx地址互换。
设置GPU处理器上的运算单元的大小为8。
采用STS.128指令。
本发明还提出一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化系统,包括优化模块,用于将<N,C*R*S>大小的矩阵与<C*R*S,K>大小的矩阵相乘,获得<N,K>大小的输出元素,对N维度用bn做分块,对K维度用bk作分块,获得GPU的block维度为<<<P*Q,N/bx,K/by>>>,其中N为批处理图像数目,K为输出图像深度,C为输入图像深度,R为卷积核高度,S为卷积核宽度,P为输出图像高度,Q为输出图像宽度。
所述优化模块包括:步骤11,首先根据C*R*S与pad的信息,计算出在输入图像上对应取元素的起始地址,存储到GPU上的二级存储;
步骤12,读取index信息,在输入图像上每次连续取S行bx个元素,取完R列以后,重复C次;
步骤13,在filter取C*R*S行by个元素;
步骤14,将步骤12取出的元素与步骤13取出的元素做矩阵乘运算;
步骤15,在输出时每次输出一行bx个元素,重复k次。
所述优化模块还包括:步骤21,在GPU上的二级存储开辟4个暂存空间smA、smB、smAx、smBx;
步骤22,从GPU上的一级存储读取暂存空间smA大小的矩阵到暂存空间smA,读取暂存空间smB大小的矩阵到暂存空间smB;
步骤23,每次从暂存空间smA加载一列元素到寄存器,从暂存空间smB加载一行元素到寄存器,做矩阵乘运算;
步骤24,在做矩阵乘运算的同时,从GPU上的一级存储读取下一个暂存空间smA与暂存空间smB的一行到暂存空间smAx与暂存空间smBx;
步骤25,做完暂存空间smA与暂存空间smB的矩阵乘以后,将暂存空间smA与暂存空间smAx地址互换,将暂存空间smB与暂存空间smBx地址互换。
设置GPU处理器上的运算单元的大小为8。
采用STS.128指令。
由以上方案可知,本发明的优点在于:
本发明相比传统的卷积过程简化了步骤,减少了调用次数,增加了数据局部性;避免额外延迟并可选取高效的向量指令,如STS.128,LDG.128减少bank冲突和增加带宽;可以达到75%的峰值性能,超过目前最优的cudnn实现20%-40%。
附图说明
图1为传统卷积图;
图2为Caffe中调用矩阵乘的实现图;
图3为处理batch数据的流程图;
图4为减少冗余访存的卷积矩阵乘图;
图5为使用向量内存指令的示意图。
具体实施方式
利用卷积可以实现对图像模糊处理,边缘检测,产生轧花效果的图像,我们规定下列符号表示:
P | 输出图像高度 |
Q | 输出图像宽度 |
pad | 输入图像补0 |
H | 输入图像高度 |
W | 输入图像宽度 |
stride | 步长 |
C | 输入图像深度 |
K | 输出图像深度 |
N | 批处理图像数目 |
input | 输入图像 |
output | 输出图像 |
filter | 卷积核 |
可以得到如下公式:
其中Ni:第i个batch,Ki:第j个深度,Hk:第k个高度,Wv:第v个宽度,r:filter上第r个高度偏移,s:filter上第s个宽度偏移
因此传统卷积的过程如图1所示:
我们发现传统的卷积算法每次计算的单元偏移量大,计算访存比低,导致其整体效率低。
以下为传统GPU卷积算法,包括直接卷积实现
[Caffe]中调用Cublas的矩阵乘将卷积过程转化为矩阵乘实现,其流程如图2所示:
然而这种方法由于要多次调用矩阵乘函数,导致了冗余的访存,并且计算和访存不能重叠,效率低下,本发明简化了GPU上卷积的流程,利用GPU计算的并行性和自行设计的矩阵乘kernel,只需要一次调用就能处理一个batch的数据,如图3。
本发明用图4说明具体怎样将卷积转化为矩阵乘的GPU形式,如图4所示:
从公式中我们可以看出,output(输出图像)的每个元素是由input(输入图像)和filter(卷积核)的C*R*S个元素乘加得到的,并且在N,K维度互相独立,因此我们可以将这个过程转化为矩阵相乘的过程,即一个<N,C*R*S>大小的矩阵和一个<C*R*S,K>大小的矩阵相乘,得到<N,K>大小的输出元素,对N维度我们用bx做分块,对K维度我们用by作分块。因而,得到GPU的block(GPU处理器上的运算单元)维度为<<<P*Q,N/bx,K/by>>>,其中PQ=P*Q输出图片的大小。
算法流程如下:
步骤11,首先根据C,R,S和pad的信息,计算出在input上对应取元素的起始地址,存到shared memory(GPU上的二级存储)上。
步骤12,读取index信息,在input上每次连续取S行bx个元素,取完R列以后,重复C次。
步骤13,在filter取C,R,S行by个元素。
步骤14,对取出的input和filter做矩阵乘运算。
步骤15,在输出时我们每次输出一行bx个元素,重复k次。
GPU上利用双缓冲矩阵乘算法如下
步骤21,在shared memory上开辟4个暂存空间smA,smB,smAx和smBx;
步骤22,从global memory(GPU上的一级存储)读取smA大小的矩阵到smA,读取smB大小的矩阵到smB;
步骤23,每次从smA加载一列到寄存器,从smB加载一行到寄存器,做矩阵乘运算;
步骤24,在做运算的同时,从global memory读取下一个smA和smB的一行到smAx和smBx;
步骤25,做完smA和smB的矩阵乘以后,将smA和smAx地址互换,将smB和smBx地址互换。
矩阵乘内核是卷积中指令最多的部分,因此优化好它的性能就可以提升整个卷积过程的性能。在指令选取的过程中,我们主要需要考虑到指令延迟,指令通量,寄存器使用,和发射模式的问题。
以下为本发明中寄存器数目:
理论上来说,计算中用来储矩阵的寄存器存越多,效率越高,因为这样可以减少内存读取,增加计算访存比,但是,寄存器使用多了以后,会导致active blocks(GPU处理器上可并发的处理单元数目)变少,因而导致shared memory上的带宽成为瓶颈“Zhang,Yao,andJ.D.Owens."A quantitative performance analysis model for GPU architectures."8.1(2011):382-393”,因此我们需要在尽量使用较多寄存器的情况下,增加active blocks的数目。
由于我们需要使用至少18个寄存器来计算input和filter的偏移,并且需要register_block(寄存器矩阵的边长)*4+register_block^2个寄存器来加载双缓冲和矩阵,在256个线程的情况下,我们最大可以使得register_block=13,但是registe_block需要满足偶数对齐来使用向量加载指令,因而我们可选的register_block={2,4,6,8,10,12},当register_block={4,6,8}的时候,我们可以利用两个active blocks,因此我们选取block size=8来隐藏额外的计算和访存延迟。
以下为本发明中FFMA(乘加指令)双发射
使用FFMA 1-2-2-1发射的模式在Kepler GPU上具有最高的性能,我们采取了相同的方式,但是由于我们的寄存器矩阵只有8x8,会导致可用的空闲指令插槽减少,延迟增加,在实际效果中,由于多个active warps的存在,可以隐藏部分延迟,同样达到较高的性能。
以下为本发明中STS.128(shared memory 128位存储指令)
我们使用STS.128指令因为其相比STS.64指令和STS.32指令的通量更高,并且使用的指令更少,此外,如图5,假设字长为32比特,通过分析发现STS.128可以通过一次操作存储128*8个数据(256线程),导致一个warp内4路bank conflict。使用STS.32需要四次操作存储,使用STS.64需要两次操作,虽然STS.64和STS.32造成的bank conflict较小,但是说需要的指令较多,在指令插槽较小的情况下,会增加整体的指令延迟。因此我们采取只需要一次调用的STS.128指令。
以下为本发明中LDS.64(shared memory 64位读取指令)
我们使用LDS.64指令因为他的通量更高,并且在64比特字长的配置下不存在shared memory bank conflict。
以下为本发明中LDG.128(global memory 128位读取指令)
我们使用LDG.128指令,虽然LDG.128要求地址是128的整数倍,在深度学习中N,K,C等参数通常都满足条件。即使不满足,我们也可以通过补0的方式来达到这个效果,所以我们可以用通量更高的LDG.128指令。
本发明还提出一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化系统,包括优化模块,用于将<N,C*R*S>大小的矩阵与<C*R*S,K>大小的矩阵相乘,获得<N,K>大小的输出元素,对N维度用bn做分块,对K维度用bK作分块,获得GPU的block维度为<<<P*Q,N/bx,K/by>>>,其中N为批处理图像数目,K为输出图像深度,C为输入图像深度,R为卷积核高度,S为卷积核宽度,P为输出图像高度,Q为输出图像宽度。
所述优化模块包括:
步骤11,首先根据C*R*S与pad的信息,计算出在输入图像上对应取元素的起始地址,存储到GPU上的二级存储;
步骤12,读取index信息,在输入图像上每次连续取S行bx个元素,取完R列以后,重复C次;
步骤13,在filter取C*R*S行by个元素;
步骤14,将步骤12取出的元素与步骤13取出的元素做矩阵乘运算;
步骤15,在输出时每次输出一行bx个元素,重复k次。
所述优化模块还包括:
步骤21,在GPU上的二级存储开辟4个暂存空间smA、smB、smAx、smBx;
步骤22,从GPU上的一级存储读取暂存空间smA大小的矩阵到暂存空间smA,读取暂存空间smB大小的矩阵到暂存空间smB;
步骤23,每次从暂存空间smA加载一列元素到寄存器,从暂存空间smB加载一行元素到寄存器,做矩阵乘运算;
步骤24,在做矩阵乘运算的同时,从GPU上的一级存储读取下一个暂存空间smA与暂存空间smB的一行到暂存空间smAx与暂存空间smBx;
步骤25,做完暂存空间smA与暂存空间smB的矩阵乘以后,将暂存空间smA与暂存空间smAx地址互换,将暂存空间smB与暂存空间smBx地址互换。
设置GPU处理器上的运算单元的大小为8。
本发明系统采用STS.128指令。
Claims (10)
1.一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法,其特征在于,将<N,C*R*S>大小的矩阵与<C*R*S,K>大小的矩阵相乘,获得<N,K>大小的输出元素,对N维度用bn做分块,对K维度用bk作分块,获得GPU的block维度为<<<P*Q,N/bx,K/by>>>,其中N为批处理图像数目,K为输出图像深度,C为输入图像深度,R为卷积核高度,S为卷积核宽度,P为输出图像高度,Q为输出图像宽度。
2.如权利要求1所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法,其特征在于,还包括:
步骤11,首先根据C*R*S与pad的信息,计算出在输入图像上对应取元素的起始地址,存储到GPU上的二级存储;
步骤12,读取index信息,在输入图像上每次连续取S行bx个元素,取完R列以后,重复C次;
步骤13,在filter取C*R*S行by个元素;
步骤14,将步骤12取出的元素与步骤13取出的元素做矩阵乘运算;
步骤15,在输出时每次输出一行bx个元素,重复k次。
3.如权利要求1所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法,其特征在于,还包括:
步骤21,在GPU上的二级存储开辟4个暂存空间smA、smB、smAx、smBx;
步骤22,从GPU上的一级存储读取暂存空间smA大小的矩阵到暂存空间smA,读取暂存空间smB大小的矩阵到暂存空间smB;
步骤23,每次从暂存空间smA加载一列元素到寄存器,从暂存空间smB加载一行元素到寄存器,做矩阵乘运算;
步骤24,在做矩阵乘运算的同时,从GPU上的一级存储读取下一个暂存空间smA与暂存空间smB的一行到暂存空间smAx与暂存空间smBx;
步骤25,做完暂存空间smA与暂存空间smB的矩阵乘以后,将暂存空间smA与暂存空间smAx地址互换,将暂存空间smB与暂存空间smBx地址互换。
4.如权利要求1所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法,其特征在于,设置GPU处理器上的运算单元的大小为8。
5.如权利要求1所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法,其特征在于,采用STS.128指令。
6.一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化系统,其特征在于,包括优化模块,用于将<N,C*R*S>大小的矩阵与<C*R*S,K>大小的矩阵相乘,获得<N,K>大小的输出元素,对N维度用bn做分块,对K维度用bk作分块,获得GPU的block维度为<<<P*Q,N/bx,K/by>>>,其中N为批处理图像数目,K为输出图像深度,C为输入图像深度,R为卷积核高度,S为卷积核宽度,P为输出图像高度,Q为输出图像宽度。
7.如权利要求6所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化系统,其特征在于,所述优化模块包括:
步骤11,首先根据C*R*S与pad的信息,计算出在输入图像上对应取元素的起始地址,存储到GPU上的二级存储;
步骤12,读取index信息,在输入图像上每次连续取S行bx个元素,取完R列以后,重复C次;
步骤13,在filter取C*R*S行by个元素;
步骤14,将步骤12取出的元素与步骤13取出的元素做矩阵乘运算;
步骤15,在输出时每次输出一行bx个元素,重复k次。
8.如权利要求6所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化系统,其特征在于,所述优化模块还包括:
步骤21,在GPU上的二级存储开辟4个暂存空间smA、smB、smAx、smBx;
步骤22,从GPU上的一级存储读取暂存空间smA大小的矩阵到暂存空间smA,读取暂存空间smB大小的矩阵到暂存空间smB;
步骤23,每次从暂存空间smA加载一列元素到寄存器,从暂存空间smB加载一行元素到寄存器,做矩阵乘运算;
步骤24,在做矩阵乘运算的同时,从GPU上的一级存储读取下一个暂存空间smA与暂存空间smB的一行到暂存空间smAx与暂存空间smBx;
步骤25,做完暂存空间smA与暂存空间smB的矩阵乘以后,将暂存空间smA与暂存空间smAx地址互换,将暂存空间smB与暂存空间smBx地址互换。
9.如权利要求6所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化系统,其特征在于,设置GPU处理器上的运算单元的大小为8。
10.如权利要求6所述的利用NVIDIA Kepler GPU汇编指令加速的卷积优化系统,其特征在于,采用STS.128指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611215263.XA CN106846235B (zh) | 2016-12-26 | 2016-12-26 | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611215263.XA CN106846235B (zh) | 2016-12-26 | 2016-12-26 | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106846235A true CN106846235A (zh) | 2017-06-13 |
CN106846235B CN106846235B (zh) | 2020-11-13 |
Family
ID=59136965
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611215263.XA Active CN106846235B (zh) | 2016-12-26 | 2016-12-26 | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106846235B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
CN109460827A (zh) * | 2018-11-01 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种深度学习环境的搭建与优化方法和系统 |
CN109615066A (zh) * | 2019-01-30 | 2019-04-12 | 新疆爱华盈通信息技术有限公司 | 一种针对neon优化的卷积神经网络的裁剪方法 |
CN110147248A (zh) * | 2019-04-19 | 2019-08-20 | 中国科学院计算技术研究所 | 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和系统 |
CN110163793A (zh) * | 2019-05-27 | 2019-08-23 | 湃方科技(天津)有限责任公司 | 卷积计算加速方法和装置 |
CN111640066A (zh) * | 2020-06-02 | 2020-09-08 | 中国人民解放军国防科技大学 | 一种面向目标检测的图像矩阵列转换加速方法 |
CN111797985A (zh) * | 2020-07-22 | 2020-10-20 | 哈尔滨工业大学 | 一种基于gpu的卷积运算内存访问优化方法 |
WO2022062005A1 (zh) * | 2020-09-24 | 2022-03-31 | 成都海光集成电路设计有限公司 | 基于gemm处理图像数据的方法、装置、设备和介质 |
WO2023045446A1 (zh) * | 2021-09-26 | 2023-03-30 | 寒武纪(西安)集成电路有限公司 | 计算装置、数据处理方法及相关产品 |
CN117407643A (zh) * | 2023-11-03 | 2024-01-16 | 上海无问芯穹智能科技有限公司 | 一种通用矩阵乘法的优化方法、系统、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
US20160342888A1 (en) * | 2015-05-20 | 2016-11-24 | Nec Laboratories America, Inc. | Memory efficiency for convolutional neural networks operating on graphics processing units |
CN106204669A (zh) * | 2016-07-05 | 2016-12-07 | 电子科技大学 | 一种基于gpu平台的并行图像压缩感知方法 |
-
2016
- 2016-12-26 CN CN201611215263.XA patent/CN106846235B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160342888A1 (en) * | 2015-05-20 | 2016-11-24 | Nec Laboratories America, Inc. | Memory efficiency for convolutional neural networks operating on graphics processing units |
CN104915322A (zh) * | 2015-06-09 | 2015-09-16 | 中国人民解放军国防科学技术大学 | 一种卷积神经网络硬件加速方法及其axi总线ip核 |
CN106204669A (zh) * | 2016-07-05 | 2016-12-07 | 电子科技大学 | 一种基于gpu平台的并行图像压缩感知方法 |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108205702A (zh) * | 2017-12-29 | 2018-06-26 | 中国人民解放军国防科技大学 | 一种多输入多输出矩阵卷积的并行处理方法 |
CN109460827A (zh) * | 2018-11-01 | 2019-03-12 | 郑州云海信息技术有限公司 | 一种深度学习环境的搭建与优化方法和系统 |
CN109615066A (zh) * | 2019-01-30 | 2019-04-12 | 新疆爱华盈通信息技术有限公司 | 一种针对neon优化的卷积神经网络的裁剪方法 |
CN110147248B (zh) * | 2019-04-19 | 2021-06-29 | 中国科学院计算技术研究所 | 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和系统 |
CN110147248A (zh) * | 2019-04-19 | 2019-08-20 | 中国科学院计算技术研究所 | 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和系统 |
CN110163793A (zh) * | 2019-05-27 | 2019-08-23 | 湃方科技(天津)有限责任公司 | 卷积计算加速方法和装置 |
CN110163793B (zh) * | 2019-05-27 | 2023-05-23 | 湃方科技(天津)有限责任公司 | 卷积计算加速方法和装置 |
CN111640066B (zh) * | 2020-06-02 | 2022-09-27 | 中国人民解放军国防科技大学 | 一种面向目标检测的图像矩阵列转换加速方法 |
CN111640066A (zh) * | 2020-06-02 | 2020-09-08 | 中国人民解放军国防科技大学 | 一种面向目标检测的图像矩阵列转换加速方法 |
CN111797985A (zh) * | 2020-07-22 | 2020-10-20 | 哈尔滨工业大学 | 一种基于gpu的卷积运算内存访问优化方法 |
CN111797985B (zh) * | 2020-07-22 | 2022-11-22 | 哈尔滨工业大学 | 一种基于gpu的卷积运算内存访问优化方法 |
WO2022062005A1 (zh) * | 2020-09-24 | 2022-03-31 | 成都海光集成电路设计有限公司 | 基于gemm处理图像数据的方法、装置、设备和介质 |
WO2023045446A1 (zh) * | 2021-09-26 | 2023-03-30 | 寒武纪(西安)集成电路有限公司 | 计算装置、数据处理方法及相关产品 |
CN117407643A (zh) * | 2023-11-03 | 2024-01-16 | 上海无问芯穹智能科技有限公司 | 一种通用矩阵乘法的优化方法、系统、设备及介质 |
CN117407643B (zh) * | 2023-11-03 | 2024-05-10 | 上海无问芯穹智能科技有限公司 | 一种通用矩阵乘法的优化方法、系统、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106846235B (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106846235A (zh) | 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 | |
US11568258B2 (en) | Operation method | |
US10489703B2 (en) | Memory efficiency for convolutional neural networks operating on graphics processing units | |
Cho et al. | MEC: Memory-efficient convolution for deep neural network | |
EP3407266B1 (en) | Artificial neural network calculating device and method for sparse connection | |
Yang et al. | A systematic approach to blocking convolutional neural networks | |
US8400458B2 (en) | Method and system for blocking data on a GPU | |
TWI617928B (zh) | 用於特徵搜尋之系統,裝置及方法 | |
EP3526665B1 (en) | Sorting for data-parallel computing devices | |
CN107633297A (zh) | 一种基于并行快速fir滤波器算法的卷积神经网络硬件加速器 | |
US20190311266A1 (en) | Device and method for artificial neural network operation | |
Zlateski et al. | ZNNi: maximizing the inference throughput of 3D convolutional networks on CPUs and GPUs | |
CN110837483B (zh) | 张量维度变换的方法以及装置 | |
WO2022253075A1 (zh) | 一种编译方法及相关装置 | |
Nakano | Optimal parallel algorithms for computing the sum, the prefix-sums, and the summed area table on the memory machine models | |
US11886347B2 (en) | Large-scale data processing computer architecture | |
CN113807998A (zh) | 图像处理方法、目标检测装置、机器视觉设备和存储介质 | |
WO2018112892A1 (zh) | 一种支持快速人工神经网络运算的装置及方法 | |
US10157346B2 (en) | Parallel Gibbs sampler using butterfly-patterned partial sums | |
Kasagi et al. | An optimal offline permutation algorithm on the hierarchical memory machine, with the GPU implementation | |
CN109447257B (zh) | 一种通道自组织的深度神经网络加速芯片的运算装置 | |
TWI776838B (zh) | 半導體裝置 | |
WO2019147441A1 (en) | Wide key hash table for a graphics processing unit | |
Lin et al. | MERIT: Tensor transform for memory-efficient vision processing on parallel architectures | |
Dawson et al. | Accelerating ant colony optimization-based edge detection on the GPU using CUDA |
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 |