CN106846235A - 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 - Google Patents

一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 Download PDF

Info

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
Application number
CN201611215263.XA
Other languages
English (en)
Other versions
CN106846235B (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.)
Chinese Academy Of Sciences State Owned Assets Management Co ltd
Institute of Computing Technology of CAS
Original Assignee
Chinese Academy Of Sciences State Owned Assets Management Co ltd
Institute of Computing Technology of CAS
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 Chinese Academy Of Sciences State Owned Assets Management Co ltd, Institute of Computing Technology of CAS filed Critical Chinese Academy Of Sciences State Owned Assets Management Co ltd
Priority to CN201611215263.XA priority Critical patent/CN106846235B/zh
Publication of CN106846235A publication Critical patent/CN106846235A/zh
Application granted granted Critical
Publication of CN106846235B publication Critical patent/CN106846235B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor 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

一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法 及系统
技术领域
本发明涉及深度学习,高性能计算,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指令。
CN201611215263.XA 2016-12-26 2016-12-26 一种利用NVIDIA Kepler GPU汇编指令加速的卷积优化方法及系统 Active CN106846235B (zh)

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)

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

* Cited by examiner, † Cited by third party
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平台的并行图像压缩感知方法

Patent Citations (3)

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

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