CN120298196A - 像素并行的深度运算实现方法、装置、介质、设备及产品 - Google Patents
像素并行的深度运算实现方法、装置、介质、设备及产品 Download PDFInfo
- Publication number
- CN120298196A CN120298196A CN202510796726.9A CN202510796726A CN120298196A CN 120298196 A CN120298196 A CN 120298196A CN 202510796726 A CN202510796726 A CN 202510796726A CN 120298196 A CN120298196 A CN 120298196A
- Authority
- CN
- China
- Prior art keywords
- thread
- pixel
- sliding window
- channel
- group
- 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 OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Biophysics (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种像素并行的深度运算实现方法、装置、介质、设备及产品,所述方法包括:将输入张量划分为m个通道组,并分别分配给包含NT个线程的线程束独立处理;获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;为每个线程分配与元素数量相等的寄存器组;每个寄存器组用于存储对应的元素的一个像素组;在通道组中,分别从每个行列起点坐标开始,根据滑动步长,按行扫描NT个行列位置,并将对应的像素组依次加载至对应线程的寄存器组,使得每个线程能够处理一个局部滑窗视野的计算任务。本发明通过线程间的像素并行策略,实现线程级别的独立计算任务分配,能够最大化地利用分配的硬件资源。
Description
技术领域
本发明涉及人工智能技术领域,尤其涉及一种像素并行的深度运算实现方法、装置、计算机可读存储介质、电子设备及计算机程序产品。
背景技术
在人工智能处理器上进行深度运算时,如逐深度卷积运算、池化运算和分组卷积运算等,现有方法在线程间采用的是通道并行策略,这会导致人工智能处理器的算力利用率降低,其原因在于线程调度粒度与任务分配之间的不匹配。
以逐深度卷积运算为例,现有方法为每个线程分配单个通道的卷积计算任务。由于人工智能处理器以线程束为调度单位,且每个线程束包含NT个线程,当输入张量的通道数C不能被NT整除时,会导致一个线程束中的部分线程存在闲置现象,即启用的线程无法充分利用,人工智能处理器的算力利用率降为。
发明内容
本发明实施例的目的在于,提供一种像素并行的深度运算实现方法、装置、计算机可读存储介质、电子设备及计算机程序产品,通过线程间的像素并行策略,实现线程级别的独立计算任务分配,为每个线程分配对应的局部滑窗视野的计算任务,能够最大化地利用分配的硬件资源,进而提高计算效率。
本发明第一方面实施例提供了一种像素并行的深度运算实现方法,包括:
将输入张量划分为m个通道组,并分配给m个线程束独立处理;其中,每个线程束包含NT个线程;每个通道组包含NC个通道的像素;NT≥1;NC≥1;m≥1;
获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;
分别为每个所述线程分配与所述元素数量相等的寄存器组;其中,每个寄存器组用于存储对应的所述元素的一个像素组;每个像素组由对应的通道组中同一个行列位置处的所有像素组成;
在所述通道组中,分别从每个所述行列起点坐标开始,以所述滑动步长为跨距,按行扫描NT个行列位置,并将扫描到的NT个行列位置处的像素组依次加载至对应的所述线程束内各线程的寄存器组;
通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果。
可选地,所述输入张量由一个特征数据块构成,或者由多个特征数据块在原始空间的垂直方向上拼接得到,或者由一个特征数据块拆分出的任一子数据块构成。
可选地,所述滑窗算子为池化算子;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
在任一所述线程束中,通过每个线程对加载得到的像素组执行通道隔离的池化操作,得到对应的局部滑窗视野内NC个通道的池化结果。
可选地,所述滑窗算子为单通道卷积核;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
将每个所述寄存器组对应的卷积权重以标量形式广播至对应的所述线程束内的所有线程;
在任一所述线程束中,通过每个线程对加载得到的像素组和卷积权重进行通道隔离的乘加运算,获得对应的局部滑窗视野内NC个通道的卷积结果。
可选地,所述滑窗算子为多通道卷积核;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
将每个所述寄存器组对应的卷积权重以标量形式广播至对应的所述线程束内的所有线程;
在任一所述线程束中,通过每个线程对加载得到的像素组和卷积权重进行通道融合的乘加运算,获得对应的局部滑窗视野内的一个输出特征值;其中,每个所述通道组用于表征分组卷积运算中的一个输入组。
可选地,所述方法还包括:
在所述线程执行乘加运算之前,对所述像素组中像素值的坐标进行越界判断,并将越界坐标对应的像素值掩码为指定值,得到新的像素值。
本发明第二方面实施例提供了一种像素并行的深度运算实现装置,包括:
线程束配置模块,用于将输入张量划分为m个通道组,并分配给m个线程束独立处理;其中,每个线程束包含NT个线程;每个通道组包含NC个通道的像素;NT≥1;NC≥1;m≥1;
滑窗参数获取模块,用于获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;
线程配置模块,用于分别为每个所述线程分配与所述元素数量相等的寄存器组;其中,每个寄存器组用于存储对应的所述元素的一个像素组;每个像素组由对应的通道组中同一个行列位置处的所有像素组成;
像素加载模块,用于在所述通道组中,分别从每个所述行列起点坐标开始,以所述滑动步长为跨距,按行扫描NT个行列位置,并将扫描到的NT个行列位置处的像素组依次加载至对应的所述线程束内各线程的寄存器组;
线程计算模块,用于通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果。
本发明第三方面实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述第一方面任一项所述的像素并行的深度运算实现方法。
本发明第四方面实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时实现上述第一方面任一项所述的像素并行的深度运算实现方法。
本发明第五方面实施例提供了一种电子设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现上述第一方面任一项所述的像素并行的深度运算实现方法。
与现有技术相比,本发明实施例提供了一种像素并行的深度运算实现方法、装置、计算机可读存储介质、电子设备及计算机程序产品,具有以下有益效果:本发明实施例首先将输入张量划分为多个通道组,并分配给不同的线程束;接着,获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;随后,为每个线程分配对应数量的寄存器组,每个寄存器组存储对应元素的一个像素组;然后,分别从各通道组的每个行列起点坐标开始,以滑动步长为跨距,按行扫描NT个行列位置,并将扫描到的像素组依次加载到对应线程的寄存器组中,使得每个线程能够处理对应的局部滑窗视野的计算任务。因此,本发明实施例通过线程间的像素并行策略,实现线程级别的独立计算任务分配,为每个线程分配对应的局部滑窗视野的计算任务,能够最大化地利用分配的硬件资源,进而提高计算效率。
附图说明
图1是本发明提供的像素并行的深度运算实现的一个实施例的流程示意图。
图2是本发明提供的滑窗算子在输入张量中滑动的一个实施例的示意图;
图3是本发明提供的输入张量在二维平面上投影的一个实施例的示意图;
图4是本发明提供的线程束与像素组映射关系的一个实施例的示意图;
图5是本发明提供的像素组加载至线程束的一个实施例的示意图;
图6是本发明提供的像素组加载至线程束的另一个实施例的示意图;
图7是现有技术提供的线程执行逐深度卷积运算时的通道并行示例图;
图8是本发明提供的像素并行的深度运算实现装置的一个实施例的结构示意图;
图9是本发明提供的电子设备的一个实施例的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明中涉及到的人工智能处理器,可以是CPU(Central Processing Unit,中央处理器)、GPU(Graphics Processing Unit,图形处理器)、TPU(Tensor Processing Unit,张量处理器)、NPU(Neural network Processing Unit,神经网络处理器)、DPU(Deeplearning Processing Unit,深度学习处理器)、APU(Accelerated Processing Unit,加速处理器),以及GPGPU(General-Purpose computing on Graphics Processing Unit,通用图形处理器)中的任意一种,当以本发明实施例运用到具体产品或技术中确定。
此外,在本发明的实施例中,所谓的“像素”并非传统意义上的图像像素值,而是用于表征任意类型数据的抽象单位。具体而言,一个“像素”对应于输入张量中某个位置的数据单元。
下面以GPU为例,说明本发明实施例提供的像素并行的深度运算实现方法、装置、计算机可读存储介质、电子设备及计算机程序产品。
参见图1,是本发明提供的像素并行的深度运算实现的一个实施例的流程示意图。
本发明第一方面实施例提供了一种像素并行的深度运算实现方法,包括步骤S1至步骤S5,具体如下:
步骤S1:将输入张量划分为m个通道组,并分配给m个线程束独立处理;其中,每个线程束包含NT个线程;每个通道组包含NC个通道的像素;NT≥1;NC≥1;m≥1;
步骤S2:获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;
步骤S3:分别为每个所述线程分配与所述元素数量相等的寄存器组;其中,每个寄存器组用于存储对应的所述元素的一个像素组;每个像素组由对应的通道组中同一个行列位置处的所有像素组成;
步骤S4:在所述通道组中,分别从每个所述行列起点坐标开始,以所述滑动步长为跨距,按行扫描NT个行列位置,并将扫描到的NT个行列位置处的像素组依次加载至对应的所述线程束内各线程的寄存器组;
步骤S5:通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果。
需要说明的是,本发明实施例中的滑窗算子包括:池化算子、单通道卷积核(可用于逐深度卷积运算)或多通道卷积核(可用于分组卷积运算)。
在步骤S1中,将维度为H×W×C的输入张量沿通道维度进行分组,生成m个通道组,每个通道组包含NC个连续通道的像素;其中,H为输入张量的高度,W为输入张量的宽度,C为输入张量的通道总数;每个通道组的维度为H×W×NC。进一步地,为每个通道组分配一个独立的线程束;其中,每个线程束包含NT个线程(如32个线程)。
在步骤S2中,获取滑窗算子在二维平面上的属性参数,包括:滑窗算子在二维平面中参与覆盖操作的元素数量、每个元素初始覆盖的行列起点坐标和滑动步长;其中,二维平面是由滑窗算子或输入张量的垂直方向和水平方向确定的平面,与深度/通道维度无关。如图2所示,是本发明提供的滑窗算子在输入张量中滑动的一个实施例的示意图。图2中像素数据的坐标为,即数据块中的第行第列,这同样与通道维度无关;其中,,,,并且和共同定位像素数据在二维平面上实际的行位置(即行位置=+-1)。如图3所示,是本发明提供的输入张量在二维平面上投影的一个实施例的示意图。在图3中,为像素数据的行列位置坐标;滑窗算子为3×3的单通道卷积核,其在二维平面中参与覆盖操作的元素数量为9,元素为卷积权重;其中,为卷积权重与卷积核中心在垂直方向上的位置偏移量,为卷积权重与卷积核中心在水平方向上的位置偏移量。因此,9个元素分别为,,,,,,,和。
如图2和图3所示,将中心点为的灰色区域①作为3×3的卷积核在当前计算批次下起始的局部滑窗视野(初始覆盖区域)。权重的行列起点坐标为,权重的行列起点坐标为,权重的行列起点坐标为,……,权重的行列起点坐标为,即滑窗算子在二维平面上的行列起点坐标集合为{,,,,,,,,};滑动步长为1,即从中心点为的灰色区域①,按行滑动1步,得到中心为的虚线包围区域②。由于上述坐标与深度(通道)维度无关,将3×3的单通道卷积核扩展为多通道卷积核(如3×3×NC)后,其在二维平面上的属性参数仍与上述内容一致。
在步骤S3中,为各线程束内的每个线程分配KH×KW个专用寄存器组,形成滑窗数据缓存区;其中,KH为滑窗算子的高度,KW为滑窗算子的宽度。例如,针对于3×3的卷积核,每个线程会分配到9个专用寄存器组。每个寄存器组用于存储同一个行列位置处的NC个通道的像素值。在寄存器可存储32位浮点数且每个像素值为16位浮点数的情况下,若NC=2,则每个寄存器组(标号Rx)仅由1个寄存器(标号rx)组成;若NC>2,则每个寄存器组由个寄存器组成。如图4所示,是本发明提供的线程束与像素组映射关系的一个实施例的示意图。在图4中,输入张量包含8个通道(即C0,C1,…,C7),按照NC=2的划分规则,将输入张量分为4个通道组,因此启用4个线程束,线程束中每个线程所处理的任意一个像素组为对应的通道组中同一个行列位置处的2个通道像素。
此外,线程中的每个寄存器组与滑窗算子中对应的元素存在映射关系。如图5所示,是本发明提供的像素组加载至线程束的一个实施例的示意图。在图5中,滑窗算子为3×3的卷积核,线程束0处理包含通道C0和C1的通道组,每个线程分别具有9个专用寄存器组(即R0,R1,…,R8);每个寄存器组对应一组(,)的卷积权重。例如,寄存器组R0(在NC=2时可用寄存器r1表征)用于存储一组偏移量为(-1,-1)的卷积权重{,}对应的像素组(由坐标为对应的两个通道像素组成);类似地,寄存器组R1用于存储一组偏移量为的卷积权重{,}对应的像素组。由此可知,任意一个线程束中的一个线程能够持有滑窗算子的一个局部滑窗视野对应的NC个通道像素。
在步骤S4中,在第i个通道组中,将滑窗算子的行列起点坐标集合中的第j个行列起点坐标作为第j路行扫描路线的起点,以滑动步长为跨距,扫描NT个行列起点坐标,并依次将这NT个行列位置处的像素组加载至第i个线程束内各线程的第j个寄存器组中;其中,1≤i≤m;1≤j≤KH×KW。
为了对本发明实施例提供的技术方案做更清楚的描述,下面提供一些具体实施例进行参考:
举例1:如图2、3和5所示,将第1个通道组(对应于通道C0和C1)的像素组加载至线程束0的32个线程中。针对32个线程各自专属的第1个寄存器组R0(或寄存器r0),从滑窗算子的行列起点坐标集合中的第1个行列起点坐标开始,以滑动步长为1的跨距,连续读取32个行列坐标(最后一个读取的行列坐标为),并将这32个行列坐标对应的像素组至依次序填入32个线程各自专属的寄存器组R0中;针对32个线程各自专属的第2个寄存器组R1(或寄存器r1),从滑窗算子的行列起点坐标集合中的第2个行列起点坐标开始,以滑动步长为1的跨距,连续读取32个行列坐标(最后一个读取的行列坐标为),并将这32个行列坐标对应的像素组至依次序填入32个线程各自专属的寄存器组R1中;按照上述类似地操作,继续完成线程束0的32个线程各自专属的寄存器组R2~R8的数据加载。因此,线程T0对应的局部滑窗视野是以为中心的灰色区域①,线程T1对应的局部滑窗视野是以为中心的虚线包围区域②,……,线程T31对应的局部滑窗视野是以为中心的虚线包围区域③。
举例2:如图6所示,是本发明提供的像素组加载至线程束的另一个实施例的示意图。在图6中,输入张量已存入共享内存,每个内存单元保存一个行列位置对应的两个通道像素,并按照逐行加载的顺序序号和通道编号标记像素;例如,(p-1C0, p-1C1)相当于上述像素组,并且p-1C0为该像素组中通道C0的像素值。在当前计算批次中,输入张量包含8个通道(即C0,C1,…,C7),按照NC=2划分通道组,则启用4个线程束作为执行单元(ExecutiveUnit,EU)。每个线程分配KH×KW个专用寄存器组。若滑窗算子为3×3的卷积核,则每个线程分配9个专用寄存器组(即R0,R1,…,R8)。在每个执行单元对应的通道组中,从滑窗算子的9个行列起点坐标开始,执行9路数据加载操作,以逐行扫描的方式连续加载32组像素数据,并将数据填入对应编号的寄存器组。
在步骤S5中,每个线程独立处理KH×KW×NC个像素值,并支持多种运算模式,如卷积运算和池化运算。
现有方法在线程间采用的是通道并行策略;例如,输入张量有90个通道,则需启用2个线程束(128个线程),但这两个线程束执行一次卷积计算时只能处理90个局部滑窗视野(对应于90个通道的计算任务),未能充分利用硬件资源的计算能力。与之相比,本发明实施例在线程间采用的是像素并行策略,即局部滑窗视野并行策略;上述2个线程束执行一次卷积计算时可以处理128个局部滑窗视野对应的NC个通道像素。因此,本发明实施例通过线程间的像素并行策略,实现线程级别的独立计算任务分配,为每个线程分配对应的局部滑窗视野的计算任务,能够最大化地利用分配的硬件资源,进而提高计算效率。
在一个可选的实施例中,所述输入张量由一个特征数据块构成,或者由多个特征数据块在原始空间的垂直方向上拼接得到,或者由一个特征数据块拆分出的任一子数据块构成。
需要说明的是,本发明实施例中的输入张量可以通过以下3种主要的数据组织方式获取,只要满足线程束并行处理数据且资源分配合理这一条件即可:
(1)单一特征数据块方式:如果特征数据块的维度为[H, W, C],且在垂直方向和水平方向构成的二维平面上,局部滑窗视野的中心点可覆盖位置的数量Ncenter≤NT,同时线程束资源足以覆盖整个特征数据块的通道总数C,则输入张量直接由完整的特征数据块构成;这种方式适用于特征数据块尺寸较小且计算资源充足的情景。
(2)垂直拼接方式:如果q个特征数据块沿高度维度进行垂直拼接,形成维度为[qH, W, C]的复合张量,且该复合张量对应的Ncenter≤NT,同时线程束资源足以覆盖整个特征数据块的通道总数C,则将该复合张量作为输入张量;这种方式适合需要整合多个数据块进行统一处理的情景。
(3)动态拆分方式:①行列位置拆分,当特征数据块对应的Ncenter>NT时,则可以按照满足Ncenter=NT的条件,将该特征数据块垂直于二维平面方向拆分为多个子数据块;②通道维度拆分:如果线程束资源无法覆盖特征数据块的通道总数C,则根据线程束资源的限制,按通道维度将特征数据块拆分为多个子数据块。这些子数据块将以分批次的方式进行处理,每批次计算时,将其中一个子数据块作为输入张量。这种方式适用于特征数据块尺寸较大或计算资源受限的场景,通过拆分实现计算资源的合理利用。
值得说明的是,输入张量的获取方法并不限于上述三种方式的单独使用,还可以是多种方法的任意组合,本发明实施例对此不做限定。例如,可以先将多个特征数据块沿原始空间的垂直方向拼接为一个新的特征数据块(如图2),然后再满足Ncenter=NT的条件,对新的特征数据块垂直于二维平面方向进行拆分,从而得到多个输入张量。
本发明实施例对输入张量的构建具有高度的灵活性,能够适应不同的特征数据规模和计算资源条件。
在一个可选的实施例中,所述滑窗算子为池化算子;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
在任一所述线程束中,通过每个线程对加载得到的像素组执行通道隔离的池化操作,得到对应的局部滑窗视野内NC个通道的池化结果。
需要说明的是,对于每个线程而言,其加载得到的所有像素组所构成的数据总维度为KH×KW×NC。在计算过程中,线程会针对每个通道执行独立的池化操作。常见的池化操作有最大池化、平均池化等。以最大池化为例,任意一个线程会在其负责的局部滑窗视野内,对每个通道单独操作,选取该通道中的最大像素值,作为该通道的池化结果。通过这样的方式,每个线程最终得到对应的局部滑窗视野内NC个通道的池化结果。
在一个可选的实施例中,所述滑窗算子为单通道卷积核;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
将每个所述寄存器组对应的卷积权重以标量形式广播至对应的所述线程束内的所有线程;
在任一所述线程束中,通过每个线程对加载得到的像素组和卷积权重进行通道隔离的乘加运算,获得对应的局部滑窗视野内NC个通道的卷积结果。
需要说明的是,如图7所示,是现有技术提供的线程执行逐深度卷积运算时的通道并行示例图。在图7中,输入张量的通道总数为12,因此只有12个线程(T0~T11)参与卷积运算任务,其余线程(T12~T31)处于闲置状态。每个线程加载对应通道内局部滑窗视野的像素数据的同时,还要加载与该通道对应的卷积核。例如,线程T0加载了通道C0对应的3×3卷积核W0,还加载了当前卷积核W0在通道C0中的覆盖像素;类似地,线程T10加载了通道C10对应的3×3卷积核W10,还加载了当前卷积核W10在通道C10中的覆盖像素。显然,不同线程加载的像素数据和卷积核各不相同。因此,在执行卷积运算时,每个线程需要处理三路输入矢量操作数:第一路为输入特征数据的矢量,第二路为卷积权重的矢量,第三路为累加输入的矢量。然而,当前的GPU架构更适合处理不超过两路矢量操作数的指令,因此第三路操作数通常需要等待,导致指令执行效率下降。基于此,现有技术中对矢量寄存器的读带宽要求较高,进一步限制了计算性能的提升。
为了解决上述问题,本发明实施例将输入卷积权重(第二路矢量操作数)改为标量操作数,从而将乘加指令的输入操作数减少至两路矢量操作数。这种改进不仅更适配GPU架构的特性,使两路指令能够实现并行执行,还显著降低了矢量寄存器的读取带宽需求。同时,标量操作数与两路矢量操作数可以同步并行,从而减少指令等待时间,进一步提升计算效率。
具体地,在本发明实施例中,任一线程束内的每个线程均持有其对应通道组中局部滑窗视野内的数据。由于这些滑窗数据位于同一通道组中,因此线程束内所有线程需要访问相同的卷积权重。基于这一特性,本发明将卷积权重以标量形式广播至线程束内的所有线程,使同一线程束内所有线程共享相同的卷积权重。换言之,卷积权重以标量形式在线程束内共享。如图5所示,线程束0的T0至T31共享KH×KW×NC个卷积权重。最后,每个线程独立处理每一通道上的像素和共享的卷积权重,逐元素执行乘法运算后将结果累加,最终获得对应通道内局部滑窗视野的卷积结果。
在一个可选的实施例中,所述滑窗算子为多通道卷积核;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
将每个所述寄存器组对应的卷积权重以标量形式广播至对应的所述线程束内的所有线程;
在任一所述线程束中,通过每个线程对加载得到的像素组和卷积权重进行通道融合的乘加运算,获得对应的局部滑窗视野内的一个输出特征值;其中,每个所述通道组用于表征分组卷积运算中的一个输入组。
需要说明的是,在分组卷积运算中,每个通道组用于表征分组卷积运算中的一个输入组。对于每个输入组,对应的线程束会通过1个共享的多通道卷积核独立完成分组计算中的一个输出通道的计算。例如,假设将第1个通道组作为第1个输入组(维度为H×W×NC),单组输出通道数为5,则第1个线程束需要分别完成这5个输出通道的计算,并分别共享5个多通道卷积核(维度为KH×KW×NC),即执行一个输出通道的计算时,第1个线程束的32个线程共同访问一个多通道卷积核。
在计算过程中,每个线程负责处理局部滑窗视野内的一个输出特征值。对于任意一个线程获取的KH×KW×NC个像素值,分别与对应的卷积权重逐元素相乘后,再将所有乘积值累加,使得该线程输出一个卷积结果值,并作为对应的输出特征层中的一个元素。
在一个可选的实施例中,所述方法还包括:
在所述线程执行乘加运算之前,对所述像素组中像素值的坐标进行越界判断,并将越界坐标对应的像素值掩码为指定值,得到新的像素值。
需要说明的是,本发明实施例中填充指定值的操作(以填充0为例)包括但不限于以下两种方式:
(1)在线程的寄存器组获得像素组后,通过局部滑窗视野内中心点的坐标,以及各卷积权重的偏移量,判断对应的卷积权重在当前覆盖位置点的坐标是否越界;若越界,则将越界坐标对应的像素值掩码为指定值(如掩码为0)。
(2)在执行扫描操作的过程中,加载像素组的同时,主动判断像素坐标是否越界;若越界,则将越界坐标对应的像素值掩码为指定值,并将该指定值写入对应的寄存器组;否则,仍将原始像素值写入寄存器组。
除上述两种方式之外,还可根据实际需求和硬件架构,采用其他适合的掩码策略,本发明实施例对此不做限定。
参见图8,是本发明提供的像素并行的深度运算实现装置的一个实施例的结构示意图。
本发明第二方面实施例提供了一种像素并行的深度运算实现装置,包括:
线程束配置模块11,用于将输入张量划分为m个通道组,并分配给m个线程束独立处理;其中,每个线程束包含NT个线程;每个通道组包含NC个通道的像素;NT≥1;NC≥1;m≥1;
滑窗参数获取模块12,用于获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;
线程配置模块13,用于分别为每个所述线程分配与所述元素数量相等的寄存器组;其中,每个寄存器组用于存储对应的所述元素的一个像素组;每个像素组由对应的通道组中同一个行列位置处的所有像素组成;
像素加载模块14,用于在所述通道组中,分别从每个所述行列起点坐标开始,以所述滑动步长为跨距,按行扫描NT个行列位置,并将扫描到的NT个行列位置处的像素组依次加载至对应的所述线程束内各线程的寄存器组;
线程计算模块15,用于通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果。
需要说明的是,本发明第二方面实施例所提供的像素并行的深度运算实现装置,能够实现上述第一方面任一实施例所述的像素并行的深度运算实现方法的所有流程,装置中的各个模块、单元的作用以及实现的技术效果分别与上述第一方面任一实施例所述的像素并行的深度运算实现方法的作用以及实现的技术效果对应相同,这里不再赘述。
本发明第三方面实施例提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述第一方面任一实施例所述的像素并行的深度运算实现方法。
本发明第四方面实施例提供了一种计算机程序产品,包括计算机程序,所述计算机程序在被处理器执行时上述第一方面任一实施例所述的像素并行的深度运算实现方法。
参见图9,是本发明提供的电子设备的一个实施例的结构示意图。
本发明第五方面实施例提供了一种电子设备,包括处理器21、存储器22以及存储在所述存储器22中且被配置为由所述处理器21执行的计算机程序,所述处理器在执行所述计算机程序时实现上述第一方面任一实施例所述的像素并行的深度运算实现方法。
优选地,所述计算机程序可以被分割成一个或多个模块/单元(如计算机程序1、计算机程序2、……),所述一个或者多个模块/单元被存储在所述存储器22中,并由所述处理器21执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述电子设备中的执行过程。
所述处理器21可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器,或者所述处理器21也可以是任何常规的处理器,所述处理器21是所述电子设备的控制中心,利用各种接口和线路连接所述电子设备的各个部分。
所述存储器22主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序等,数据存储区可存储相关数据等。此外,所述存储器22可以是高速随机存取存储器,还可以是非易失性存储器,例如插接式硬盘,智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡和闪存卡(Flash Card)等,或所述存储器22也可以是其他易失性固态存储器件。
需要说明的是,上述电子设备可包括,但不仅限于,处理器、存储器,本领域技术人员可以理解,图9所示的结构框图仅仅是上述电子设备的结构示例,并不构成对上述电子设备的结构限定,上述电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种像素并行的深度运算实现方法,其特征在于,包括:
将输入张量划分为m个通道组,并分配给m个线程束独立处理;其中,每个线程束包含NT个线程;每个通道组包含NC个通道的像素;NT≥1;NC≥1;m≥1;
获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;
分别为每个所述线程分配与所述元素数量相等的寄存器组;其中,每个寄存器组用于存储对应的所述元素的一个像素组;每个像素组由对应的通道组中同一个行列位置处的所有像素组成;
在所述通道组中,分别从每个所述行列起点坐标开始,以所述滑动步长为跨距,按行扫描NT个行列位置,并将扫描到的NT个行列位置处的像素组依次加载至对应的所述线程束内各线程的寄存器组;
通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果。
2.如权利要求1所述的像素并行的深度运算实现方法,其特征在于,所述输入张量由一个特征数据块构成,或者由多个特征数据块在原始空间的垂直方向上拼接得到,或者由一个特征数据块拆分出的任一子数据块构成。
3.如权利要求1所述的像素并行的深度运算实现方法,其特征在于,所述滑窗算子为池化算子;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
在任一所述线程束中,通过每个线程对加载得到的像素组执行通道隔离的池化操作,得到对应的局部滑窗视野内NC个通道的池化结果。
4.如权利要求1所述的像素并行的深度运算实现方法,其特征在于,所述滑窗算子为单通道卷积核;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
将每个所述寄存器组对应的卷积权重以标量形式广播至对应的所述线程束内的所有线程;
在任一所述线程束中,通过每个线程对加载得到的像素组和卷积权重进行通道隔离的乘加运算,获得对应的局部滑窗视野内NC个通道的卷积结果。
5.如权利要求1所述的像素并行的深度运算实现方法,其特征在于,所述滑窗算子为多通道卷积核;
所述通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果,包括:
将每个所述寄存器组对应的卷积权重以标量形式广播至对应的所述线程束内的所有线程;
在任一所述线程束中,通过每个线程对加载得到的像素组和卷积权重进行通道融合的乘加运算,获得对应的局部滑窗视野内的一个输出特征值;其中,每个所述通道组用于表征分组卷积运算中的一个输入组。
6.如权利要求4或5所述的像素并行的深度运算实现方法,其特征在于,所述方法还包括:
在所述线程执行乘加运算之前,对所述像素组中像素值的坐标进行越界判断,并将越界坐标对应的像素值掩码为指定值,得到新的像素值。
7.一种像素并行的深度运算实现装置,其特征在于,包括:
线程束配置模块,用于将输入张量划分为m个通道组,并分配给m个线程束独立处理;其中,每个线程束包含NT个线程;每个通道组包含NC个通道的像素;NT≥1;NC≥1;m≥1;
滑窗参数获取模块,用于获取滑窗算子在二维平面中参与覆盖操作的元素数量、滑动步长,以及每个元素初始覆盖的行列起点坐标;
线程配置模块,用于分别为每个所述线程分配与所述元素数量相等的寄存器组;其中,每个寄存器组用于存储对应的所述元素的一个像素组;每个像素组由对应的通道组中同一个行列位置处的所有像素组成;
像素加载模块,用于在所述通道组中,分别从每个所述行列起点坐标开始,以所述滑动步长为跨距,按行扫描NT个行列位置,并将扫描到的NT个行列位置处的像素组依次加载至对应的所述线程束内各线程的寄存器组;
线程计算模块,用于通过每个所述线程对加载得到的像素组进行计算,得到对应的局部滑窗视野内的输出结果。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1~6中任一项所述的像素并行的深度运算实现方法。
9.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现如权利要求1~6中任一项所述的像素并行的深度运算实现方法。
10.一种电子设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如权利要求1~6中任一项所述的像素并行的深度运算实现方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510796726.9A CN120298196B (zh) | 2025-06-16 | 2025-06-16 | 像素并行的深度运算实现方法、装置、介质、设备及产品 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202510796726.9A CN120298196B (zh) | 2025-06-16 | 2025-06-16 | 像素并行的深度运算实现方法、装置、介质、设备及产品 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN120298196A true CN120298196A (zh) | 2025-07-11 |
| CN120298196B CN120298196B (zh) | 2025-08-15 |
Family
ID=96271213
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202510796726.9A Active CN120298196B (zh) | 2025-06-16 | 2025-06-16 | 像素并行的深度运算实现方法、装置、介质、设备及产品 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN120298196B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120952065A (zh) * | 2025-10-16 | 2025-11-14 | 上海壁仞科技股份有限公司 | 卷积权重梯度计算方法、装置、介质及设备 |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230281042A1 (en) * | 2022-03-02 | 2023-09-07 | Nvidia Corporation | Memory allocation for processing sequential data |
| KR20230150170A (ko) * | 2022-04-21 | 2023-10-30 | 연세대학교 산학협력단 | 텐서 코어를 위한 효율성이 개선된 그래픽 처리 장치 및 이의 레지스터 재사용 방법 |
| CN117851080A (zh) * | 2023-11-07 | 2024-04-09 | 曙光信息产业(北京)有限公司 | 数据读取方法、装置、计算机设备和存储介质 |
| CN118277133A (zh) * | 2024-06-03 | 2024-07-02 | 浪潮电子信息产业股份有限公司 | 模型运算优化方法、产品、设备及介质 |
| CN119312003A (zh) * | 2024-11-28 | 2025-01-14 | 上海壁仞科技股份有限公司 | 数据处理方法及装置、处理器、电子设备和存储介质 |
| CN119939095A (zh) * | 2025-04-03 | 2025-05-06 | 上海壁仞科技股份有限公司 | 卷积运算填充值的生成方法、应用方法、装置、介质、设备及产品 |
-
2025
- 2025-06-16 CN CN202510796726.9A patent/CN120298196B/zh active Active
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230281042A1 (en) * | 2022-03-02 | 2023-09-07 | Nvidia Corporation | Memory allocation for processing sequential data |
| KR20230150170A (ko) * | 2022-04-21 | 2023-10-30 | 연세대학교 산학협력단 | 텐서 코어를 위한 효율성이 개선된 그래픽 처리 장치 및 이의 레지스터 재사용 방법 |
| CN117851080A (zh) * | 2023-11-07 | 2024-04-09 | 曙光信息产业(北京)有限公司 | 数据读取方法、装置、计算机设备和存储介质 |
| CN118277133A (zh) * | 2024-06-03 | 2024-07-02 | 浪潮电子信息产业股份有限公司 | 模型运算优化方法、产品、设备及介质 |
| CN119312003A (zh) * | 2024-11-28 | 2025-01-14 | 上海壁仞科技股份有限公司 | 数据处理方法及装置、处理器、电子设备和存储介质 |
| CN119939095A (zh) * | 2025-04-03 | 2025-05-06 | 上海壁仞科技股份有限公司 | 卷积运算填充值的生成方法、应用方法、装置、介质、设备及产品 |
Non-Patent Citations (1)
| Title |
|---|
| 武昱;闫光辉;王雅斐;马青青;刘宇轩;: "结合GPU技术的并行CP张量分解算法", 计算机科学, no. 11, 15 November 2018 (2018-11-15) * |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN120952065A (zh) * | 2025-10-16 | 2025-11-14 | 上海壁仞科技股份有限公司 | 卷积权重梯度计算方法、装置、介质及设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN120298196B (zh) | 2025-08-15 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN108205701B (zh) | 一种执行卷积计算的系统及方法 | |
| CN112084038A (zh) | 神经网络的内存分配方法及装置 | |
| CN120298196B (zh) | 像素并行的深度运算实现方法、装置、介质、设备及产品 | |
| US12136031B2 (en) | System and method for increasing utilization of dot-product based neural network accelerator | |
| CN120317289B (zh) | 数据处理方法及装置、处理器、电子设备及存储介质 | |
| CN109300083B (zh) | 一种分块处理Wallis匀色方法及装置 | |
| CN119179577B (zh) | 硬件计算资源分配方法、硬件计算资源、电子设备 | |
| CN120318057B (zh) | 垂直方向像素并行的深度运算实现方法、装置、介质、设备及产品 | |
| CN120196566B (zh) | 数据加载方法、数据存储方法、处理器、电子设备和介质 | |
| CN120277307A (zh) | 卷积运算方法、装置、电子设备和存储介质 | |
| CN117851742B (zh) | 数据存储方法、数据处理方法、数据存储器、数据处理器 | |
| US11164032B2 (en) | Method of performing data processing operation | |
| US11682099B2 (en) | Hardware accelerator for integral image computation | |
| CN119166287A (zh) | 计算任务优化方法、装置、设备、介质和程序产品 | |
| CN115719088A (zh) | 一种支持存内cnn的中间缓存调度电路装置 | |
| CN112633470B (zh) | 优化神经网络卷积残差结构的方法、系统、设备及介质 | |
| CN111667052A (zh) | 专用神经网络加速器的标准与非标准卷积一致性变换方法 | |
| CN112418417A (zh) | 基于simd技术的卷积神经网络加速装置及方法 | |
| CN120123264B (zh) | 数据加载方法、数据存储方法、处理器、电子设备和介质 | |
| CN119358615B (zh) | 在芯片中实现深度卷积算子的方法、电子设备与存储介质 | |
| CN120952065B (zh) | 卷积权重梯度计算方法、装置、介质及设备 | |
| CN120631591B (zh) | 垂直方向连续排列的卷积权重梯度计算方法、装置及介质 | |
| CN120632270B (zh) | 卷积权重梯度计算方法、装置、介质、设备及产品 | |
| US20240281496A1 (en) | Convolution layer processor and method | |
| CN120561440B (zh) | 一种基于gpu并行加速的异构对称矩阵特征值分解方法、系统和设备 |
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 |