单通道卷积层及多通道卷积层处理方法和装置制造方法

文档序号:6550093阅读:554来源:国知局
单通道卷积层及多通道卷积层处理方法和装置制造方法
【专利摘要】本发明提出单通道卷积层处理及多通道卷积层处理方法和装置。该单通道卷积层处理方法包括:将待处理数据划分为多个数据块;多个图形处理器线程组将多个数据块读取到多个图形处理器线程组的本地存储器中;多个图形处理器线程组将多个过滤器读取到多个图形处理器线程组的本地存储器中;以及多个图形处理器线程组中的多个线程同时计算多个数据块中对应的数据点与多个过滤器的卷积。该多通道卷积处理方法包括:在单通道卷积处理方法的基础上,多个图形处理器线程组中的多个线程依次进行多个通道的卷积,并将每个通道的卷积结果进行累加。从而,无需额外空间,在存储空间利用上达到最优,增加了存储器的数据重用,具有极高的性能和性能功耗比。
【专利说明】单通道卷积层及多通道卷积层处理方法和装置

【技术领域】
[0001]本发明涉及信息处理【技术领域】,尤其涉及一种单通道卷积层处理方法和装置、多通道卷积层处理方法和装置。

【背景技术】
[0002]卷积神经网络在多种应用,尤其是图像、视频应用中被广泛采用。其中,卷积层是卷积神经网络中的核心计算部分,在卷积层部分,以图像为例,多个滤波器分别作用于图像实现卷积运算。相关技术中,卷积运算主要通过以下两种方式实现:(I)滤波器直接作用于输入图像上进行卷积运算,其中,图形处理器(Graphic Processing Unit,GPU)线程组为二维格式,X维以全部图像的数量进行划分,Y维以全部滤波器的数量进行划分,每个图形处理器线程负责计算多个滤波器对多个图像的卷积,但只计算一个数据点对应的卷积核。(2)将全部图像数据按滤波器大小进行逐数据点展开,从而将卷积运算转换为稠密矩阵乘法运算。
[0003]但是,相关技术存在以下问题:前一种实现方式中,相邻输出数据点对应的输入数据点之间数据具有重叠,例如,步长为1、滤波器大小为5*5的卷积核,相邻输出数据点的输入数据点有4/5的数据重叠,导致大量数据被重复读入到本地存储中,影响性能。后一种实现方式中,需要将图像展开后存储,因此需要的存储量和卷积核的大小成正比,例如,5*5的滤波器需要25倍的额外内存,而9*9的滤波器则需要81倍的额外内存,而在实际应用中,滤波器可能会更大,图形处理器的全局存储开销也将大大增加。


【发明内容】

[0004]本发明旨在至少在一定程度上解决相关技术中的技术问题之一。
[0005]为此,本发明的第一个目的在于提出一种单通道卷积层处理方法。该方法在存储空间利用上能够达到最优,增加了本地存储器的数据重用,增加了性能功耗比。
[0006]本发明的第二个目的在于提出一种单通道卷积层处理装置。
[0007]本发明的第三个目的在于提出一种多通道卷积层处理方法。
[0008]本发明的第四个目的在于提出一种多通道卷积层处理装置。
[0009]为了实现上述目的,本发明第一方面实施例的单通道卷积层处理方法,包括:将待处理数据划分为多个数据块;多个图形处理器线程组将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中;所述多个图形处理器线程组将多个过滤器读取到所述多个图形处理器线程组的本地存储器中;以及所述多个图形处理器线程组中的多个线程同时计算所述多个数据块中对应的数据点与所述多个过滤器的卷积。
[0010]本发明实施例的单通道卷积层处理方法,至少具有以下有益效果:(I)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0011]为了实现上述目的,本发明第二方面实施例的单通道卷积层处理装置,包括:划分模块,用于将待处理数据划分为多个数据块;第一读取模块,用于通过多个图形处理器线程组将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中;第二读取模块,用于通过所述多个图形处理器线程组将多个过滤器读取到所述多个图形处理器线程组的本地存储器中;以及计算模块,用于通过所述多个图形处理器线程组中的多个线程同时计算所述多个数据块中对应的数据点与所述多个过滤器的卷积。
[0012]本发明实施例的单通道卷积层处理装置,至少具有以下有益效果:(I)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0013]为了实现上述目的,本发明第三方面实施例的多通道卷积层处理方法,包括:待处理数据及过滤器包含多个通道;将每个通道的待处理数据划分为多个数据块;多个图形处理器线程组同时将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中;所述多个图形处理器线程组同时将多个过滤器读取到所述多个图形处理器线程组的本地存储器中;所述多个图形处理器线程组中的多个线程同时计算所述一个通道多个数据块中对应的数据点与所述多个过滤器的卷积;所述多个图形处理器线程组中的多个线程依次进行多个通道的卷积,并将每个通道的卷积结果进行累加;将最终卷积结果写入所述多个图形处理器线程组的全局存储器中。
[0014]本发明实施例的多通道卷积层处理方法,至少具有以下有益效果:(I)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0015]为了实现上述目的,本发明第四方面实施例的多通道卷积层处理装置,包括:划分模块,用于将每个通道的待处理数据划分为多个数据块;第一读取模块,用于通过多个图形处理器线程组同时将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中;第二读取模块,用于通过所述多个图形处理器线程组同时将多个过滤器读取到所述多个图形处理器线程组的本地存储器中;计算模块,用于通过所述多个图形处理器线程组中的多个线程同时计算所述一个通道多个数据块中对应的数据点与所述多个过滤器的卷积;累加模块,用于通过所述多个图形处理器线程组中的多个线程依次进行多个通道的卷积,并将每个通道的卷积结果进行累加;写入模块,用于将最终卷积结果写入所述多个图形处理器线程组的全局存储器中。
[0016]本发明实施例的多通道卷积层处理装置,至少具有以下有益效果:(I)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0017]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

【专利附图】

【附图说明】
[0018]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
[0019]图1是根据本发明一个实施例的单通道卷积层处理方法的流程图;
[0020]图2是根据本发明实施例的单通道卷积层处理方法的一种示例性示意图;
[0021]图3是根据本发明另一个实施例的单通道卷积层处理方法的流程图;
[0022]图4是根据本发明实施例的非规则数据块的读取一种示例性示意图;
[0023]图5是根据本发明一个实施例的单通道卷积层处理装置的结构框图;
[0024]图6是根据本发明另一个实施例的单通道卷积层处理装置的结构框图;
[0025]图7是根据本发明一个实施例的多通道卷积层处理方法的流程图;
[0026]图8是根据本发明实施例的多通道卷积层处理方法的一种示例性示意图;
[0027]图9是根据本发明一个实施例的多通道卷积层处理装置的结构框图。

【具体实施方式】
[0028]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0029]在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
[0030]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0031 ] 下面参考附图描述根据本发明实施例的单通道卷积层处理方法和装置、多通道卷积层处理方法和装置。
[0032]图1是根据本发明一个实施例的单通道卷积层处理方法的流程图,图2是根据本发明实施例的单通道卷积层处理方法的一种示例性示意图。
[0033]如图1所示,该单通道卷积层处理方法包括:
[0034]S101,将待处理数据划分为多个数据块。
[0035]其中,待处理数据可为图像、视频、音频、文字等各种计算机可读数据。具体地,以图像数据为例,可以根据图形处理器线程组的大小和图像的大小将图像划分为多个数据块,其中,图形处理器线程组中包括多个线程。例如,如图2所示,如果图形处理器线程组的大小32*16,图像(imageO)的大小为64*64(Width = 64,Height = 64),则可以将图像分为8个数据块(BlockO至Block7),每个数据块的大小为32*16 (SizeA = 32, SizeB = 16),当然,也可以不平均划分,以每个图形处理器线程组能够处理为宜,对此本发明的实施例不进行限定。应理解,上述图2所示的实施例仅是示意性的,并非仅能通过该实施例来实现,也并非仅适用于该实施例,本领域技术人员可根据该实施例将其应用到根据任何大小的数据和任何大小的图形处理器线程组划分多个数据块中,这些划分多个数据块的扩展或变化,均应包含在本申请的保护范围之内。
[0036]S102,多个图形处理器线程组将多个数据块读取到多个图形处理器线程组的本地存储器中。
[0037]具体地,每个图形处理器线程组分别读取一个对应的数据块,并将对应的数据块读取到每个图形处理器线程组对应的本地存储器中。
[0038]S103,多个图形处理器线程组将多个过滤器读取到多个图形处理器线程组的本地存储器中。
[0039]具体地,每个图形处理器线程组分别将多个过滤器读取到每个图形处理器线程组对应的本地存储器中。
[0040]在本发明的一个实施例中,S103还可以在S102之前执行,或者S102和S103还可以同时执行,对此,本发明的实施例不进行限定。
[0041]S104,多个图形处理器线程组中的多个线程同时计算多个数据块中对应的数据点与多个过滤器的卷积。
[0042]其中,数据点为一个单位数据。具体地,每个图形处理器线程组分别在对应的本地存储器中存储了对应的数据块和多个过滤器,每个图形处理器线程组中的多个线程分别计算数据块中对应的数据点与多个过滤器的卷积。
[0043]本发明实施例的单通道卷积层处理方法,至少具有以下有益效果:(I)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0044]在本发明的一个实施例中,多个数据块是非规则数据块。当然,多个数据块也可以是规则数据块,对此,本发明的实施例不进行限定。
[0045]图3是根据本发明另一个实施例的单通道卷积层处理方法的流程图,图4是根据本发明实施例的非规则数据块的读取一种示例性示意图。
[0046]如图3所示,该单通道卷积层处理方法包括:
[0047]S301,将待处理数据划分为多个数据块。
[0048]其中,待处理数据可为图像、视频、音频、文字等各种计算机可读数据。具体地,以图像数据为例,可以根据图形处理器线程组的大小和图像的大小将图像划分为多个数据块,其中,图形处理器线程组中包括多个线程。例如,如图2所示,如果图形处理器线程组的大小32*16,图像(imageO)的大小为64*64(Width = 64,Height = 64),则可以将图像分为8个数据块(BlockO至Block7),每个数据块的大小为32*16 (SizeA = 32, SizeB = 16),当然,也可以不平均划分,以每个图形处理器线程组能够处理为宜,对此本发明的实施例不进行限定。应理解,上述图2所示的实施例仅是示意性的,并非仅能通过该实施例来实现,也并非仅适用于该实施例,本领域技术人员可根据该实施例将其应用到根据任何大小的数据和任何大小的图形处理器线程组划分多个数据块中,这些划分多个数据块的扩展或变化,均应包含在本申请的保护范围之内。
[0049]S302,将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配。
[0050]在本发明的一个实施例中,在多个图形处理器线程组将多个数据块读取到多个图形处理器线程组的本地存储器中时,还将对应的填充数据读取到本地存储器中。由于填充数据的原因,数据块的数据点多于图形处理器线程组中的总图形处理器线程数,如果将数据块的数据点与图形处理器线程做无缝的一一映射,则会带来复杂的下标运算,增加数据传输延迟。对于这种非规则数据的读取,采用一种简单的图形处理器线线程组与非规则数据块映射,具体地,将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配。
[0051]例如,如图4所示,为一个数据块,并将该数据块划分为Block loadO、Blockloadl> Block load2、Block load3 该 4 个子数据块。
[0052]S303,对应的图形处理器线程组依次将多个子数据块读取到图形处理器线程组的本地存储器中。
[0053]例如,如图4所示,灰色阴影部分为对应的图形处理器线程组第一次读取的待处理数据,之后,可以将灰色阴影部分右侧区域的数据读取,再依次分两次读取剩余部分的数据,数据块读取分为4次完成,尽管第1、2及3次读取中有大部分线程空闲,但是避免了复杂的下标运算。
[0054]S304,多个图形处理器线程组将多个过滤器读取到多个图形处理器线程组的本地存储器中。
[0055]具体地,每个图形处理器线程组分别将多个过滤器读取到每个图形处理器线程组对应的本地存储器中。
[0056]在本发明的一个实施例中,S304可以在S302之前执行,或者S304还可以和S302或S303同时执行,对此,本发明的实施例不进行限定。
[0057]S305,多个图形处理器线程组中的多个线程同时计算多个数据块中对应的数据点与多个过滤器的卷积。
[0058]其中,数据点为一个单位数据。具体地,每个图形处理器线程组分别在对应的本地存储器中存储了对应的数据块和多个过滤器,在读取数据块的同时,每个图形处理器线程组中的多个线程分别计算数据块中对应的数据点与多个过滤器的卷积。
[0059]本发明实施例的单通道卷积层处理方法,在进行数据块读取时,将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配,对应的图形处理器线程组依次将多个子数据块读取到图形处理器线程组的本地存储器中,特别适用于非规则数据块读取方法,避免了复杂的下标运算,减少了数据传输延迟。
[0060]为了实现上述实施例,本发明的实施例还提出一种单通道卷积层处理装置。
[0061]图5是根据本发明一个实施例的单通道卷积层处理装置的结构框图。
[0062]如图5所示,单通道卷积层处理装置100包括:划分模块110、第一读取模块120、第二读取模块130和计算模块140。
[0063]具体地,划分模块110用于将待处理数据划分为多个数据块。其中,待处理数据可为图像、视频、音频、文字等各种计算机可读数据。更具体地,以图像数据为例,划分模块110可以根据图形处理器线程组的大小和图像的大小将图像划分为多个数据块,其中,图形处理器线程组中包括多个线程。例如,如图2所示,如果图形处理器线程组的大小32*16,图像(imageO)的大小为64*64 (Width = 64, Height = 64),则可以将图像分为8个数据块(BlockO至Block7),每个数据块的大小为32*16 (SizeA = 32, SizeB = 16),当然,也可以不平均划分,以每个图形处理器线程组能够处理为宜,对此本发明的实施例不进行限定。应理解,上述图2所示的实施例仅是示意性的,并非仅能通过该实施例来实现,也并非仅适用于该实施例,本领域技术人员可根据该实施例将其应用到根据任何大小的数据和任何大小的图形处理器线程组划分多个数据块中,这些划分多个数据块的扩展或变化,均应包含在本申请的保护范围之内。
[0064]第一读取模块120用于通过多个图形处理器线程组将多个数据块读取到多个图形处理器线程组的本地存储器中。更具体地,每个图形处理器线程组分别读取一个对应的数据块,并将对应的数据块读取到每个图形处理器线程组对应的本地存储器中。
[0065]第二读取模块130用于通过多个图形处理器线程组将多个过滤器读取到多个图形处理器线程组的本地存储器中。更具体地,每个图形处理器线程组分别将多个过滤器读取到每个图形处理器线程组对应的本地存储器中。
[0066]计算模块140用于通过多个图形处理器线程组中的多个线程同时计算多个数据块中对应的数据点与多个过滤器的卷积。其中,数据点为一个单位数据。更具体地,每个图形处理器线程组分别在对应的本地存储器中存储了对应的数据块和多个过滤器,在读取数据块的同时,每个图形处理器线程组中的多个线程分别计算数据块中对应的数据点与多个过滤器的卷积。
[0067]本发明实施例的单通道卷积层处理装置,至少具有以下有益效果:(I)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0068]在本发明的一个实施例中,多个数据块是非规则数据块。当然,多个数据块也可以是规则数据块,对此,本发明的实施例不进行限定。
[0069]图6是根据本发明另一个实施例的单通道卷积层处理装置的结构框图。
[0070]如图6所示,单通道卷积层处理装置100包括:划分模块110、第一读取模块120、第二读取模块130和计算模块140,其中第一读取模块120包括划分单元121和读取单元122。
[0071]具体地,划分单元121用于将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配。
[0072]在本发明的一个实施例中,第一读取模块120在多个图形处理器线程组将多个数据块读取到多个图形处理器线程组的本地存储器中时,还用于将对应的填充数据读取到本地存储器中。由于填充数据的原因,数据块的数据点多于图形处理器线程组中的总图形处理器线程数,如果将数据块的数据点与图形处理器线程做无缝的一一映射,则会带来复杂的下标运算,增加数据传输延迟。对于这种非规则数据的读取,采用一种简单的图形处理器线线程组与非规则数据块映射,具体地,通过划分单元121将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配。
[0073]例如,如图4所示,为一个数据块,并将该数据块划分为Block loadO、Blockloadl> Block load2、Block load3 该 4 个子数据块。
[0074]读取单元121用于通过对应的图形处理器线程组依次将多个子数据块读取到图形处理器线程组的本地存储器中。例如,如图4所示,灰色阴影部分为对应的图形处理器线程组第一次读取的待处理数据,之后,可以将灰色阴影部分右侧区域的数据读取,再依次分两次读取剩余部分的数据,数据块读取分为4次完成,尽管第1、2及3次读取中有大部分线程空闲,但是避免了复杂的下标运算。
[0075]本发明实施例的单通道卷积层处理装置,在进行数据块读取时,将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配,对应的图形处理器线程组依次将多个子数据块读取到图形处理器线程组的本地存储器中,特别适用于非规则数据块读取方法,避免了复杂的下标运算,减少了数据传输延迟。
[0076]本发明的实施例还提出一种多通道卷积层处理方法。
[0077]图7是根据本发明一个实施例的多通道卷积层处理方法的流程图,图8是根据本发明实施例的多通道卷积层处理方法的一种示例性示意图。
[0078]如图7所示,该多通道卷积层处理方法包括:
[0079]S701,待处理数据及过滤器包含多个通道,将每个通道的待处理数据划分为多个数据块。
[0080]其中,待处理数据可为图像、视频、音频、文字等各种计算机可读数据。具体地,以图像数据为例,多通道卷积层处理的输入数据(待处理数据)包括多个图像和多个过滤器,且每个图像及每个过滤器具有多个通道。如图8所示,输入数据包括64个图像(ImageO至Image63)和64个过滤器(FilterO至Filter63),且每个图像具有三个通道(ChannelO,Channell 和 Channe 12),每个过滤器具有三个通道(Channe I O, Channell 和 Channe 12),应理解,上述图8所示的实施例仅是示意性的,并非仅能通过该实施例来实现,也并非仅适用于该实施例,本领域技术人员可根据该实施例处理任何数量具有任何通道的数据和过滤器。
[0081]另外,将每个通道的待处理数据划分为多个数据块可参考上述实施例的单通道卷积层处理方法的划分方法,在此不再赘述。
[0082]S702,多个图形处理器线程组同时将多个数据块读取到多个图形处理器线程组的本地存储器中。
[0083]S703,多个图形处理器线程组同时将多个过滤器读取到多个图形处理器线程组的本地存储器中。
[0084]在本发明的一个实施例中,以图像数据为例,在S702之前还包括:将多幅图像和多个过滤器读取到图形处理器的全局存储器中。具体地,多个图像及多个过滤器存储在CPU内存(Host memory)中,首先,将多个图像及多个过滤器通过PCIE (—种总线接口)从CPU内存(Host memory)拷贝到图形处理器的全局存储器(Global memory)中(即Transferto global memory);然后,图形处理器的每个计算单元(Computing unit)中多线程协作将数据从全局存储器拷贝到本地存储器(Local memory)中(即Load to local memory)。
[0085]在本发明的一个实施例中,S703还可以在S702之前执行,或者S702和S703还可以同时执行,对此,本发明的实施例不进行限定。
[0086]S704,多个图形处理器线程组中的多个线程同时计算一个通道多个数据块中对应的数据点与多个过滤器的卷积。
[0087]其中,数据点为一个单位数据。具体地,图形处理器的每个计算单元具有图形处理器线程组,每个计算单元中的每个线程利用本地存储中的待处理数据及滤波器进行卷积运算。例如,计算一个通道ChannelO多个数据块中对应的数据点与多个过滤器的卷积。
[0088]S705,多个图形处理器线程组中的多个线程依次进行多个通道的卷积,并将每个通道的卷积结果进行累加。
[0089]S706,将最终卷积结果写入多个图形处理器线程组的全局存储器中。
[0090]即如图8 所不,Write back to global memory。
[0091]本发明实施例的多通道卷积层处理方法,至少具有以下有益效果:(1)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0092]在本发明的一个实施例中,在多个图形处理器线程组同时将多个数据块读取到多个图形处理器线程组的本地存储器中时,还将对应的填充数据读取到本地存储器中,填充之后的多个数据块是非规则数据块。当然,多个数据块也可以是规则数据块,对此,本发明的实施例不进行限定。
[0093]由于填充数据的原因,数据块的数据点多于图形处理器线程组中的总图形处理器线程数,如果将数据块的数据点与图形处理器线程做无缝的一一映射,则会带来复杂的下标运算,增加数据传输延迟。对于这种非规则数据的读取,采用一种简单的图形处理器线线程组与非规则数据块映射,具体地,S702具体包括以下步骤:将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配;以及对应的图形处理器线程组依次将多个子数据块读取到图形处理器线程组的本地存储器中。具体如上述单通道卷积层处理方法所述,在此不再赘述。由此,避免了复杂的下标运算,减少了数据传输延迟。
[0094]在本发明的一个实施例中,多个图形处理器线程组中的多个线程同时计算一个通道多个数据块中对应的数据点与多个过滤器的卷积包括:将多个数据块中对应的数据与多个过滤器的卷积进行寄存器划块,提高数据重用性。
[0095]为了实现上述实施例,本发明的实施例还提出一种多通道卷积层处理装置。
[0096]图9是根据本发明一个实施例的多通道卷积层处理装置的结构框图。
[0097]如图9所示,该多通道卷积层处理装置200包括:划分模块210、第一读取模块220、第二读取模块230、第三读取模块240、计算模块250、累加模块260和写入模块270。
[0098]其中,待处理数据可为图像、视频、音频、文字等各种计算机可读数据。其中,以图像数据为例,待处理数据及过滤器包含多个通道,即多通道卷积层处理的输入数据(待处理数据)包括多个图像和多个过滤器,且每个图像及每个过滤器具有多个通道。如图8所示,输入数据包括64个图像(ImageO至Image63)和64个过滤器(FilterO至Filter63),且每个图像具有三个通道(ChannelO, Channell和Channel2),每个过滤器具有三个通道(Channe 10, Channell和Channel2),应理解,上述图8所示的实施例仅是示意性的,并非仅能通过该实施例来实现,也并非仅适用于该实施例,本领域技术人员可根据该实施例处理任何数量具有任何通道的数据和过滤器。
[0099]具体地,划分模块210用于将每个通道的待处理数据划分为多个数据块,将每个通道的待处理数据划分为多个数据块可参考上述实施例的单通道卷积层处理方法的划分方法,在此不再赘述。
[0100]第一读取模块220用于通过多个图形处理器线程组同时将多个数据块读取到多个图形处理器线程组的本地存储器中。第二读取模块230用于通过多个图形处理器线程组同时将多个过滤器读取到多个图形处理器线程组的本地存储器中。
[0101]在本发明的一个实施例中,以图像数据为例,第三读取模块240用于将多幅图像和多个过滤器读取到图形处理器的全局存储器中。具体地,多个图像及多个过滤器存储在CPU内存(Host memory)中,首先,第三读取模块240将多个图像及多个过滤器通过PCIE(—种总线接口 )从CPU内存(Host memory)拷贝到图形处理器的全局存储器(Global memory)中(即Transfer to global memory);然后,图形处理器的每个计算单兀(Computing unit)中多线程协作将数据从全局存储器拷贝到本地存储器(Local memory)中(即Load to local memory),即通过第一读取模块220和第二读取模块230进行读取。
[0102]计算模块250用于通过多个图形处理器线程组中的多个线程同时计算一个通道多个数据块中对应的数据点与多个过滤器的卷积。其中,数据点为一个单位数据。更具体地,图形处理器的每个计算单元具有图形处理器线程组,每个计算单元中的每个线程利用本地存储中的待处理数据及滤波器进行卷积运算。例如,计算一个通道ChannelO多个数据块中对应的数据点与多个过滤器的卷积。
[0103]累加模块260用于通过多个图形处理器线程组中的多个线程依次进行多个通道的卷积,并将每个通道的卷积结果进行累加。写入模块270用于将最终卷积结果写入多个图形处理器线程组的全局存储器中。
[0104]本发明实施例的多通道卷积层处理装置,至少具有以下有益效果:(1)直接在输入数据上进行卷积,无需进行数据的逐数据点展开,从而无须额外的内存开销,在存储空间利用上能够达到最优;(2)同一图形处理器线程组中的图形处理器线程计算连续的输出数据点并使用连续的输入数据点,增加了本地存储器的数据重用,并将所需的待处理数据和卷积核数据临时保存在高速的图形处理器的本地存储器中,降低了低速的图形处理器全局存储器的读取次数,从而获得很高的性能;另外还减少了数据的移动,又大大降低了功耗,增加了性能功耗比;(3)在划分时,可以使用寄存器分块方法来减少访存计算比,虽然相关技术中也可利用寄存器分块方法,但是由于其数据组织方式导致其产生效果的条件比较严格。
[0105]在本发明的一个实施例中,第一读取模块220在多个图形处理器线程组同时将多个数据块读取到多个图形处理器线程组的本地存储器中时,还用于将对应的填充数据读取到本地存储器中,填充之后的多个数据块是非规则数据块。当然,多个数据块也可以是规则数据块,对此,本发明的实施例不进行限定。
[0106]由于填充数据的原因,数据块的数据点多于图形处理器线程组中的总图形处理器线程数,如果将数据块的数据点与图形处理器线程做无缝的一一映射,则会带来复杂的下标运算,增加数据传输延迟。对于这种非规则数据的读取,采用一种简单的图形处理器线线程组与非规则数据块映射,具体地,第一读取模块220包括划分单元和读取单元(图中未示出),划分单元用于将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配;读取单元用于通过对应的图形处理器线程组依次将多个子数据块读取到图形处理器线程组的本地存储器中。具体如上述单通道卷积层处理方法所述,在此不再赘述。由此,避免了复杂的下标运算,减少了数据传输延迟。
[0107]在本发明的一个实施例中,计算模块250具体用于:将多个数据块中对应的数据与多个过滤器的卷积进行寄存器划块,提高数据重用性。
[0108]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0109]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0110]尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
【权利要求】
1.一种单通道卷积层处理方法,其特征在于,包括: 将待处理数据划分为多个数据块; 多个图形处理器线程组将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中; 所述多个图形处理器线程组将多个过滤器读取到所述多个图形处理器线程组的本地存储器中;以及 所述多个图形处理器线程组中的多个线程同时计算所述多个数据块中对应的数据点与所述多个过滤器的卷积。
2.根据权利要求1所述的方法,其特征在于,所述多个数据块是非规则数据块。
3.根据权利要求1或2所述的方法,其特征在于,使用多个图形处理器线程组将所述多个数据块读取到图形处理器线程的本地存储器中包括: 将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配;以及 所述对应的图形处理器线程组依次将所述多个子数据块读取到所述图形处理器线程组的本地存储器中。
4.根据权利要求1或2所述的方法,其特征在于,在所述多个图形处理器线程组将所述多个数据块读取到所 述多个图形处理器线程组的本地存储器中时,还将对应的填充数据读取到本地存储器中。
5.一种单通道卷积层处理装置,其特征在于,包括: 划分模块,用于将待处理数据划分为多个数据块; 第一读取模块,用于通过多个图形处理器线程组将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中; 第二读取模块,用于通过所述多个图形处理器线程组将多个过滤器读取到所述多个图形处理器线程组的本地存储器中;以及 计算模块,用于通过所述多个图形处理器线程组中的多个线程同时计算所述多个数据块中对应的数据点与所述多个过滤器的卷积。
6.根据权利要求5所述的装置,其特征在于,所述多个数据块是非规则数据块。
7.根据权利要求5或6所述的装置,其特征在于,所述第一读取模块包括: 划分单元,用于将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配;以及 读取单元,用于通过所述对应的图形处理器线程组依次将所述多个子数据块读取到所述图形处理器线程组的本地存储器中。
8.根据权利要求5或6所述的装置,其特征在于,所述第一读取模块在所述多个图形处理器线程组将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中时,还还用于将对应的填充数据读取到本地存储器中。
9.一种多通道卷积层处理方法,其特征在于,包括: 待处理数据及过滤器包含多个通道; 将每个通道的待处理数据划分为多个数据块; 多个图形处理器线程组同时将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中; 所述多个图形处理器线程组同时将多个过滤器读取到所述多个图形处理器线程组的本地存储器中; 所述多个图形处理器线程组中的多个线程同时计算所述一个通道多个数据块中对应的数据点与所述多个过滤器的卷积; 所述多个图形处理器线程组中的多个线程依次进行多个通道的卷积,并将每个通道的卷积结果进行累加; 将最终卷积结果写入所述多个图形处理器线程组的全局存储器中。
10.根据权利要求9所述的方法,其特征在于,在所述多个图形处理器线程组同时将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中时,还将对应的填充数据读取到本地存储器中,所述填充之后的多个数据块是非规则数据块。
11.根据权利要求9或10所述的方法,其特征在于,所述待处理数据为图像数据,所述方法进一步包括: 将所述多幅图像和多个过滤器读取到所述图形处理器的全局存储器中。
12.根据权利要求9或10所述的方法,其特征在于,使用多个图形处理器线程组将所述多个数据块读取到图形处理器线程的本地存储器中包括: 将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配;以及 所述对应的图形处理器线程组依次将所述多个子数据块读取到所述图形处理器线程组的本地存储器中。
13.根据权利要求9或10所述的方法,其特征在于,所述多个图形处理器线程组中的多个线程同时计算所述一个通道多个数据块中对应的数据点与所述多个过滤器的卷积包括: 将所述多个数据块中对应的数据与多个过滤器的卷积进行寄存器划块,提高数据重用性。
14.一种多通道卷积层处理装置,其特征在于,待处理数据及过滤器包含多个通道,所述装置包括: 划分模块,用于将每个通道的待处理数据划分为多个数据块; 第一读取模块,用于通过多个图形处理器线程组同时将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中; 第二读取模块,用于通过所述多个图形处理器线程组同时将多个过滤器读取到所述多个图形处理器线程组的本地存储器中; 计算模块,用于通过所述多个图形处理器线程组中的多个线程同时计算所述一个通道多个数据块中对应的数据点与所述多个过滤器的卷积; 累加模块,用于通过所述多个图形处理器线程组中的多个线程依次进行多个通道的卷积,并将每个通道的卷积结果进行累加; 写入模块,用于将最终卷积结果写入所述多个图形处理器线程组的全局存储器中。
15.根据权利要求14所述的装置,其特征在于,所述第一读取模块在所述多个图形处理器线程组同时将所述多个数据块读取到所述多个图形处理器线程组的本地存储器中时,还用于将对应的填充数据读取到本地存储器中,所述填充之后的多个数据块是非规则数据块。
16.根据权利要求14或15所述的装置,其特征在于,所述待处理数据为图像数据,所述装置还包括: 第三读取模块,用于将所述多幅图像和多个过滤器读取到所述图形处理器的全局存储器中。
17.根据权利要求14或15所述的装置,其特征在于,所述第一读取模块包括: 划分单元,用于将每个数据块划分为多个子数据块,其中至少一个子数据块的数据量与对应的图形处理器线程组中的线程数目匹配;以及 读取单元,用于通过所述对应的图形处理器线程组依次将所述多个子数据块读取到所述图形处理器线程组的本地存储器中。
18.根据权利要求14或15所述的装置,其特征在于,所述计算模块具体用于: 将所述多个数据块中对应的数据与多个过滤器的卷积进行寄存器划块,提高数据重用性。
【文档编号】G06F12/02GK104077233SQ201410274196
【公开日】2014年10月1日 申请日期:2014年6月18日 优先权日:2014年6月18日
【发明者】吴韧, 李士刚, 都大龙, 刘文志 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1