CN116091299B - 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 - Google Patents
一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN116091299B CN116091299B CN202310362600.1A CN202310362600A CN116091299B CN 116091299 B CN116091299 B CN 116091299B CN 202310362600 A CN202310362600 A CN 202310362600A CN 116091299 B CN116091299 B CN 116091299B
- Authority
- CN
- China
- Prior art keywords
- partition
- instruction
- loading
- register
- instruction sequence
- 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
Links
Images
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/0002—Inspection of images, e.g. flaw detection
- G06T7/0012—Biomedical image inspection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/40—Extraction of image or video features
- G06V10/44—Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V10/00—Arrangements for image or video recognition or understanding
- G06V10/70—Arrangements for image or video recognition or understanding using pattern recognition or machine learning
- G06V10/82—Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20081—Training; Learning
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Artificial Intelligence (AREA)
- Medical Informatics (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Biophysics (AREA)
- Databases & Information Systems (AREA)
- Biomedical Technology (AREA)
- Nuclear Medicine, Radiotherapy & Molecular Imaging (AREA)
- Radiology & Medical Imaging (AREA)
- Quality & Reliability (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于GPU的隐式GEMM卷积计算方法、装置、设备及介质。该方法包括:接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与计算模式匹配的指令序列;根据指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;根据指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算,第一分块或第二分块为二维32*32的数据。通过专用的数据加载指令对分块进行加载,所加载的分块较大,并且仅涉及到了从全局内存向寄存器的加载,而不局限于共享内存,提高了数据复用率和执行效率。
Description
技术领域
本发明涉及人工智能芯片技术,尤其涉及一种基于GPU的隐式GEMM卷积计算方法、装置、设备及介质。
背景技术
卷积神经网络中的卷积算子属于计算密集型,它的运算量占据整个神经网络计算量的绝大部分。因此卷积计算优化成为了一项非常重要也非常有意义的工作。
传统的卷积计算依赖共享内存来减少对全局内存的访问,而在使用共享内存时,多个线程需要不断同步,破坏了GPU强大的并行性,因此执行效率低。并且在数据加载时需要多次计算数据的坐标、多次加载完成数据加载工作,因此指令复杂并且指令数目多。
发明内容
本发明提供一种基于GPU的隐式GEMM卷积计算方法、装置、设备及介质,以实现高效的卷积计算。
第一方面,本发明提供了一种基于GPU的隐式GEMM卷积计算方法,包括:接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与所述计算模式匹配的指令序列,其中,所述计算模式包括第一模式或第二模式;
根据所述指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;
根据所述指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;
根据所述指令序列中的DP4A指令对所述第一分块和所述第二分块进行多路并行计算,其中,所述第一分块或所述第二分块为二维32*32的数据。
第二方面,本发明提供了一种基于GPU的隐式GEMM卷积计算装置,包括:指令序列生成模块,用于接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与所述计算模式匹配的指令序列,其中,所述计算模式包括第一模式或第二模式;
特征图加载模块,用于根据所述指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;
卷积核加载模块,用于根据所述指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;
多路并行计算模块,用于根据所述指令序列中的DP4A指令对所述第一分块和所述第二分块进行多路并行计算,其中,所述第一分块或所述第二分块为二维32*32的数据。
第三方面,本发明提供了计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的方法。
第四方面,本发明提供了一种计算机可执行指令的存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法。
附图说明
图1是本发明实施例一提供的一种基于GPU的隐式GEMM卷积计算方法的流程图;
图2是本发明实施例一提供的GEMM的卷积计算过程示意图;
图3是本发明实施例一提供的spear模式下的矩阵运算示意图;
图4是本发明实施例一提供的axe模式下的矩阵运算示意图;
图5是本发明实施例二提供的GEMM的卷积计算过程示意图;
图6是本发明实施例三提供的一种基于GPU的隐式GEMM卷积计算方法的流程图;
图7是本发明实施例四提供的一种计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种基于GPU的隐式GEMM卷积计算方法的流程图,本实施例可适用于高效的卷积计算的情况,该方法可以由基于GPU的隐式GEMM卷积计算装置来执行,该装置可以由软件和/或硬件的方式实现,方法包括:
步骤S101,接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与计算模式匹配的指令序列。
具体的说,计算模式包括第一模型获第二模式,第一模式具体可以是spear模式,第二模式具体可以是axe模式,并且spear模式所对应的卷积输出通道为32的倍数;axe模式所对应的卷积输出通道不是32的倍数。因此当用户根据特征图和卷积核确定出卷积输出通道后,可以根据卷积输出通道确定所对应计算模式,并将所确定的计算模式进行输入。而编译器则可以根据用户所确定的计算模式生成匹配的指令序列。其中,在指令序列中包括用于加载特征图的特征加载指令,例如LDM指令,用于加载卷积核的常数加载指令,例如CLD指令以及用于进行多路并行计算的DP4A指令,当然,本实施方式中仅是举例说明,而并不对指令序列中所包含的指令数量和指令类型进行限定。并且本实施方式中通过LDM指令可以直接从全局内存中获取特征块,而无需对特征图进行展开的操作,从而减少了大量的计算量,并且避免了共享内存的使用。并且本实施方式中的特征图和卷积核是三维的,而从特征图或卷积核中所提取的特征块是二维的。
例如,图2所示的GEMM的卷积计算过程示意图,特征图和卷积核中每个分块的大小都为32*32,在展开的情况下会占用内存,并且每个分块会存在的大量的重复数据。而在本申请中不会将特征图进行上述的展开操作,而是已知各分块和原始特征数据,以及各分块和原始卷积核的映射关系,并通过指令将所需要的块直接加载到寄存器中。
步骤S102,根据指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中。
可选的,根据指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中,包括:将指令序列中的特征加载指令发送给GPU的纹理单元加载模块;通过纹理单元加载模块按照分块与三维特征图原始数据的映射关系从全局内存中读取三维特征图的第一分块,并将第一分块加载到第一寄存器中。
具体的说,本实施方式中将展开后的特征图和卷积核矩阵划分为大小32*32的块,每个特征图块的数据由纹理单元加载模块通过一条指令LDM加载,特征图块数据是LDM指令通过原始数据展开而得到,高效且简单。
步骤S103,根据指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中。
可选的,根据指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中,包括:将指令序列中的常数加载指令发送给GPU的常数缓存矩阵加载模块;通过常数缓存矩阵加载模块按照分块与三维卷积核原始数据的映射关系从全局内存中读取卷积核的第二分块,并将第二分块加载到第二寄存器中。
每个卷积核块的数据由常数缓存矩阵加载模块通过一条指令CLD加载,如果应用是深度学习的算法模型,卷积核在训练的过程中不断更新,此时,可以通过LDM加载卷积核,此时纹理单元加载模块的负载是推理应用时的2倍。
步骤S104,根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算。
可选的,根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算,包括:将指令序列中的DP4A指令发送给GPU的数据计算单元;通过数据计算单元对第一分块和第二分块进行三路并行的线程点乘运算。
可选的,通过所述数据计算单元对第一分块和第二分块进行三路并行的线程点乘运算,包括:同时运行三路DP4A指令;针对每条DP4A指令将第一寄存器中第一分块中的指定线程和第二寄存器中第二分块的指定线程进行点乘;并将每条DP4A的点乘结果存放到第三寄存器中。
具体的说,在推理的情况下,实现C=A*B矩阵运算的伪代码如下,其中,A为特征图块,B为卷积核块:
For k=0...8:
One LDM instruction to load feature map tile step 1
One CLD weight to load weight tile step 2
3xDP4A instructions to compute tile result step 3
其中,每次循环实现了C=A*B的一次累加,块的大小是32*32,可以看出,基于GEMM算法的卷积实现核心是矩阵运算,大的矩阵运算被划分为块,每次累加是块大小的矩阵进行相乘。
例如,针对图2来说,通过纹理单元加载模块在全局内存中根据分块与特征图原始数据的映射关系从特征图中加载出0号分块到第一寄存器,通过常数缓存矩阵加载模块按照分块与卷积核原始数据的映射关系加载3号分块到第二寄存器,然后将0号和3号分块在寄存器中进行矩阵运算,并且两个分块都是32*32。其中,在0号和3号分块在进行矩阵运算时内部三路并行,即0号分块为32*32的数据,同理3号也为32*32的数据,则将各分块中的数据采用三路进行并行计算,即同一时刻三个数据同时进行计算,从而提高了计算效率。展开的规则是固定的,因此分块和原始数据的对应关系是已知的,而无需将特征图原始数据执行展开的操作。本申请一方面无需进行展开,另一方面是多路并行计算,并且所加载的分块比较大为32*32的数据,而且也不需要共享内存。
在一个具体实现中,如图3所示为spear模式下的矩阵运算示意图,其中,GPU的SIMD宽度为32,当输出通道数为32的倍数时,本发明利用了指令的广播功能,实现32倍的数据复用率和32倍的weight复用率。在具体GEMM的分块设置时,分块大小设置为32*32。在spear模式下单路DP4A的指令序列:
DP4A.rp7, r24, r24, r0.ln0, r16
DP4A.rp7, r25, r25, r0.ln8, r16
DP4A.rp7, r26, r26, r1.ln0, r16
DP4A.rp7, r27, r27, r1.ln8, r16
…
DP4A.rp7, r54, r54, r15.ln0, r16
DP4A.rp7, r55, r55, r15.ln8, r16
以上指令序列一共32条,完成了矩阵C的计算,C一共占用1024个dword,存放在32个寄存器r24~r55中。r0~r15是存放特征图的寄存器,r16~r23是存放卷积核的寄存器。r0.ln0读取r0的一条lane,将其广播至32条lane,然后与另外一个操作数相乘,这里,特征图的数据复用率是32。 以上的32条指令序列,反复利用卷积核数据r16~r23进行计算,因此,卷积核的数据复用率是32。
其中,如图3所示,当输出通道数为32的倍数时,由于CPU寄存器有32个lane,A是0分块,B是3号分块,图示是在寄存器中的内部卷积计算过程,一个寄存器有16个线程(图中r0的两行),每个线程为4bit(图中的左上角四个白圆圈为一个线程),0号分块总共放到10个寄存器中进行保存,3号分块放到8个寄存器中进行保存。其中,“DP4A.rp7, r24, r24,r0.ln0, r16 ”指令的意思是: rp7指的是重复8次,r0寄存器的第一个线程(水平4个点)和r16寄存器中的第一个线程(竖直4个点)进行点乘,结果放到r24寄存器中,然后r0的第二个线程与r16第二个线程点乘,点积放到r24。在3路DP4A的情况下,硬件在同一cycle可以并行运行3路DP4A,因此,上面32条指令序列,一共11条指令(10条3路DP4A, 1一条2路DP4A)就可以完成C=AxB的运算,执行效率提升近3倍。
在另一个具体实现中,如图4所示为axe模式下的矩阵运算示意图,A的大小为nx32, B的大小为32x32,C的大小为nx32,其中n=8。A和B的数据类型为int8或者uint8,C的数据类型为int32。下面axe模式下、n=8时,单路DP4A的指令序列:
DP4A.rp7, r24, r24, r8.ln0, r0
DP4A.rp7, r25, r25, r8.ln8, r0
DP4A.rp7, r26, r26, r9.ln0, r0
DP4A.rp7, r27, r27, r9.ln8, r0
…
DP4A.rp7, r30, r30, r11.ln0, r0
DP4A.rp7, r31, r31, r11.ln8, r0
其中,以上指令序列一共8条,完成了矩阵C的计算,C一共占用256个dword,存放在8个寄存器r24~r31中。r0~r7是存放特征图的寄存器,r8~r11是存放卷积核的寄存器。r0.ln0读取r0的一条lane,将其广播至32条lane,然后与另外一个操作数相乘,这里,卷积核的数据复用率是32。 以上的8条指令序列,反复利用特征图数据r0~r7进行计算,因此,特征图的数据复用率是8。
本申请通过专用的数据加载指令对分块进行加载,所加载的分块较大,并且仅涉及到了从全局内存向寄存器的加载,而不局限于共享内存,从而提高了数据复用率。
实施例二
图5为本申请实施例二提供的一种基于GPU的隐式GEMM卷积计算方法的流程图,本实施例以上述实施例为基础,在根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算之后,还包括:
步骤S201,接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与计算模式匹配的指令序列。
步骤S202,根据指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中。
可选的,根据指令序列中的LDM指令从全局内存中读取特征图的第一分块并加载到第一寄存器中,包括:将指令序列中的LDM指令发送给GPU的纹理单元加载模块;通过纹理单元加载模块按照分块与特征图原始数据的映射关系从全局内存中读取特征图的第一分块,并将第一分块加载到第一寄存器中。
步骤S203,根据指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中。
可选的,根据指令序列中的CLD指令从全局内存中读取卷积核的第二分块并加载到第二寄存器中,包括:将指令序列中的CLD指令发送给GPU的常数缓存矩阵加载模块;通过常数缓存矩阵加载模块按照分块与卷积核原始数据的映射关系从全局内存中读取卷积核的第二分块,并将第二分块加载到第二寄存器中。
步骤S204,根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算。
可选的,根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算,包括:将指令序列中的DP4A指令发送给GPU的数据计算单元;通过数据计算单元对第一分块和第二分块进行三路并行的线程点乘运算。
可选的,通过所述数据计算单元对第一分块和第二分块进行三路并行的线程点乘运算,包括:同时运行三路DP4A指令;针对每条DP4A指令将第一寄存器中第一分块中的指定线程和第二寄存器中第二分块的指定线程进行点乘;并将每条DP4A的点乘结果存放到第三寄存器中。
步骤S205,对计算结果进行检测,当确定检测结果异常时进行报警提示。
具体的说,本实施方式中当获取到第一分块和第二分块的线程点乘运算结果后,还会对计算结果进行检测,具体是检测计算结果中是否存在乱码或者计算结果明显不符号要求的情况。例如,当确定运算结果中出现乱码时,则确定检测结果异常,此时会进行报警提示。本实施方式中可以是采用语音的形式进行报警提示或者灯光闪烁的形式进行报警,本实施方式中并不限定报警的具体形式。
另外,当计算结果与所对应的计算模式的输出通道数不匹配时,也会进行报警提示,例如,所采用的计算模式为spear模式,但计算结果的输出通道数确是35,而并不是32的倍数,此时则可以确定检测结果异常,并且也会采用报警的方式向用户进行提示,以告知用户尽快进行检修。当然,本实施方式中仅是举例说明,而并不对检测结果的异常情况进行限定。
本申请通过专用的数据加载指令对分块进行加载,所加载的分块较大,并且仅涉及到了从全局内存向寄存器的加载,而不局限于共享内存,从而提高了数据复用率。通过对计算结果进行检测,并且在检测结果异常时进行报警,以便于用户及时进行检修,从而提高卷积计算的效率。
实施例三
图6为本发明实施例三提供的一种基于GPU的隐式GEMM卷积计算装置的结构示意图,该装置可以执行上述各实施例中涉及到的基于GPU的隐式GEMM卷积计算方法。该装置可采用软件和/或硬件的方式实现,如图6所示,基于GPU的隐式GEMM卷积计算装置,包括:指令序列生成模块410、特征图加载模块420、卷积核加载模块430和多路并行计算模块440。
指令序列生成模块410,用于接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与计算模式匹配的指令序列,其中,计算模式包括第一模式或第二模式;
特征图加载模块420,用于根据指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;
卷积核加载模块430,用于根据指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;
多路并行计算模块440,用于根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算,其中,第一分块或第二分块中为二维32*32的数据。
可选的,特征图加载模块,用于将指令序列中的特征加载指令指令发送给GPU的纹理单元加载模块;
通过纹理单元加载模块按照分块与三维特征图原始数据的映射关系从全局内存中读取三维特征图的第一分块,并将第一分块加载到第一寄存器中。
可选的,卷积核加载模块,用于将指令序列中的常数加载指令发送给GPU的常数缓存矩阵加载模块;
通过常数缓存矩阵加载模块按照分块与三维卷积核原始数据的映射关系从全局内存中读取三维卷积核的第二分块,并将第二分块加载到第二寄存器中。
可选的,多路并行计算模块,用于将指令序列中的DP4A指令发送给GPU的数据计算单元;
通过数据计算单元对第一分块和第二分块进行三路并行的线程点乘运算。
可选的,多路并行计算模块,用于同时运行三路DP4A指令;
针对每条DP4A指令将第一寄存器中第一分块中的指定线程和第二寄存器中第二分块的指定线程进行点乘;
并将每条DP4A的点乘结果存放到第三寄存器中。
可选的,第一模式所对应的卷积输出通道为32的倍数;
第二模式所对应的卷积输出通道不是32的倍数。
可选的,装置还包括检测模块,用于对计算结果进行检测;
当确定检测结果异常时进行报警提示。
实施例四
图7为本发明实施例四提供的一种计算机设备的结构示意图,如图7所示,该计算机设备包括处理器610、存储器620、输入装置630和输出装置640;计算机设备中处理器610的数量可以是一个或多个,图7中以一个处理器610为例;计算机设备中的处理器610、存储器620、输入装置630和输出装置640可以通过总线或其他方式连接,图7中以通过总线连接为例。
存储器620作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的基于GPU的隐式GEMM卷积计算方法对应的程序指令/模块。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的基于GPU的隐式GEMM卷积计算。
一种基于GPU的隐式GEMM卷积计算方法,包括:
接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与计算模式匹配的指令序列,其中,计算模式包括第一模式或第二模式;
根据指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;
根据指令序列中的常数加载指令指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;
根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算,其中,第一分块或第二分块为二维32*32的数据。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置630可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入。输出装置640可包括显示屏等显示设备。
实施例五
本发明实施例五还提供一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行一种基于GPU的隐式GEMM卷积计算方法;
接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与计算模式匹配的指令序列,其中,计算模式包括第一模式或第二模式;
根据指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;
根据指令序列中的常数加载指令指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;
根据指令序列中的DP4A指令对第一分块和第二分块进行多路并行计算,其中,第一分块或第二分块为二维32*32的数据。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上的方法操作,还可以执行本发明任意实施例所提供的基于GPU的隐式GEMM卷积计算方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory, ROM)、随机存取存储器(RandomAccess Memory, RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。
值得注意的是,上述循环神经网络的参数量化装置以及量化网络中的推断装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (7)
1.一种基于GPU的隐式GEMM卷积计算方法,其特征在于,包括:
接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与所述计算模式匹配的指令序列,其中,所述计算模式包括第一模式或第二模式,所述第一模式所对应的卷积输出通道为32的倍数,所述第二模式所对应的卷积输出通道不是32的倍数;
根据所述指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;
根据所述指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;
根据所述指令序列中的DPA4指令对所述第一分块和所述第二分块进行多路并行计算,其中,所述第一分块或所述第二分块为二维32*32的数据;
所述根据所述指令序列中的DP4A指令对所述第一分块和所述第二分块进行多路并行计算,包括:
将所述指令序列中的DP4A指令发送给GPU的数据计算单元;
同时运行三路DP4A指令;
针对每条DP4A指令将所述第一寄存器中第一分块中的指定线程和所述第二寄存器中第二分块的指定线程进行点乘;
并将每条DP4A的点乘结果存放到第三寄存器中。
2.根据权利要求1所述的方法,其特征在于,所述根据所述指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中,包括:
将所述指令序列中的特征加载指令发送给GPU的纹理单元加载模块;
通过所述纹理单元加载模块按照分块与三维特征图原始数据的映射关系从全局内存中读取三维特征图的第一分块,并将所述第一分块加载到所述第一寄存器中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中,包括:
将所述指令序列中的常数加载指令发送给GPU的常数缓存矩阵加载模块;
通过所述常数缓存矩阵加载模块按照分块与三维卷积核原始数据的映射关系从全局内存中读取三维卷积核的第二分块,并将所述第二分块加载到第二寄存器中。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据所述指令序列中的DP4A指令对所述第一分块和所述第二分块进行多路并行计算之后,还包括:
对计算结果进行检测;
当确定检测结果异常时进行报警提示。
5.一种基于GPU的隐式GEMM卷积计算装置,其特征在于,包括:
指令序列生成模块,用于接收用户输入的隐式GEMM卷积计算模式,并通过编译器生成与所述计算模式匹配的指令序列,其中,所述计算模式包括第一模式或第二模式,所述第一模式所对应的卷积输出通道为32的倍数,所述第二模式所对应的卷积输出通道不是32的倍数;
特征图加载模块,用于根据所述指令序列中的特征加载指令从全局内存中读取三维特征图的第一分块并加载到第一寄存器中;
卷积核加载模块,用于根据所述指令序列中的常数加载指令从全局内存中读取三维卷积核的第二分块并加载到第二寄存器中;
多路并行计算模块,用于根据所述指令序列中的DPA4指令对所述第一分块和所述第二分块进行多路并行计算,其中,所述第一分块或所述第二分块为二维32*32的数据;
多路并行计算模块,用于将所述指令序列中的DP4A指令发送给GPU的数据计算单元;
同时运行三路DP4A指令;
针对每条DP4A指令将所述第一寄存器中第一分块中的指定线程和所述第二寄存器中第二分块的指定线程进行点乘;
并将每条DP4A的点乘结果存放到第三寄存器中。
6.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-4中任一项所述的方法。
7.一种计算机可执行指令的存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-4中任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310362600.1A CN116091299B (zh) | 2023-04-07 | 2023-04-07 | 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310362600.1A CN116091299B (zh) | 2023-04-07 | 2023-04-07 | 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116091299A CN116091299A (zh) | 2023-05-09 |
CN116091299B true CN116091299B (zh) | 2023-06-23 |
Family
ID=86208658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310362600.1A Active CN116091299B (zh) | 2023-04-07 | 2023-04-07 | 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116091299B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115480919A (zh) * | 2022-09-19 | 2022-12-16 | 深圳思谋信息科技有限公司 | 卷积优化运算方法、装置、计算机设备及存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797985B (zh) * | 2020-07-22 | 2022-11-22 | 哈尔滨工业大学 | 一种基于gpu的卷积运算内存访问优化方法 |
CN114970849A (zh) * | 2022-06-28 | 2022-08-30 | 西安交通大学 | 一种硬件加速器多阵列并行计算方法及系统 |
CN115880132B (zh) * | 2023-02-06 | 2023-05-23 | 南京砺算科技有限公司 | 图形处理器、矩阵乘法任务处理方法、装置及存储介质 |
-
2023
- 2023-04-07 CN CN202310362600.1A patent/CN116091299B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115480919A (zh) * | 2022-09-19 | 2022-12-16 | 深圳思谋信息科技有限公司 | 卷积优化运算方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116091299A (zh) | 2023-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11734006B2 (en) | Deep vision processor | |
CN109240746B (zh) | 一种用于执行矩阵乘运算的装置和方法 | |
CN108205701B (zh) | 一种执行卷积计算的系统及方法 | |
CN105892989B (zh) | 一种神经网络加速器及其运算方法 | |
CN107301456B (zh) | 基于向量处理器的深度神经网络多核加速实现方法 | |
Tanomoto et al. | A cgra-based approach for accelerating convolutional neural networks | |
US20210350204A1 (en) | Convolutional neural network accelerator | |
CN107085562B (zh) | 一种基于高效复用数据流的神经网络处理器及设计方法 | |
CN111897579A (zh) | 图像数据处理方法、装置、计算机设备和存储介质 | |
CN105930902A (zh) | 一种神经网络的处理方法、系统 | |
CN109885406B (zh) | 算子计算优化方法、装置、设备及存储介质 | |
Motamedi et al. | Fast and energy-efficient CNN inference on IoT devices | |
CN105373517A (zh) | 基于Spark的分布式稠密矩阵求逆并行化运算方法 | |
CN111783966A (zh) | 一种深度卷积神经网络硬件并行加速器的硬件装置及方法 | |
CN108470211B (zh) | 一种卷积计算的实现方法、设备和计算机存储介质 | |
CN115983348A (zh) | 支持卷积神经网络扩展指令的risc-v加速器系统 | |
Wang et al. | HE-Booster: an efficient polynomial arithmetic acceleration on GPUs for fully homomorphic encryption | |
CN112446007A (zh) | 一种矩阵运算方法、运算装置以及处理器 | |
CN116091299B (zh) | 一种基于gpu的隐式gemm卷积计算方法、装置、设备及介质 | |
Zhang et al. | Design and implementation of deep neural network for edge computing | |
CN114239816B (zh) | 一种卷积神经网络-图卷积神经网络可重构硬件加速架构 | |
CN113095476A (zh) | 一种用于通用张量计算的硬件加速装置及方法 | |
CN116088773B (zh) | 一种基于隐式gemm卷积的数据加载方法、装置、设备及介质 | |
CN117473212B (zh) | Ntt算法的gpu加速方法、装置、设备及存储介质 | |
CN113504942B (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 |