由计算机执行的特征图的卷积处理方法、装置和电子设备与流程

文档序号:26913753发布日期:2021-10-09 15:39阅读:104来源:国知局
由计算机执行的特征图的卷积处理方法、装置和电子设备与流程

1.本发明涉及图像处理的技术领域,尤其是涉及一种由计算机执行的特征图的卷积处理方法、装置和电子设备。


背景技术:

2.gpu上卷积算子的实现方法有三种,第一种是基于重排图像为矩阵(im2col)算法,将卷积算子转换成矩阵乘法算子,这种方法可以复用优化好的矩阵乘法算子库,但是会引入额外的临时空间和内存拷贝操作;第二种是winograd卷积算法,这种方法从算法上减少了实际的计算量,但是会引入额外的临时空间,并且由于精度问题无法充分利用张量核心计算单元;第三种是基于隐式矩阵乘法(implicit gemm)的卷积算法,这种方法不需要显式地把特征图转换成矩阵实际存储下来,因此不会引入额外的临时空间,这种方法只需要一个计算内核(kernel)就能完成卷积算子的计算,相比于其它两种方法能够更好地利用8位、4位整形的张量核心计算单元。
3.基于隐式矩阵乘法(implicit gemm)的卷积算法的实现在很长时间内是一个空白。虽然最近,对基于implicit gemm算法的8位、4位整形的张量核心卷积算子实现展开了一些相关的研究。但是,目前的卷积算子仍然存在如下缺陷:卷积算子在计算输入特征图的访存地址时,引入了分支判断和额外的整型乘加操作,这使得实现的卷积算子模板的性能并没有达到最优。
4.综上,现有的特征图的卷积处理算法无法使得卷积算子模板的性能达到最优。


技术实现要素:

5.有鉴于此,本发明的目的在于提供一种由计算机执行的特征图的卷积处理方法、装置和电子设备,以缓解现有的特征图的卷积处理算法无法使得卷积算子模板性能达到最优的技术问题。
6.第一方面,本发明实施例提供了一种由计算机执行的特征图的卷积处理方法,包括:基于初始访存偏移量和偏移量增量确定当前访存偏移量;根据所述当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;对所述待计算特征图分块矩阵和所述待计算权重分块矩阵执行矩阵乘法操作,得到所述待计算特征图张量的分块计算结果;根据偏移量增量对所述当前访存偏移量进行更新,并执行所述根据所述当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵的步骤,直至遍历所述待计算特征图张量中的所有待计算特征图分块矩阵为止,得到多个分块计算结果;对所述多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,得到所述待计算特征图张量的卷积计算结果。
7.进一步的,所述基于初始访存偏移量和偏移量增量确定当前访存偏移量,包括:获取所述初始访存偏移量和所述偏移量增量;根据所述初始访存偏移量和所述偏移量增量计
算所述当前访存偏移量。
8.进一步的,当所述当前访存偏移量为所述初始访存偏移量时,所述根据所述初始访存偏移量和所述偏移量增量计算所述当前访存偏移量,包括:确定所述偏移量增量为零;将所述初始访存偏移量作为所述当前访存偏移量。
9.进一步的,所述方法还包括:基于初始的输入的通道数、初始的卷积核的r维度的坐标和初始的卷积核的s维度的坐标,计算所述初始访存偏移量;计算每轮的访存偏移量,并基于第iter+1轮的访存偏移量和第iter轮的访存偏移量,计算所述偏移量增量。
10.进一步的,所述初始访存偏移量为根据访存偏移量计算算式计算得到的,其中,f
iter
表示第iter轮迭代的访存偏移量,c
iter
表示第iter轮迭代的输入的通道数,k表示线程块的线程初始读取的坐标,r、s表示卷积核的大小,r
iter
表示第iter轮迭代的中间量,r
iter
表示第iter轮迭代的卷积核的r维度的坐标,s
iter
表示第iter轮迭代的卷积核的s维度的坐标,c
stride
表示c
iter
对应的权重,h
stride
表示r
iter
对应的权重,w
stride
表示s
iter
对应的权重;所述偏移量增量为根据偏移量增量计算算式δf
iter
=f
iter+1
—f
iter
,其中,计算得到的,其中,δf
iter
表示第iter轮的偏移量增量,f
iter+1
表示第iter+1轮的访存偏移量,f
iter
表示第iter轮的访存偏移量,bk表示线程块每轮处理的分块矩阵的大小bm
×
bn
×
bk中的一个参量。
11.进一步的,根据所述当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵,包括:根据所述当前访存偏移量确定所述待计算特征图分块矩阵在所述待计算特征图张量中的第一位置和所述待计算权重分块矩阵在所述待计算权重张量中的第二位置;根据所述第一位置和所述第二位置获取所述待计算特征图分块矩阵和所述待计算权重分块矩阵。
12.进一步地,所述遍历所述待计算特征图张量中的所有待计算特征图分块矩阵,包括:判断所述待计算特征图张量中是否存在未参与计算的待计算特征图分块矩阵;如果不存在,则确定已遍历所述待计算特征图张量中的所有待计算特征图分块矩阵。
13.进一步的,所述初始访存偏移量和所述偏移量增量存储于设备内核的参数缓冲区内,所述偏移量增量的大小是以r
×
s为周期的,其中,r、s表示卷积核的大小。
14.第二方面,本发明实施例还提供了一种由计算机执行的特征图的卷积处理装置,包括:确定单元,用于基于初始访存偏移量和偏移量增量确定当前访存偏移量;获取单元,用于根据所述当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;矩阵乘法单元,用于对所述待计算特征图分块矩阵和所述待计算权重分块矩阵执行矩阵乘法操作,得到所述待计算特征图张量的分块计算结果;遍历计算单元,用于根据偏移量增量对所述当前访存偏移量进行更新,并执行所述根据所述当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵的步骤,直至遍历所述待计算特征图张量中的所有待计算特征图分块矩阵为止,得到多个分块计算结果;累加操作和添加偏置项单元,用于对所述多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,得到所述待计算特征图张量的卷积计算结果。
15.第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的方法的步骤。
16.第四方面,本发明实施例还提供了一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行上述第一方面任一项所述的方法的步骤。
17.在本发明实施例中,基于初始访存偏移量和偏移量增量确定当前访存偏移量;根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;进而,对待计算特征图分块矩阵和待计算权重分块矩阵执行矩阵乘法操作,得到待计算特征图张量的分块计算结果,得到多个分块计算结果;以及,对多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,进而得到待计算特征图张量的卷积计算结果。通过上述描述可知,本发明实施例的由计算机执行的特征图的卷积处理方法通过初始访存偏移量和偏移量增量来确定当前访存偏移量,无需通过额外的乘、加操作来计算访存偏移量,省去了访存偏移量计算所引入的开销,提升计算机的处理性能。基于本发明实施例的方法实现的卷积算子模板的性能能够达到最优,缓解了现有的特征图的卷积处理算法无法使得卷积算子模板的性能达到最优的技术问题。
附图说明
18.为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
19.图1为本发明实施例提供的一种电子设备的示意图;
20.图2为本发明实施例提供的一种由计算机执行的特征图的卷积处理方法的流程图;
21.图3为本发明实施例提供的另一种由计算机执行的特征图的卷积处理方法的流程
图;
22.图4为本发明实施例提供的根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵的方法流程图;
23.图5为本发明实施例提供的卷积算子转换成矩阵乘法运算的示意图;
24.图6为本发明实施例提供的偏移量增量是以r
×
s为周期的示意图;
25.图7为本发明实施例提供的矩阵乘法的计算过程的示意图;
26.图8为本发明实施例提供的一种由计算机执行的特征图的卷积处理装置的示意图。
具体实施方式
27.下面将结合实施例对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
28.实施例1:
29.首先,参照图1来描述用于实现本发明实施例的电子设备100,该电子设备可以用于运行本发明各实施例的特征图的卷积处理方法。
30.如图1所示,电子设备100包括一个或多个处理器102、一个或多个存储器104、输入装置106、输出装置108以及摄像机110,这些组件通过总线系统112和/或其它形式的连接机构(未示出)互连。应当注意,图1所示的电子设备100的组件和结构只是示例性的,而非限制性的,根据需要,所述电子设备也可以具有其他组件和结构。
31.所述处理器102可以采用数字信号处理器(dsp,digital signal processing)、现场可编程门阵列(fpga,field-programmable gate array)、可编程逻辑阵列(pla,programmable logic array)和asic(application specific integrated circuit)中的至少一种硬件形式来实现,所述处理器102可以是中央处理单元(cpu,central processing unit)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制所述电子设备100中的其它组件以执行期望的功能。
32.所述存储器104可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(ram)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(rom)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器102可以运行所述程序指令,以实现下文所述的本发明实施例中(由处理器实现)的客户端功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
33.所述输入装置106可以是用户用来输入指令的装置,并且可以包括键盘、鼠标、麦克风和触摸屏等中的一个或多个。
34.所述输出装置108可以向外部(例如,用户)输出各种信息(例如,图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
35.所述摄像机110用于进行图像的采集,其中,摄像机所采集的图像经过特征提取后,得到待计算特征图,进而待计算特征图再经过所述特征图的卷积处理方法进行处理之后得到待计算特征图张量的卷积计算结果,例如,摄像机可以拍摄用户期望的图像(例如照片、视频等),然后,将该图像特征提取后,得到待计算特征图,进而待计算特征图再经过所述特征图的卷积处理方法进行处理之后得到待计算特征图张量的卷积计算结果,摄像机还可以将所拍摄的图像存储在所述存储器104中以供其它组件使用。
36.示例性地,用于实现根据本发明实施例的由计算机执行的特征图的卷积处理方法的电子设备可以被实现为诸如智能手机、平板电脑等智能移动终端。
37.实施例2:
38.根据本发明实施例,提供了一种由计算机执行的特征图的卷积处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
39.图2是根据本发明实施例的一种由计算机执行的特征图的卷积处理方法的流程图,如图2所示,该方法包括如下步骤:
40.步骤s202,基于初始访存偏移量和偏移量增量确定当前访存偏移量;
41.在本发明实施例中,上述初始访存偏移量和偏移量增量为预先计算得到的,可以为预先在主机中计算得到上述初始访存偏移量和偏移量增量,然后,再将计算得到的初始访存偏移量和偏移量增量保存至设备卷积内核的参数缓冲区中,偏移量增量的大小是以r
×
s为周期的,其中,r、s表示卷积核的大小。
42.上述当前访存偏移量用于确定当前迭代处理时的特征图分块矩阵和权重分块矩阵在特征图张量和权重张量中的位置。
43.步骤s204,根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;
44.步骤s206,对待计算特征图分块矩阵和待计算权重分块矩阵执行矩阵乘法操作,得到待计算特征图张量的分块计算结果;
45.在执行矩阵乘法操作时,每个线程采用待计算特征图分块矩阵的行乘以待计算权重分块矩阵的列的方式进行。
46.步骤s208,判断是否遍历待计算特征图张量中的所有待计算特征图分块矩阵,如果未遍历,则根据偏移量增量对当前访存偏移量进行更新,并返回执行根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵的步骤,如此得到包括步骤s206中得到的分块计算结果的多个分块计算结果;如果已遍历,则执行步骤s210;
47.步骤s210,对多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,得到待计算特征图张量的卷积计算结果。
48.上述对多个分块计算结果执行累加操作是指各个线程对得到的多个分块计算结果进行加和的计算,上述对累加操作后的结果添加偏置项是指各个线程获取自身的偏置项,进而将获取得到的偏置项与累加操作后的结果相加。
49.在本发明实施例中,基于初始访存偏移量和偏移量增量确定当前访存偏移量;根
据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;进而,对待计算特征图分块矩阵和待计算权重分块矩阵执行矩阵乘法操作,得到待计算特征图张量的分块计算结果,并遍历待计算特征图张量中的所有待计算特征图分块矩阵,得到多个分块计算结果;以及,对多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,进而得到待计算特征图张量的卷积计算结果。通过上述描述可知,本发明实施例的由计算机执行的特征图的卷积处理方法通过初始访存偏移量和偏移量增量来确定当前访存偏移量,无需通过额外的乘、加操作来计算访存偏移量,省去了访存偏移量计算所引入的开销,提升了计算机处理性能。基于本发明实施例的方法实现的卷积算子模板的性能能够达到最优,缓解了现有的特征图的卷积处理算法无法使得卷积算子模板的性能达到最优的技术问题。
50.上述内容对本发明实施例的特征图的卷积处理方法进行了简要介绍,下面对其中涉及到的内容进行详细描述。
51.在本发明的另一个可选实施例中,参考图3,本发明实施例的由计算机执行的特征图的卷积处理方法包括如下步骤:
52.步骤s202,基于初始访存偏移量和偏移量增量确定当前访存偏移量;
53.步骤s204,根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;
54.步骤s205,基于初始访存偏移量和偏移量增量对当前访存偏移量更新,得到更新后的访存偏移量;根据更新后的访存偏移量获取待计算特征图张量中的下一待计算特征图分块矩阵和待计算权重张量中的下一待计算权重分块矩阵,并将更新后的访存偏移量作为当前访存偏移量;
55.步骤s206,对待计算特征图分块矩阵和待计算权重分块矩阵执行矩阵乘法操作,得到待计算特征图张量的分块计算结果;
56.步骤s207,将下一待计算特征图分块矩阵块作为待计算特征图分块矩阵,并将下一待计算权重分块矩阵块作为待计算分块权重矩阵;
57.步骤s208,判断是否遍历待计算特征图张量中的所有待计算特征图分块矩阵,如果未遍历,则返回步骤s205;如果已遍历,则执行步骤s210;
58.步骤s210,对多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,得到待计算特征图张量的卷积计算结果。
59.在本发明的一个可选实施例中,基于初始访存偏移量和偏移量增量确定当前访存偏移量,包括:获取初始访存偏移量和偏移量增量;根据初始访存偏移量和偏移量增量计算当前访存偏移量。
60.在本发明的一个可选实施例中,当当前访存偏移量为初始访存偏移量时,根据初始访存偏移量和偏移量增量计算当前访存偏移量,包括:确定偏移量增量为零;将初始访存偏移量作为当前访存偏移量。
61.在本发明实施例中,基于初始的输入的通道数、初始的卷积核的r维度的坐标和初始的卷积核的s维度的坐标,计算初始访存偏移量;计算每轮的访存偏移量,并基于第iter+1轮的访存偏移量和第iter轮的访存偏移量,计算偏移量增量。
62.具体的,初始访存偏移量为根据访存偏移量计算算式
计算得到的,其中,f
iter
表示第iter轮迭代的访存偏移量,c
iter
表示第iter轮迭代的输入的通道数,k表示线程块的线程初始读取的坐标,r、s表示卷积核的大小,r
iter
表示第iter轮迭代的中间量,r
iter
表示第iter轮迭代的卷积核的r维度的坐标,s
iter
表示第iter轮迭代的卷积核的s维度的坐标,c
stride
表示c
iter
对应的权重,h
stride
表示r
iter
对应的权重,w
stride
表示s
iter
对应的权重;
63.偏移量增量为根据偏移量增量计算算式计算得到的,其中,δf
iter
表示第iter轮的偏移量增量,f
iter+1
表示第iter+1轮的访存偏移量,f
iter
表示第iter轮的访存偏移量,bk表示线程块每轮处理的分块矩阵的大小bm
×
bn
×
bk中的一个参量。
64.在本发明的一个可选实施例中,参考图4,根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵,包括:
65.步骤s401,根据当前访存偏移量确定待计算特征图分块矩阵在待计算特征图张量中的第一位置和待计算权重分块矩阵在待计算权重张量中的第二位置;
66.步骤s402,根据第一位置和第二位置获取待计算特征图分块矩阵和待计算权重分块矩阵。
67.下面以一个具体的实施例对本发明的由计算机执行的特征图的卷积处理方法进行详细介绍:
68.假设输入的特征图的维度为(n,c,h,w),其中,n代表batch(批处理的张数),c代表输入的通道数,h、w代表特征图的高和宽。权重张量的维度为(k,c,r,s),其中,k代表输出的通道数,c代表输入的通道数,r、s代表卷积核的大小,若根据本发明实施例的方法实现卷积算子,具体方案如下:
69.(1)在主机端计算初始访存偏移量和偏移量增量。若转换成矩阵乘法算子,待计算特征图张量对应的特征图矩阵大小为(n
×
h
×
w)
×
(c
×
r
×
s),待计算权重张量对应的权重矩阵大小为(c
×
r
×
s)
×
k。假设线程块(warp)每轮处理的分块矩阵的大小为bm
×
bn
×
bk,线程块的线程初始读取的坐标为k,那么初始访存偏移量为:
70.其中,f0表示第0轮迭代的访存偏移量(即初始访存偏移量),c0表示第0轮迭代的输入的通道数,k表示线程块的线程初始读取的坐标,r、s表示卷积核的大小,r0表示第0轮迭代的中间量,r0表示第0轮迭代的卷积核的r维度的坐标,s0表示第0轮迭代的卷积核的s维度的坐标,c
stride
表示c0对应的权重,h
stride
表示r0对应的权重,w
stride
表示s0对应的权重。
71.第iter轮迭代的访存偏移量为:
72.其中,f
iter
表示第iter轮迭代的访存偏移量,c
iter
表示第iter轮迭代的输入的通道数,k表示线程块的线程初始读取的坐标,r、s表示卷积核的大小,r
iter
表示第iter轮迭代的中间量,r
iter
表示第iter轮迭代的卷积核的r维度的坐标,s
iter
表示第iter轮迭代的卷积核的s维度的坐标,c
stride
表示c
iter
对应的权重,h
stride
表示r
iter
对应的权重,w
stride
表示s
iter
对应的权重。
73.偏移量增量为:
74.其中,δf
iter
表示第iter轮的偏移量增量,f
iter+1
表示第iter+1轮的访存偏移量,f
iter
表示第iter轮的访存偏移量,bk表示线程块每轮处理的分块矩阵的大小bm
×
bn
×
bk中的一个参量。
75.我们发现,偏移量增量的大小是以r
×
s为周期的,其中,r、s表示卷积核的大小,同一个线程块内的线程读取的初始访存偏移量和分块矩阵的大小相关,当分块在k上的维度为bk时,则有bk种不同的初始访存偏移量,所以共存储有bk个初始访存偏移量和r
×
s个偏
移量增量,在进行初始访存偏移量的读取时,每个线程读取各自的初始访存偏移量。
76.(2)将卷积算子的各项参数(包括权重张量和特征图张量)、步骤(1)中计算的初始访存偏移量和偏移量增量打包成设备内核的参数,存储于参数缓冲区,然后调用设备的卷积内核(kernel)进行卷积计算;
77.(3)线程块中的每个线程首先从kernel的参数缓冲区中读取各自对应的初始访存偏移量,然后根据初始访存偏移量从全局内存中读取待计算特征图张量中的一个待计算特征图分块矩阵和待计算权重张量中的一个待计算权重分块矩阵到寄存器文件中,进而再将寄存器文件中的待计算特征图分块矩阵和待计算权重分块矩阵写入共享内存。接着每个线程交换用于双缓冲区优化的共享内存指针。
78.(4)线程块的每个线程再从参数缓冲区中读取偏移量增量,进而根据初始访存偏移量和偏移量增量对上一访存偏移量(第一轮迭代过程中的上一访存偏移量为初始访存偏移量)进行更新,得到更新后的访存偏移量,然后根据更新后的访存偏移量从全局内存中读取待计算特征图张量中的下一待计算特征图分块矩阵和待计算权重张量中的下一待计算权重分块矩阵到寄存器文件中;
79.(5)线程块中的一个线程从共享内存中读取待计算特征图分块矩阵的一行和待计算权重分块矩阵的一列,然后用int4 tensorcore(4位整型的张量核心)计算指令对读取的数据执行矩阵乘法操作,在执行计算的同时,从共享内存中读取待计算特征图分块矩阵的下一行和待计算权重分块矩阵的下一列的数据到寄存器,重复步骤(5)直到待计算特征图分块矩阵待计算权重分块矩阵的数据全部被消耗完;
80.(6)每个线程将从全局内存中读取的下一待计算特征图分块矩阵和下一待计算权重分块矩阵作为待计算特征图分块矩阵和待计算权重分块矩阵写到共享内存中,然后交换共享内存的指针。回到步骤(4)开始进行下一轮的迭代,直到遍历待计算特征图张量中的所有待计算特征图分块矩阵为止;
81.(7)每个线程将各轮迭代得到的结果进行累加,累加器的结果写入共享内存中,然后重新排列线程的顺序,每个线程从共享内存中读取累加器的结果到寄存器,最后每个线程执行添加偏置项的操作(每个线程会被映射到特定的通道,然后读取通道的偏置项,把偏置项加到结果上面,该过程体现了本方法支持融合逐通道的偏置累加操作,能很好的满足真实模型部署中的需求),得到卷积计算结果,并将卷积计算结果写到全局内存中。
82.图5中展示了当n=1,c=3,h=w=3,k=2,r=s=2的情况下,卷积算子是如何转换成一个矩阵乘法运算的。其中,特征图矩阵的行和列分别为4(图中只是把卷积展开成了矩阵运算,特征图矩阵的每一行对应一次卷积,其没有展示padding的过程,所以这里是4次卷积,行为4,而不是9)和12(即c
×
r
×
s),权重矩阵的行和列为12(即c
×
r
×
s)和2(即k),图中的输出张量对应的是卷积计算结果。本发明实施例的方法不会把特征图张量显式地存储下来,而是从全局内存中读取特征图张量的分块矩阵存储到共享内存中。
83.图6中展示了特征图张量的偏移量增量是以r
×
s为周期的,其是以一个线程为例进行的展示。
84.图7展示了矩阵乘法的计算过程。图7中的分块矩阵乘法示意图和线程块级别的分块示意图中线程块从特征图张量中读取bk
×
bn的小块矩阵到共享内存中,从权重张量中读取bm
×
bk的小块矩阵到共享内存中。然后整个线程块中的线程进行协作,完成bm
×
bk的矩
阵和bk
×
bn的矩阵的乘法运算。具体到线程块中的每个warp来说,每个warp会读取bm
×
bk的权重矩阵和bk
×
bn的特征图矩阵中的对应的小块矩阵到本地的寄存器中,进行矩阵乘法运算,如warp级别的分块示意图所示。进一步如tensorcore(gpu上的)指令示意图所示,warp(线程束)中的每个线程,会读取warp级别的分块示意图中的矩阵中的两个更小的小块矩阵,进行矩阵乘法运算,然后累加到本地的累加寄存器中。
85.本发明实施例的卷积处理方法能够充分利用gpu的int4 tensorcore计算单元,发挥gpu的计算能力,减少gpu端模型推理部署的延迟。本发明实施例的方法利用高性能访存组件,能够达成无bank(存储体)冲突的共享内存(gpu上的)访存,该方法不需要通过额外的乘、加操作来计算访存偏移量,而是将预先计算好的访存偏移量存储在参数缓冲区中,通过很小的访存开销来读取访存偏移量,省去了访存偏移量计算引入的开销。通过本发明实施例方法实现的卷积算子模板,优于目前的开源卷积算子的性能,并且能够达到官方算子库,例如,能达到cudnn int8 tensorcore卷积算子的1.5倍的性能,在部分情况下,能够达到cudnn int8 tensorcore卷积算子的2倍的性能。另外,通过卷积模板的自动性能调优,本发明实施例可实现int4 tensorcore卷积算子,且可以使得int4 tensorcore卷积算子在实际生产模型中获得不错的性能,即本发明实施例提出的卷积算法,能够提升实际生产模型在推理部署中的性能和计算机处理能力。
86.实施例3:
87.本发明实施例还提供了一种由计算机执行的特征图的卷积处理装置,该特征图的卷积处理装置主要用于执行本发明实施例上述内容所提供的由计算机执行的特征图的卷积处理方法,以下对本发明实施例提供的由计算机执行的特征图的卷积处理装置做具体介绍。
88.图8是根据本发明实施例的一种由计算机执行的特征图的卷积处理装置的示意图。如图8所示,该特征图的卷积处理装置主要包括:确定单元10、获取单元20、矩阵乘法单元30、遍历计算单元40、累加操作和添加偏置项单元50,其中:
89.确定单元,用于基于初始访存偏移量和偏移量增量确定当前访存偏移量;
90.获取单元,用于根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;
91.矩阵乘法单元,用于对待计算特征图分块矩阵和待计算权重分块矩阵执行矩阵乘法操作,得到待计算特征图张量的分块计算结果;
92.遍历计算单元,用于根据偏移量增量对当前访存偏移量进行更新,并执行根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵的步骤,直至遍历待计算特征图张量中的所有待计算特征图分块矩阵为止,得到多个分块计算结果;
93.累加操作和添加偏置项单元,用于对多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,得到待计算特征图张量的卷积计算结果。
94.在本发明实施例中,基于初始访存偏移量和偏移量增量确定当前访存偏移量;根据当前访存偏移量获取待计算特征图张量中的待计算特征图分块矩阵和待计算权重张量中的待计算权重分块矩阵;进而,对待计算特征图分块矩阵和待计算权重分块矩阵执行矩阵乘法操作,得到待计算特征图张量的分块计算结果,并遍历待计算特征图张量中的所有
待计算特征图分块矩阵,得到多个分块计算结果;以及,对多个分块计算结果执行累加操作,并对累加操作后的结果添加偏置项,进而得到待计算特征图张量的卷积计算结果。通过上述描述可知,本发明实施例的由计算机执行的特征图的卷积处理方法通过初始访存偏移量和偏移量增量来确定当前访存偏移量,无需通过额外的乘、加操作来计算访存偏移量,省去了访存偏移量计算所引入的开销,提升了计算机处理性能。基于本发明实施例的方法实现的卷积算子模板的性能能够达到最优,缓解了现有的特征图的卷积处理算法无法使得卷积算子模板的性能达到最优的技术问题。
95.可选地,确定单元还用于:获取初始访存偏移量和偏移量增量;根据初始访存偏移量和偏移量增量计算当前访存偏移量。
96.可选地,确定单元还用于:确定偏移量增量为零;将初始访存偏移量作为当前访存偏移量。
97.可选地,该装置还用于:基于初始的输入的通道数、初始的卷积核的r维度的坐标和初始的卷积核的s维度的坐标,计算初始访存偏移量;计算每轮的访存偏移量,并基于第iter+1轮的访存偏移量和第iter轮的访存偏移量,计算偏移量增量。
98.可选地,初始访存偏移量为根据访存偏移量计算算式计算得到的,其中,f
iter
表示第iter轮迭代的访存偏移量,c
iter
表示第iter轮迭代的输入的通道数,k表示线程块的线程初始读取的坐标,r、s表示卷积核的大小,r
iter
表示第iter轮迭代的中间量,r
iter
表示第iter轮迭代的卷积核的r维度的坐标,s
iter
表示第iter轮迭代的卷积核的s维度的坐标,c
stride
表示c
iter
对应的权重,h
stride
表示r
iter
对应的权重,w
stride
表示s
iter
对应的权重;偏移量增量为根据偏移量增量计算算式计算得到的,其中,δf
iter
表示第iter轮的偏移量增量,f
iter+1
表示第iter+1轮的访存偏移量,f
iter
表示第iter轮的访存偏移量,bk表示线程块每轮处理的分块矩阵的大小bm
×
bn
×
bk中的一个参量。
99.可选地,获取单元还用于:根据当前访存偏移量确定待计算特征图分块矩阵在待
计算特征图张量中的第一位置和待计算权重分块矩阵在待计算权重张量中的第二位置;根据第一位置和第二位置获取待计算特征图分块矩阵和待计算权重分块矩阵。
100.可选地,遍历计算单元还用于:判断待计算特征图张量中是否存在未参与计算的待计算特征图分块矩阵;如果不存在,则确定已遍历待计算特征图张量中的所有待计算特征图分块矩阵。
101.可选地,初始访存偏移量和偏移量增量存储于设备内核的参数缓冲区内,偏移量增量的大小是以r
×
s为周期的,其中,r、s表示卷积核的大小。
102.本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
103.在本发明的另一个实施例中,还提供了一种计算机存储介质,其上存储有计算机程序,计算机运行计算机程序时执行上述方法实施例的方法的步骤。
104.在本发明的另一个实施例中,还提供了一种计算机程序,该计算机程序可以存储在云端或本地的存储介质上。在该计算机程序被计算机或处理器运行时用于执行本发明实施例的所述方法的相应步骤,并且用于实现根据本发明实施例的由计算机执行的特征图的卷积处理装置中的相应模块。
105.另外,在本发明实施例的描述中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
106.在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
107.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
108.在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
109.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
110.另外,在本发明各个实施例中的各功能单元可以集成在一个分析单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
111.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个分析器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
112.最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1