CN117827386A - 调度方法、调度装置、电子设备及存储介质 - Google Patents
调度方法、调度装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117827386A CN117827386A CN202211188739.0A CN202211188739A CN117827386A CN 117827386 A CN117827386 A CN 117827386A CN 202211188739 A CN202211188739 A CN 202211188739A CN 117827386 A CN117827386 A CN 117827386A
- Authority
- CN
- China
- Prior art keywords
- calculation
- convolution
- data
- computing
- units
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 94
- 238000004364 calculation method Methods 0.000 claims abstract description 401
- 230000005540 biological transmission Effects 0.000 claims abstract description 45
- 230000010076 replication Effects 0.000 claims abstract description 30
- 230000008569 process Effects 0.000 claims abstract description 24
- 230000015654 memory Effects 0.000 claims description 51
- 238000012546 transfer Methods 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 20
- 238000013527 convolutional neural network Methods 0.000 claims description 20
- 239000011159 matrix material Substances 0.000 claims description 13
- 230000004931 aggregating effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 14
- 238000013473 artificial intelligence Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 238000013528 artificial neural network Methods 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 230000002829 reductive effect Effects 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/48—Program initiating; Program switching, e.g. by interrupt
-
- 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/04—Architecture, e.g. interconnection topology
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Neurology (AREA)
- Complex Calculations (AREA)
Abstract
一种调度方法、调度装置、电子设备及存储介质。该调度方法包括:多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,多个第一计算结果组用于构成第一卷积计算得到的第一卷积层;根据由多个计算单元对第一卷积层进行第二卷积计算后将得到的第二卷积层在多个计算单元中的配置规则,确定多个计算单元上的多个第一计算结果组对应的数据复制传送模式;多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的数据复制传送模式,从第二计算单元上的第一计算结果组中获取第一计算单元在第二卷积计算过程中进行填充所需的第一中间数据行。该调度方法能够有效减少数据的重复计算,提高芯片算力的利用率。
Description
技术领域
本公开的实施例涉及一种调度方法、调度装置、电子设备及存储介质。
背景技术
人工智能(Artificial Intelligence,AI)芯片是专用于进行神经网络运算的芯片,是为了加速神经网络执行而专门设计的芯片。随着人工智能(AI)的发展,算法模型的参数量剧增,对算力的需求越来越大。
由于传统的硬件架构(例如,中央处理器(Central Processing Unit,CPU))在架构设计阶段考虑了不同业务需求之间的平衡,因此其在AI应用上所能提供的算力有限。出于对高算力的考虑,目前的AI芯片除了采用通用图形处理器(Graphics Processing Unit,GPU)之外,还广泛采用同构多核架构的领域专用加速器(Domain Specific ASIC,DSA)。
发明内容
本公开至少一实施例提供一种用于多层卷积神经网络的调度方法,该调度方法包括:多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,所述多个第一计算结果组用于构成所述第一卷积计算得到的第一卷积层,所述多个计算单元包括第一计算单元和第二计算单元;根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式;多个计算单元中需要进行数据有效数据行填充的第一计算单元,基于对应的所述数据复制传送模式,从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行。
本公开至少一实施例还提供一种调度装置,该调度装置包括:计算控制模块,配置为使多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,所述多个第一计算结果组用于构成所述第一卷积计算得到的第一卷积层,所述多个计算单元包括第一计算单元和第二计算单元;分配调度模块,配置为根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式;数据传输模块,配置为使多个计算单元中需要进行数据有效数据行填充的第一计算单元,基于对应的所述数据复制传送模式,从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行。
本公开至少一实施例还提供一种电子设备,包括本公开任一实施例所提供的调度装置。
本公开至少一实施例还提供一种电子设备,该电子设备包括:处理器;存储器,包括至少一个计算机程序模块;其中,所述至少一个计算机程序模块被存储在所述存储器中,并被配置为由所述处理器执行,所述至少一个计算机程序模块用于实现本公开任一实施例所述的调度方法。
本公开至少一实施例还提供一种存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时实现本公开任一实施例所述的调度方法。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1A为模型并行的示意图;
图1B为数据并行的示意图;
图2为一种在计算图上表示的基于数据并行的卷积计算过程的示意图;
图3为本公开至少一实施例提供的一种调度方法的流程示意图;
图4为图3中步骤S20的示意性流程图;
图5为图3中步骤S30的示意性流程图;
图6A-6D为本公开至少一实施例提供的数据复制传递过程的示意图;
图7为本公开至少一实施例提供的一种调度装置的示意性框图;
图8为本公开至少一实施例提供的一种电子设备的示意性框图;
图9为本公开至少一实施例提供的另一种电子设备的示意性框图;
图10为本公开至少一实施例提供的另一种电子设备的示意性框图;以及
图11为本公开至少一实施例提供的一种存储介质的示意图。
具体实施方式
为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本公开实施例的以下说明清楚且简明,可省略已知功能和已知部(元)件的详细说明。当本公开实施例的任一部(元)件在一个以上的附图中出现时,该部(元)件在每个附图中由相同或类似的参考标号表示。
领域专用加速器(Domain Specific ASIC,DSA)的核心思想是使用专用的硬件做专用的事情,例如,DSA是满足一个领域(Domain)内的应用,而非一个固定的应用。因此,DSA能够获得灵活性与专用性的折衷。DSA加速器是指一颗芯片内使用多个计算单元(或称为处理单元(Process Element,PE)或处理核)互联来实现算力扩充和计算加速,该多个处理单元例如通过通信线路彼此连接,该通信线路例如可以是总线、片上网络等。对于这种多PE互联的AI加速器,如何有效调度硬件资源来高效地完成深度神经网络模型的推理,是AI编译器面临的主要挑战。
目前,对于多核的编译调度方案可以有如下两种实现方式。
一种方式是模型并行(Model Parallel),即不同的设备(Device)负责计算图不同部分的计算。例如在某些领域专用加速器中,需要先将计算图中的各个算子静态地分配到芯片内部的不同的PE上,然后再将输入数据输入到第一个算子所在的PE上,当第一个算子所在的PE完成计算后,将计算后的数据传输到下一个PE中,直到完成所有算子的计算。模型并行的每个PE中仅执行本地内存上的算子,每个PE必须等待前面的算子计算结束后才能接着计算,这是一种以流水线(Pipeline)的方式串行化执行运算的方式。
例如,如图1A所示,PE0、PE1、PE2上分别加载了3种不同的算子,例如这3种算子分别为对应神经网络不同层的卷积算子。例如PE0具有卷积算子A,PE1具有卷积算子B,PE2具有卷积算子C。在计算时,服务器先将输入数据加载到卷积算子A所在的PE0,等待PE0完成对输入数据的第一卷积计算后,将第一卷积计算的结果传递给PE1,在PE1上执行对应于卷积算子B的第二卷积计算,以此类推,直到PE2上的卷积算子C执行完后,将PE2上得到最终的结果返回主机。
但是,模型并行需要静态编译,需要将计算图中的部分算子分配到固定的多个PE中,因而无法处理含有动态形状(Shape)的计算图。动态形状是指张量(Tensor)的形状(Shape)依赖于具体的运算,无法通过提前的计算得到,也即,动态的计算图是根据每一步的计算搭建的。因此,只包含计算图部分的模型并行方式是无法处理动态计算图的。
另一种方式是数据并行(Data Parallel),即每个设备(Device)中都有完整的计算图。例如在某些GPU中,需要先将计算图中的每个算子依次加载到GPU设备中,每个算子并行地放在多个PE上,然后再将输入数据拆分成多份,分别加载到多个PE上,多个PE并行处理输入数据,直到完成所有算子的计算后,将多个PE上的计算结果汇总返回给主机。
例如,如图1B所示,PE0、PE1、PE2上均加载了3种不同的算子,例如这3种算子分别为对应神经网络不同层的卷积算子。例如PE0、PE1、PE2上均具有卷积算子A、B、C。在计算时,服务器先将输入数据拆分为多份,例如均匀拆分为3份输入数据,然后将3份输入数据分别加载到PE0、PE1、PE2上,PE0、PE1、PE2并行地对输入数据依次执行对应卷积算子A、B、C的多次卷积计算,直到计算结束后,系统再将PE0、PE1、PE2上的最终结果汇聚起来并返回主机。
数据并行的实现目前没有固定可行的模式,需要针对不同的硬件特点进行调度优化。在实际的模型部署时,有的模型中算子数据量大,有的模型中算子数据量小,因此需要根据模型对AI芯片进行不同的部署方案才能得到最优的推理性能。
在目前的数据并行方式中,对于数据量很大的输入数据,PE内部无法一次性放下所有计算所需的输入数据,因此通常需要将输入数据拆分为多个组(Group),然后将多个组的数据分别放在不同的PE上,由多个PE并行计算,等到计算结束后,再将多个PE上的计算结果汇聚起来以得到对应于输入数据的最终输出结果。
然而,在多层神经网络的推理计算过程中,考虑到卷积计算的填充(Padding)操作,直接将大图片或者大数据量的数据拆分为多个组容易引入数据的重复计算问题。
例如,一个示例性的计算图包含有如下3个卷积算子(conv):
%5:[(1 224 224 64),F,FP32]=conv(%0:[(1 224 224 64),F,FP32],1%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1);
%10:[(1 224 224 64),F,FP32]=conv(%5:[(1 224 224 64),F,FP32],6%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1);
%15:[(1 224 224 64),F,FP32]=conv(%10:[(1 224 224 64),F,FP32],11%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1)。
%0,%5,%10和%15表示张量(Tensor)数据。例如,神经网络的首层卷积的输入图像可以表示为[B,H,W,C],即输入数据的维度是B×H×W×C。例如,%0表示神经网络的首层卷积的输入图像的大小为[1,224,224,64],也即,输入图像具有64个通道(Channel),每个通道的图像尺寸(高度H×宽度W)为224×224,共1个批次(Batch)。例如,每个卷积算子conv采用的卷积核的大小可以表示为kh×kw,也即,kh=3,kw=3表示卷积核的尺寸为3×3。例如,每个卷积算子conv的填充操作用pad表示,例如,pad_h_top=1表示在图片的高度h方向,在图片的上方top填充1行,例如填充0;pad_h_bottom=1表示在图片的高度h方向,在图片的下方bottom填充1行,例如填充0;pad_w_left=1表示在图片的宽度w方向,在图片的左边left填充1列,例如填充0;pad_w_right=1表示在图片的宽度w方向,在图片的右边right填充1列,例如填充0。例如,每个卷积算子conv中卷积核的滑动步长用stride表示,例如,stride_h=1表示卷积核在图片的高度h方向移动时,每次移动的大小为1个像素点;例如,stride_w=1表示卷积核在图片的宽度w方向移动时,每次移动的大小为1个像素点。该计算采用浮点计算,且精度为FP32。
例如,图2示出了一种在计算图上表示的采用数据并行的卷积计算过程的示意图,该计算图包含如上所述的3个卷积算子。例如,当一个PE的内存无法一次性放下计算所需的所有数据时,需要根据PE的内存和数量将输入数据拆分为多个数据组。例如,在图2中具有3个PE,输入数据的大小为224×224,将输入数据拆分为3个数据组以分别加载到3个PE中进行卷积计算。
对于输入数据的拆分和拆分成的数据组的大小、范围等,需要根据输出数据来选择。例如,在图2所示的计算图上,输出数据%15的大小为224×224,选择在输出数据的高度H维度将数据大致均匀地拆分为3份,则3份输出数据组在分别对应于3个PE的三个轮次round1、round2和round3上的(高度)大小分别为75行、75行和74行。在对输入数据进行划分时,每份输出数据需要深度优先遍历整个数据组,以向前递推得到每份输入数据的范围。
需要说明的是,图2所示的计算图中显示的数据均为“有效数据”。出于简化的目的,这里的“有效数据”表示每一次卷积计算所得到的数据中具有实际意义的、有效的数据。在实际计算时,由于在每一次卷积计算后为了维持图像大小不变,需要进行填充操作,因此,对于被拆分后的每个数据组的“边缘处”的数据,其与填充的“0”所组成的用于与卷积核进行卷积计算的区域为非有效区域,由该区域进行卷积计算后得到的结果为非有效数据,需要舍去。也即,完整的输入数据进行卷积计算所得到的输出数据为有效数据,所以,对应到拆分后的数据组中,只有有效区域的数据进行卷积计算后得到的数据为有效数据。为了图示的清楚性和描述的简洁性,在本申请的附图中,计算图上所示的数据均为有效数据。
例如,图2的round1上显示了输出数据%15具有75行有效数据,即[0,74]。由于填充操作(padding)为:pad_h_top=1,pad_h_bottom=1,则由%15向前递推得到的中间数据%10需要具有76行有效数据,即[0,75]行,由中间数据%10向前递推得到的中间数据%5需要具有77行有效数据,即[0,76]行,依次类推,最终得到的输入数据%0需要具有78行有效数据。由此得到round1的输入数据%0在高度方向上的读取数据的范围为[0,77](行号从0开始),共78行。
同样地,图2的round2上显示了输出数据%15具有75行有效数据,即[75,149]。由于填充操作(padding)为:pad_h_top=1,pad_h_bottom=1,则由%15向前递推得到的中间数据%10需要具有77行有效数据,即[74,150]行,由中间数据%10向前递推得到的中间数据%5需要具有79行有效数据,即[73,151]行,依次类推,最终得到的输入数据%0需要具有81行有效数据。由此得到round2的输入数据%0在高度方向上的读取数据的范围为[72,152],共81行。
同样地,图2的round3上显示了输出数据%15具有74行有效数据,即[150,223]。由于填充操作(padding)为:pad_h_top=1,pad_h_bottom=1,则由%15向前递推得到的中间数据%10需要具有75行有效数据,即[149,223]行,由中间数据%10向前递推得到的中间数据%5需要具有76行有效数据,即[148,223]行,依次类推,最终得到的输入数据%0需要具有77行有效数据。由此得到round3的输入数据%0在高度方向上的读取数据的范围为[147,223],共77行。
从图2的计算图上可以清楚地看到,round1和round2的重复计算区域为[72,77]行,即重复了6行,round2和round3的重复计算区域为[147,152]行,也重复了6行。由此可知,卷积网络的深度越深,向前递推次数越多,则前一层上由于填充导致的数据组边缘处所需的有效数据越多,也即,需要重复计算的区域越大,这将导致大量的算力冗余开销。
本公开至少一实施例提供一种用于多层卷积神经网络的调度方法。该调度方法包括:多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,多个第一计算结果组用于构成第一卷积计算得到的第一卷积层,多个计算单元包括第一计算单元和第二计算单元;根据由多个计算单元对第一卷积层进行第二卷积计算后将得到的第二卷积层在多个计算单元中的配置规则,确定多个计算单元上的多个第一计算结果组对应的数据复制传送模式;多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的数据复制传送模式,从第二计算单元上的第一计算结果组中获取第一计算单元在第二卷积计算过程中进行填充所需的第一中间数据行。该调度方法通过复制并传送计算单元上的有效数据到另一计算单元中,能够实现计算单元算力的均衡利用,减少了数据的重复计算,提高了算力的利用率。
本公开至少一实施例还提供了一种调度装置、电子设备及存储介质。该调度装置、电子设备及存储介质同样地,通过复制并传送计算单元上的有效数据到另一计算单元中,能够实现计算单元算力的均衡利用,减少了数据的重复计算,提高了算力的利用率。
下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同附图中相同的附图标记将用于指代已描述的相同的元件。
图3为本公开至少一实施例提供的一种调度方法的流程示意图。如图3所示,该调度方法包括步骤S10~S30。
步骤S10:多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,多个第一计算结果组用于构成第一卷积计算得到的第一卷积层,多个计算单元包括第一计算单元和第二计算单元;
步骤S20:根据由多个计算单元对第一卷积层进行第二卷积计算后将得到的第二卷积层在多个计算单元中的配置规则,确定多个计算单元上的多个第一计算结果组对应的数据复制传送模式;
步骤S30:多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的数据复制传送模式,从第二计算单元上的第一计算结果组中获取第一计算单元在第二卷积计算过程中进行填充所需的第一中间数据行。
例如,该调度方法可以用于对多层卷积神经网络进行卷积运算的AI芯片、通用图形处理单元(GPGPU)等的计算装置中,例如,该AI芯片可以是采用DSA加速器的AI芯片或者具有多个PE单元的AI芯片,例如,可以用于数据并行化式的分布式训练中,本公开的实施例对此不作限制。
需要说明的是,在本公开至少一实施例中,“第一卷积计算”可以表示对完整的输入图像进行的一次卷积计算,也可以表示对于计算单元上当前的输入数据组进行的一次卷积计算。“第一卷积计算”可以是多层卷积计算中的任一次卷积计算,而非仅对于首层卷积进行的卷积计算。例如,“第一卷积计算”可以是对于首层卷积进行的一次卷积计算,也可以是对第2层、第3层……等进行的一次卷积计算。
在本公开至少一实施例中,“第二卷积计算”表示对应于“第一卷积计算”的下一次卷积计算,也即,将第一卷积计算后得到的“第一卷积层”作为输入进行的一次卷积计算。“第一卷积层”为“第一卷积计算”得到的计算结果所组成的卷积层,这里的“第一卷积层”表示对未进行拆分的完整的输入图像进行第一卷积计算所得到的实际卷积层。例如,第一卷积层可以是第二卷积计算的输入数据。同样地,“第二卷积层”为“第二卷积计算”得到的计算结果所组成的卷积层,这里的“第二卷积层”表示对未进行拆分所得的数据组成的第一卷积层进行第二卷积计算所得到的实际卷积层。
下面将结合图6A-6D所示的计算图详细介绍本公开实施例的调度方法。在下面示例性说明中以三个PE(图6A-6C)为例进行说明,但是本公开的实施例不限于此,计算装置可以包括例如2个PE、4个PE(图6D)或者更多数量的PE。
需要说明的是,图6A-6D所示的长条形区域为每一次卷积计算的输入图像的某一维度(例如高H或宽W)上的至少部分有效数据的范围的抽象表示。对角线区、网格线区和菱形线区分别为计算单元(PE0、PE1、PE2等)上的数据组的抽象表示,其各自在长条形区域上的位置仅为其各自的数据组在输入图像上对应的位置的示意性表示,而不构成对本公开实施例的限制。
例如,在步骤S10中,多个计算单元上对应的“多个数据组”可以是对原始输入矩阵进行拆分得到的多个原始输入数据组(这些原始输入数据组被输入到计算装置中),也可以是计算装置中任一次卷积计算所针对的多个输入数据组。例如,多个数据组可以为图6A中PE0、PE1、PE2上的针对%0进行卷积计算的多个数据组10、20、30,也可以是针对%5进行卷积计算的多个数据组,例如,每个计算单元针对%5进行卷积计算的数据组包括第一计算结果组和从另一计算单元中获取的中间数据行。也即,在本公开至少一实施例中,第一计算单元上的第一计算结果组和从第二计算单元上获取的第一中间数据行构成用于第一计算单元进行第二卷积计算所需的数据组。
例如,在步骤S10中,多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组。例如,多个第一计算结果组可以用于构成第一卷积计算得到的第一卷积层。例如,如图6A所示,多个计算单元PE0、PE1、PE2分别对对应的多个数据组10、20、30进行第一卷积计算得到多个第一计算结果组11、21、31,该多个第一计算结果组11、21、31可以用于构成第一卷积计算所得到的第一卷积层。
例如,在本公开的实施例中,多个计算单元中的多个第一计算结果组可以直接构成第一卷积计算所得到的第一卷积层,也可以构成第一卷积计算所得到的第一卷积层的一部分。例如,当输入图像较小时,多个计算单元可以一次性承载所有的输入数据,则汇聚多个计算单元中的多个第一计算结果组即可组成第一卷积层;当输入图像较大时,多个计算单元无法一次性承载所有的输入数据,需要将输入数据分为多次载入计算单元,将每次载入的输入数据拆分为多组,分别放入多个计算单元中,则多个计算单元中的多个第一计算结果组仅构成对应该次载入的输入数据的第一卷积层的一部分。
例如,在步骤10中,多个第一计算结果组中的数据行在第一卷积层中无交叠地连续。例如,如图6A所示,多个第一计算结果组11、21、31中的数据行在第一卷积层中无交叠地连续,也即,多个计算单元PE0、PE1、PE2上由对%0进行第一卷积计算所得到的多个第一计算结果组11、21、31中的数据无重叠部分。
例如,在本公开的实施例中,“数据行”可以表示输入图像中的一行数据或者一列数据。例如,在图6A所示的在高度H维度上拆分的数据组中,“数据行”表示输入图像在高度方向上的一行数据,当然“数据行”也可以表示输入图像在宽度方向上的一列数据,本公开的实施例对此不作限制。
例如,在步骤S20中,根据由多个计算单元对第一卷积层进行第二卷积计算后将得到的第二卷积层在多个计算单元中的配置规则,确定多个计算单元上的多个第一计算结果组对应的数据复制传送模式。需要说明的是,这里“对于第一卷积层进行第二卷积计算”并非指实际的、在计算单元中的卷积计算,而是指基于卷积计算的规则,可以根据第一卷积层的大小获知进行第二卷积计算后将得到的第二卷积层的大小,因此,“将得到的第二卷积层”并非指需要得到第二卷积层中数据的具体计算结果。例如,可以根据第二卷积层的大小确定对该第二卷积层的拆分模式,也即确定第二卷积层在多个计算单元中的配置规则。
图4为图3中步骤S20的示意性流程图。例如,在一些示例中,如图4所示,步骤S20可以进一步包括步骤S21~S23。
步骤S21:基于多个计算单元上的存储器的内存大小,确定第二卷积层在多个计算单元中的配置规则;
步骤S22:基于配置规则,确定第二卷积层在多个计算单元上的分布情况;
步骤S23:基于分布情况确定多个计算单元上的第一计算结果组对应的数据复制传送模式。
例如,在步骤S21中,获取多个计算单元上的存储器(例如内存)大小,并基于每个计算单元的内存大小确定第二卷积层在多个计算单元中的配置规则。例如,将第二卷积层拆分为多份数据,每份数据的大小不得超过分配到其对应的计算单元上的内存的可用容量大小,此为确定配置规则的前提。
例如,在步骤S22中,基于所确定的配置规则,确定如何拆分第二卷积层,也即,确定第二卷积层拆分成的多份数据组在多个计算单元上的分布情况。例如,对应于多个第一计算结果组在多个计算单元上的分布情况和所确定的配置规则,可以确定第二卷积层拆分成的多份数据组在对应的多个计算单元上的分布。
例如,在步骤S23中,基于根据配置规则确定的第二卷积层在多个计算单元上的分布情况,确定对多个计算单元上的第一计算结果组对应的数据复制传送模式。例如,数据复制传送模式可以包括单向数据传送模式和双向数据传送模式。例如,单向数据传送模式表示计算单元只能从另一单元中获取复制的数据,双向数据传送模式表示计算单元不仅可以从另一计算单元中获取复制的数据,也可以将自身中的数据复制传送给该另一计算单元。例如,可以设置多个计算单元具有相同的数据复制传送模式,也可以设置多个计算单元具有不同的数据复制传送模式,数据复制传送模式不限于上述两种模式,也可以为其他可行的实现方式,本公开的实施例对此不作限制。
例如,在一个示例中,该配置规则可以是:令第二卷积层的数据在多个计算单元上的分布均与多个计算单元中的第一计算结果组的数据范围相同。例如,如图6A所示,多个计算单元PE0、PE1、PE2对%0的数据组进行第一卷积计算得到由多个第一计算结果组11、21、31构成的第一卷积层,可以由此计算得知对第一卷积层进行第二卷积计算所得到的第二卷积层的大小。因此,拟将第二卷积层的数据进行拆分,并按照如图6A的%10上的分布方式分配到多个计算单元PE0、PE1、PE2上,根据该配置规则可以确定每个计算单元对%5进行卷积计算时的数据复制传送模式。例如,可以根据该配置规则确定多个计算单元PE0、PE1、PE2的数据复制传送模式均为双向数据传送模式。
例如,在另一个示例中,该配置规则可以是:令第二卷积层的数据在多个计算单元中的部分计算单元上的分布与该部分计算单元中的第一计算结果组的数据范围相同。例如,如图6B所示,在得知第二卷积层的大小后,拟将第二卷积层的数据按照如图6B的%10上的分布方式分配到多个计算单元PE0、PE1、PE2上,也即,将第二卷积层的数据拆分为3份,其中分配到PE1上的数据范围与PE1上的第一计算结果组的数据范围大小相等。由此可以根据该配置规则确定每个计算单元对于%5进行卷积计算时的数据复制传送模式,例如,确定多个计算单元PE0、PE1、PE2的数据复制传送模式均为单向数据传送模式。
在本公开的实施例中,配置规则不仅可以根据计算单元的内存大小进行设置,还可以根据多个计算单元的算力分配、数据传送开销等因素进行灵活设置,本公开的实施例并不限制配置规则的具体内容。
例如,在步骤S30中,先确定多个计算单元中需要进行有效数据行填充的第一计算单元。例如,可以是多个计算单元均需要进行有效数据填充,也可以是在多个计算单元中,只有部分计算单元需要进行有效数据行填充。例如,在图6A中,PE0、PE1、PE2均为需要进行有效数据行填充的第一计算单元;在图6B中,PE1、PE2为需要进行有效数据行填充的第一计算单元;在图6C中,只有PE1为需要进行有效数据行填充的第一计算单元。
例如,在步骤S30中,在确定了需要进行有效数据行填充的第一计算单元,以及第一计算单元所对应的数据复制传送模式后,第一计算单元从另一计算单元的第一计算结果组中获取至少一份第一中间行数据。例如,第一计算单元可以从两个不同的计算单元的第一计算结果组中获取两份第一中间行数据,这两份第一中间行数据均为第一计算单元进行第二卷积计算过程中进行填充所需要的。例如,在图6A中,PE0作为第一计算单元从PE1的第一计算结果组21中获取1行或多行第一中间行数据;PE1作为第一计算单元从PE0的第一计算结果组11中获取1行或多行第一中间行数据,并从PE2的第一计算结果组31中获取1行或多行第一中间行数据;PE2作为第一计算单元从PE1的第一计算结果组21中获取1行或多行第一中间行数据。
图5为图3中步骤S30的示意性流程图。例如,在一些示例中,如图5所示,步骤S30可以进一步包括步骤S31和S32。
步骤S31:基于第一计算单元进行第二卷积计算后将得到的第二计算结果组与第一计算单元进行第一卷积计算所得到的第一计算结果组之间的关系,确定第一中间数据行的大小;
步骤S32:基于数据复制传送模式和第一中间数据行的大小,从第二计算单元上的第一计算结果组中获取第一中间数据行。
例如,在步骤S31中,第一计算单元从另一计算单元上获取的第一中间数据行的大小由第二计算结果组与第一计算结果组之间的关系决定,第二计算结果组与第一计算结果组之间的关系由第二卷积层在计算单元上的分布情况、卷积核的大小和填充操作等因素决定。
例如,在步骤S32中,可以通过计算单元之间的核间传输实现从第二计算单元上的第一计算结果组中获取第一中间数据行。例如,通过获取第二计算单元的第一计算结果组中的第一中间数据行的地址,读取并复制该第一中间数据行到第一计算单元中,将复制得到的第一中间数据行写入第一计算单元的对应的地址上。例如,在图6A中,PE1上具有%0的[74,150]行有效数据,该77行数据对应的存储地址为address_0~address_75,则在进行了第一卷积计算后,PE1上的第一计算结果组为第一卷积层中的[75,149]行,共75行数据,可以将其分别分配到地址address_1~address_74中,而将从PE0的第一计算结果组11中获取得到的第一中间数据行写入到地址address_0中,将从PE2的第一计算结果组31中获取得到的第一中间数据行写入到地址address_75中。本公开的实施例对于计算单元之间数据的复制传送过程的具体实现方式不作限制。
例如,该调度方法还包括步骤S40(图中未示出):对原始输入矩阵进行拆分得到多个原始输入数据组,并将多个原始输入数据组分别传输到多个计算单元上进行第一卷积计算。
例如,可以根据由对原始输入矩阵进行第一卷积计算后得到的第一卷积层的大小和计算单元的数量、内存大小等确定原始输入矩阵的拆分模式。例如,该拆分模式为将原始输入矩阵平均拆分为多个原始输入数据组,或者按照计算单元的内存大小将原始输入矩阵对应拆分为多个原始输入数据组,以分别放入多个计算单元中。例如,原始输入数据组可以作为进行第一卷积计算所针对的数据组。
例如,该调度方法还包括步骤S50(图中未示出):响应于第二卷积层是多层卷积神经网络中的输出层,汇聚多个计算单元中的多个第二计算结果组以得到多层卷积神经网络的至少部分计算输出。例如,当最后一个卷积算子计算结束后,第二卷积层为最后一层的卷积层时,第二卷积层即为输出结果。也即,由多个计算单元中的第二计算结果组构成的第二卷积层为多层卷积神经网络的计算输出或者至少部分计算输出。
在本公开的实施例中,多个计算单元包括至少两个计算单元,例如第一计算单元和第二计算单元,多层卷积神经网络包括至少两层卷积层。例如,图6A-6C所示的示例包括3个计算单元PE0、PE1和PE2,包含如下2个卷积算子(conv):
%5:[(1 224 224 64),F,FP32]=conv(%0:[(1 224 224 64),F,FP32],1%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1);
%10:[(1 224 224 64),F,FP32]=conv(%5:[(1 224 224 64),F,FP32],6%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1);
例如,如图6A所示,该芯片中采用3个计算单元PE0、PE1、PE2对224×224的输入数据进行数据并行化的卷积计算。例如,执行步骤S40,以输入数据的高度H维度将原始输入矩阵大致平均地拆分为3个原始输入数据组10、20、30,并分别加载到PE0、PE1、PE2这3个计算单元上,如%0上所示。例如,原始输入数据组10包括[0,75],共76行数据;原始输入数据组20包括[74,150],共77行数据;原始输入数据组30包括[149,223],共75行数据。例如,执行步骤S10,多个计算单元PE0、PE1、PE2分别对对应的3个原始输入数据组10、20、30进行第一卷积计算,得到如%5上所示的第一计算结果组11([0,74]行)、21([75,149]行)、31([150,223]行),该第一计算结果组构成对应于对原始输入矩阵进行第一卷积计算所得到的第一卷积层。
例如,执行步骤S20,根据令第二卷积层的数据在多个计算单元上的分布均与多个计算单元中的第一计算结果组的数据范围相同的配置规则,确定3个计算单元PE0、PE1、PE2均具有相同的数据复制传送模式,即双向数据传送模式。然后执行步骤S30,确定3个计算单元PE0、PE1、PE2均为需要进行数据复制传送的计算单元,并且确定每个计算单元所需的第一中间数据行为一行,然后,每个计算单元从另一计算单元中获取其进行第二卷积计算时填充所需第一中间数据行。
例如,PE0作为第一计算单元,PE1作为第二计算单元,如箭头1所示,第一计算单元PE0从第二计算单元PE1的第一计算结果组21中获得PE0在进行第二卷积计算过程中进行填充所需的第一中间数据行[75];如箭头2所示,第二计算单元PE1从第一计算单元PE0的第一计算结果组11中获得PE1在进行第二卷积计算过程中进行填充所需的第二中间数据行[74],并且,第一计算单元PE0和第二计算单元PE1从彼此获取的第一中间数据行和第二中间数据行的大小相同,均为1行数据。
例如,PE1作为第一计算单元,PE2作为第二计算单元,如箭头3所示,第一计算单元PE1从第二计算单元PE2上的第一计算结果组31中获得PE1在进行第二卷积计算过程中进行填充所需的第一中间数据行[150];如箭头4所示,第二计算单元PE2从第一计算单元PE1的第一计算结果组21中获得PE2在进行第二卷积计算过程中进行填充所需的第二中间数据行[149],并且,第一计算单元PE1和第二计算单元PE2从彼此获取的第一中间数据行和第二中间数据行的大小相同,均为1行数据。
例如,由PE0上的第一计算结果组[0,74]和从PE1中获取得到的第一中间数据行[75]构成了PE0进行第二卷积计算所需的数据组[0,75]。
例如,由PE1上的第一计算结果组[75,149]和分别从PE0、PE2中获取得到的第二中间数据行[74]和第一中间数据行[150]构成了PE1进行第二卷积计算所需的数据组[74,150]。
例如,由PE2上的第一计算结果[150,223]和从PE2中获取得到的第二中间数据行[149]构成了PE2进行第二卷积计算所需的数据组[149,223]。
3个计算单元PE0、PE1、PE2对经过数据复制传送后的数据组[0,75]、[74,150]、[149,223]进行第二卷积计算,得到如%10上所示的第二计算结果组[0,74]、[75,149]、[150,223]。最后,执行步骤S50,将PE0、PE1、PE2上的第二计算结果组[0,74]、[75,149]、[150,223]汇聚起来,即为输出层的计算结果。
因此,本公开至少一实施例提供的调度方法通过计算单元之间的有效数据的复制传送,将有效数据作为填充行,能够减少卷积神经网络中重复数据的计算量,提高多层卷积神经网络的计算效率。
在如图6B所示的另一个示例中,在步骤S20,可以确定3个计算单元PE0、PE1、PE2均具有相同的单向数据传送模式。在步骤S30中,确定计算单元PE1和PE2为需要进行数据复制传送的计算单元,并且确定每个计算单元所需的第一中间数据行为两行。也即,PE1从PE0中获取两行有效数据以用于填充,PE2从PE1中获取两行有效数据以用于填充。例如,与图6B相比,在图6C中,还可以只有计算单元PE1为需要进行数据复制传送的计算单元。也即,PE1分别从PE0和PE2中获取两行有效数据以用于填充。采用图6B和图6C所示的示例的调度方法,不仅可以减少数据的重复计算,提高计算效率,还可以减少计算单元之间的数据传送次数,减少数据传输所需的开销。
例如,计算装置还可以包括更多的计算单元,卷积网络还可以包括更多的卷积算子,本公开的实施例对此不作限制。例如,图6D所示的示例包括4个计算单元PE0、PE1、PE2和PE3,包含如下3个卷积算子(conv):
%5:[(1 224 224 64),F,FP32]=conv(%0:[(1 224 224 64),F,FP32],1%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1);
%10:[(1 224 224 64),F,FP32]=conv(%5:[(1 224 224 64),F,FP32],6%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1);
%15:[(1 224 224 64),F,FP32]=conv(%10:[(1 224 224 64),F,FP32],11%:[(64 3 3 64),W,FP32],kh=3,kw=3,pad_h_top=1,pad_h_bottom=1,pad_w_left=1,pad_w_right=1,stride_h=1,stride_w=1)。
例如,在图6D所示,多个计算单元PE0、PE1、PE2和PE3可以具有不同的数据复制传送模式。例如,每个计算单元从另一计算单元中获得的第一中间数据行的大小可以不同,本公开的实施例对此不作限制。例如,PE2从PE1中获得的第一中间数据行为1行,而从PE3中获得的第一中间数据行为2行。图6D所示的示例中的调度方法的步骤可以参见对图6A的描述,此处不再赘述。采用图6D所示的示例的调度方法,不仅可以减少数据的重复计算,提高算力的利用率,还可以根据系统的综合性能的考虑,实现对不同的计算单元之间的内存、算力和数据传输开销的均衡分配。
图7为本公开一些实施例提供的一种调度装置的示意框图。如图7所示,调度装置100包括计算控制模块110、分配调度模块120和数据传输模块130。这些组件可以通过总线和/或其它形式的连接机构(未示出)互连。
计算控制模块110配置为使多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,多个第一计算结果组用于构成第一卷积计算得到的第一卷积层,多个计算单元包括第一计算单元和第二计算单元;
分配调度模块120配置为根据由多个计算单元对第一卷积层进行第二卷积计算后将得到的第二卷积层在多个计算单元中的配置规则,确定多个计算单元上的多个第一计算结果组对应的数据复制传送模式;
数据传输模块130配置为使多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的数据复制传送模式,从第二计算单元上的第一计算结果组中获取第一计算单元在第二卷积计算过程中进行填充所需的第一中间数据行。
需要说明的是,在本公开的实施例中,调度装置100的各个模块与前述的调度方法的各个步骤对应,关于调度装置100的具体功能可以参考上文中调度方法的相关描述,此处不再赘述。图7所示的调度装置100的组件和结构知识示例性的,而非限制性的,根据需要,该调度装置100还可以包括其他组件和结构。
图8为本公开一些实施例提供的一种电子设备的示意框图。如图8所示,电子设备200包括调度装置210,调度装置210可以为本公开任一实施例提供的调度装置,例如为前述的调度装置100。该电子设备200可以为任意的具有计算功能的设备,例如为服务器、终端设备、个人计算机等,本公开的实施例对此不作限制。
图9为本公开一些实施例提供的另一种电子设备的示意框图。如图9所示,该电子设备300包括处理器310和存储器320,可以用于实现客户端或服务器。存储器320用于非瞬时性地存储有计算机可执行指令(例如至少一个(一个或多个)计算机程序模块)。处理器310用于运行该计算机可执行指令,该计算机可执行指令被处理器310运行时可以执行上文所述的卷积运算方法中的一个或多个步骤,进而实现上文所述的卷积运算方法。存储器320和处理器310可以通过总线系统和/或其它形式的连接机构(未示出)互连。
例如,处理器310可以是中央处理单元(CPU)、图形处理单元(GPU)或者具有数据处理能力和/或程序执行能力的其它形式的处理单元。例如,中央处理单元(CPU)可以为X86或ARM架构等。处理器310可以为通用处理器或专用处理器,可以控制电子设备300中的其它组件以执行期望的功能。
例如,存储器320可以包括至少一个(例如一个或多个)计算机程序产品的任意组合,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、闪存等。在计算机可读存储介质上可以存储至少一个(例如一个或多个)计算机程序模块,处理器310可以运行至少一个(例如一个或多个)计算机程序模块,以实现电子设备300的各种功能。在计算机可读存储介质中还可以存储各种应用程序和各种数据以及应用程序使用和/或产生的各种数据等。
需要说明的是,本公开的实施例中,电子设备300的具体功能和技术效果可以参考上文中关于调度方法的描述,此处不再赘述。
图10为本公开一些实施例提供的另一种电子设备的示意框图。该电子设备400例如适于用来实施本公开实施例提供的调度方法。电子设备400可以是终端设备等,可以用于实现客户端或服务器。电子设备400可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)、可穿戴电子设备等等的移动终端以及诸如数字TV、台式计算机、智能家居设备等等的固定终端。需要注意的是,图10示出的电子设备400仅仅是一个示例,其不会对本公开实施例的功能和使用范围带来任何限制。
如图10所示,电子设备400可以包括处理装置(例如中央处理器、图形处理器等)410,其可以根据存储在只读存储器(ROM)420中的程序或者从存储装置480加载到随机访问存储器(RAM)430中的程序而执行各种适当的动作和处理。在RAM 430中,还存储有电子设备400操作所需的各种程序和数据。处理装置410、ROM 420以及RAM 430通过总线440彼此相连。输入/输出(I/O)接口450也连接至总线440。
通常,以下装置可以连接至I/O接口450:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置460;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置470;包括例如磁带、硬盘等的存储装置480;以及通信装置490。通信装置490可以允许电子设备400与其他电子设备进行无线或有线通信以交换数据。虽然图10示出了具有各种装置的电子设备400,但应理解的是,并不要求实施或具备所有示出的装置,电子设备400可以替代地实施或具备更多或更少的装置。
例如,根据本公开的实施例,上述调度方法可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包括用于执行上述调度方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置490从网络上被下载和安装,或者从存储装置480安装,或者从ROM420安装。在该计算机程序被处理装置410执行时,可以实现本公开实施例提供的调度方法中限定的功能。
本公开至少一个实施例还提供一种存储介质。利用该存储介质,可以提高矩阵运算单元的利用率,有效利用矩阵运算单元的算力,缩短卷积运算的时间,提高运算效率,并且可以节省数据传输时间。
图11为本公开一些实施例提供的一种存储介质的示意图。例如,如图11所示,存储介质500可以为非暂时性计算机可读存储介质,存储有非暂时性计算机可读指令510。当非暂时性计算机可读指令510由处理器执行时可以实现本公开实施例所述的调度方法,例如,当非暂时性计算机可读指令510由处理器执行时,可以执行根据上文所述的调度方法中的一个或多个步骤。
例如,该存储介质500可以应用于上述电子设备中,例如,该存储介质500可以包括电子设备300中的存储器320。
例如,存储介质可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、闪存、或者上述存储介质的任意组合,也可以为其他适用的存储介质。
例如,关于存储介质500的说明可以参考电子设备的实施例中对于存储器的描述,重复之处不再赘述。存储介质500的具体功能和技术效果可以参考上文中关于调度方法的描述,此处不再赘述。
在上文中,结合图1至图11描述了本公开实施例提供的调度方法、调度装置、电子设备及存储介质。本公开实施例提供的调度方法可以通过计算单元之间的有效数据的复制传送,将有效数据作为填充行,能够减少卷积神经网络中重复数据的计算量,提高多层卷积神经网络的计算效率。
需要说明的是,在本公开的上下文中,计算机可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是,但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络(,包括局域网(LAN)或广域网(WAN))连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
根据本公开的一个或多个实施例,示例1提供了一种用于多层卷积神经网络的调度方法,包括:多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,所述多个第一计算结果组用于构成所述第一卷积计算得到的第一卷积层,所述多个计算单元包括第一计算单元和第二计算单元;根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式;多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的所述数据复制传送模式,从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行。
示例2、根据示例1所述的调度方法,其中,所述多个第一计算结果组中的数据行在所述第一卷积层中无交叠地连续。
示例3、根据示例1所述的调度方法,其中,所述第一计算单元上的所述第一计算结果组和从所述第二计算单元上获取的所述第一中间数据行构成用于所述第一计算单元进行所述第二卷积计算所需的数据组。
示例4、根据示例1所述的调度方法,其中,所述多个计算单元进行所述第一卷积计算中分别使用的对应的所述多个数据组为多个原始输入数据组。
示例5、根据示例4所述的调度方法,还包括:
对原始输入矩阵进行拆分得到所述多个原始输入数据组,并将所述多个原始输入数据组分别传输到所述多个计算单元上进行所述第一卷积计算。
示例6、根据示例1所述的调度方法,其中,所述根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式,包括:
基于所述多个计算单元上的存储器的内存大小,确定所述第二卷积层在所述多个计算单元中的所述配置规则;
基于所述配置规则,确定所述第二卷积层在所述多个计算单元上的分布情况;
基于所述分布情况确定所述多个计算单元上的所述第一计算结果组对应的所述数据复制传送模式。
示例7、根据示例1所述的调度方法,其中,所述从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行,包括:
基于所述第一计算单元进行所述第二卷积计算后将得到的第二计算结果组与所述第一计算单元进行所述第一卷积计算所得到的第一计算结果组之间的关系,确定所述第一中间数据行的大小;
基于所述数据复制传送模式和所述第一中间数据行的大小,从所述第二计算单元上的第一计算结果组中获取所述第一中间数据行。
示例8、根据示例7所述的调度方法,其中,所述第一计算单元将得到的所述第二计算结果组的大小与所述第一计算单元上的所述第一计算结果组的大小相同。
示例9、根据示例7所述的调度方法,还包括:
响应于所述第二卷积层是所述多层卷积神经网络中的输出层,汇聚所述多个计算单元中的多个第二计算结果组以得到所述多层卷积神经网络的至少部分计算输出。
示例10、根据上述示例1-9任一项所述的调度方法,还包括:
所述第二计算单元基于对应的所述数据复制传送模式,从所述第一计算单元上的第一计算结果组中获取所述第二计算单元在所述第二卷积计算过程中进行填充所需的第二中间数据行。
示例11、根据示例10所述的调度方法,其中,所述第一计算单元和所述第二计算单元从彼此获取的所述第一中间数据行和所述第二中间数据行的大小相同。
根据本公开的一个或多个实施例,示例12提供了一种用于多层卷积神经网络的调度装置,包括:
计算控制模块,配置为使多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,所述多个第一计算结果组用于构成所述第一卷积计算得到的第一卷积层,所述多个计算单元包括第一计算单元和第二计算单元;
分配调度模块,配置为根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式;
数据传输模块,配置为使多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的所述数据复制传送模式,从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行。
示例13、根据示例12所述的调度装置,其中,所述多个第一计算结果组中的数据行在所述第一卷积层中无交叠地连续。
示例14、根据示例12所述的调度装置,其中,所述第一计算单元上的所述第一计算结果组和从所述第二计算单元上获取的所述第一中间数据行构成用于所述第一计算单元进行所述第二卷积计算所需的数据组。
示例15、根据示例12所述的调度装置,其中,所述多个计算单元进行所述第一卷积计算中分别使用的对应的所述多个数据组为多个原始输入数据组。
示例16、根据示例15所述的调度装置,还包括:
数据拆分模块,配置为对原始输入矩阵进行拆分得到所述多个原始输入数据组,并将所述多个原始输入数据组分别传输到所述多个计算单元上进行所述第一卷积计算。
示例17、根据示例12所述的调度装置,其中,所述根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式,包括:
基于所述多个计算单元上的存储器的内存大小,确定所述第二卷积层在所述多个计算单元中的所述配置规则;
基于所述配置规则,确定所述第二卷积层在所述多个计算单元上的分布情况;
基于所述分布情况确定所述多个计算单元上的所述第一计算结果组对应的所述数据复制传送模式。
示例18、根据示例12所述的调度装置,其中,所述从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行,包括:
基于所述第一计算单元进行所述第二卷积计算后将得到的第二计算结果组与所述第一计算单元进行所述第一卷积计算所得到的第一计算结果组之间的关系,确定所述第一中间数据行的大小;
基于所述数据复制传送模式和所述第一中间数据行的大小,从所述第二计算单元上的第一计算结果组中获取所述第一中间数据行。
示例19、根据示例18所述的调度装置,其中,所述第一计算单元将得到的所述第二计算结果组的大小与所述第一计算单元上的所述第一计算结果组的大小相同。
示例20、根据示例18所述的调度装置,还包括:
数据输出模块,配置为响应于所述第二卷积层是所述多层卷积神经网络中的输出层,汇聚所述多个计算单元中的多个第二计算结果组以得到所述多层卷积神经网络的至少部分计算输出。
示例21、根据示例12-20任一项所述的调度装置,其中,所述数据传输模块还配置为:
使所述第二计算单元基于对应的所述数据复制传送模式,从所述第一计算单元上的第一计算结果组中获取所述第二计算单元在所述第二卷积计算过程中进行填充所需的第二中间数据行。
示例22、根据示例10所述的调度装置,其中,所述第一计算单元和所述第二计算单元从彼此获取的所述第一中间数据行和所述第二中间数据行的大小相同。
根据本公开的一个或多个实施例,示例23提供了一种电子设备,包括上述示例12-22任一项所述的调度装置。
根据本公开的一个或多个实施例,示例24提供了一种电子设备,包括:处理器;存储器,包括至少一个计算机程序模块;其中,所述至少一个计算机程序模块被存储在所述存储器中,并被配置为由所述处理器执行,所述至少一个计算机程序模块用于实现上述示例1-11任一项所述的调度方法。
根据本公开的一个或多个实施例,示例25提供了一种存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时实现上述示例1-11任一项所述的调度方法。
虽然上文中已经用一般性说明及具体实施方式,对本公开作了详尽的描述,但在本公开实施例基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本公开精神的基础上所做的这些修改或改进,均属于本公开要求保护的范围。
对于本公开,还有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)为了清晰起见,在用于描述本公开的实施例的附图中,层或区域的厚度被放大或缩小,即这些附图并非按照实际的比例绘制。
(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。
Claims (15)
1.一种用于多层卷积神经网络的调度方法,包括:
多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,所述多个第一计算结果组用于构成所述第一卷积计算得到的第一卷积层,所述多个计算单元包括第一计算单元和第二计算单元;
根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式;
多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的所述数据复制传送模式,从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行。
2.根据权利要求1所述的调度方法,其中,所述多个第一计算结果组中的数据行在所述第一卷积层中无交叠地连续。
3.根据权利要求1所述的调度方法,其中,所述第一计算单元上的所述第一计算结果组和从所述第二计算单元上获取的所述第一中间数据行构成用于所述第一计算单元进行所述第二卷积计算所需的数据组。
4.根据权利要求1所述的调度方法,其中,所述多个计算单元进行所述第一卷积计算中分别使用的对应的所述多个数据组为多个原始输入数据组。
5.根据权利要求4所述的调度方法,还包括:
对原始输入矩阵进行拆分得到所述多个原始输入数据组,并将所述多个原始输入数据组分别传输到所述多个计算单元上进行所述第一卷积计算。
6.根据权利要求1所述的调度方法,其中,所述根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式,包括:
基于所述多个计算单元上的存储器的内存大小,确定所述第二卷积层在所述多个计算单元中的所述配置规则;
基于所述配置规则,确定所述第二卷积层在所述多个计算单元上的分布情况;
基于所述分布情况确定所述多个计算单元上的所述第一计算结果组对应的所述数据复制传送模式。
7.根据权利要求1所述的调度方法,其中,所述从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行,包括:
基于所述第一计算单元进行所述第二卷积计算后将得到的第二计算结果组与所述第一计算单元进行所述第一卷积计算所得到的第一计算结果组之间的关系,确定所述第一中间数据行的大小;
基于所述数据复制传送模式和所述第一中间数据行的大小,从所述第二计算单元上的第一计算结果组中获取所述第一中间数据行。
8.根据权利要求7所述的调度方法,其中,所述第一计算单元将得到的所述第二计算结果组的大小与所述第一计算单元上的所述第一计算结果组的大小相同。
9.根据权利要求7所述的调度方法,还包括:
响应于所述第二卷积层是所述多层卷积神经网络中的输出层,汇聚所述多个计算单元中的多个第二计算结果组以得到所述多层卷积神经网络的至少部分计算输出。
10.根据权利要求1-9任一项所述的调度方法,还包括:
所述第二计算单元基于对应的所述数据复制传送模式,从所述第一计算单元上的第一计算结果组中获取所述第二计算单元在所述第二卷积计算过程中进行填充所需的第二中间数据行。
11.根据权利要求10所述的调度方法,其中,所述第一计算单元和所述第二计算单元从彼此获取的所述第一中间数据行和所述第二中间数据行的大小相同。
12.一种用于多层卷积神经网络的调度装置,包括:
计算控制模块,配置为使多个计算单元分别对对应的多个数据组进行第一卷积计算得到对应的多个第一计算结果组,其中,所述多个第一计算结果组用于构成所述第一卷积计算得到的第一卷积层,所述多个计算单元包括第一计算单元和第二计算单元;
分配调度模块,配置为根据由所述多个计算单元对所述第一卷积层进行第二卷积计算后将得到的第二卷积层在所述多个计算单元中的配置规则,确定所述多个计算单元上的所述多个第一计算结果组对应的数据复制传送模式;
数据传输模块,配置为使多个计算单元中需要进行有效数据行填充的第一计算单元,基于对应的所述数据复制传送模式,从所述第二计算单元上的第一计算结果组中获取所述第一计算单元在所述第二卷积计算过程中进行填充所需的第一中间数据行。
13.一种电子设备,包括权利要求12所述的调度装置。
14.一种电子设备,包括:
处理器;
存储器,包括至少一个计算机程序模块;
其中,所述至少一个计算机程序模块被存储在所述存储器中,并被配置为由所述处理器执行,所述至少一个计算机程序模块用于实现权利要求1-11任一项所述的调度方法。
15.一种存储介质,存储有非暂时性计算机可读指令,当所述非暂时性计算机可读指令由计算机执行时实现权利要求1-11任一项所述的调度方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211188739.0A CN117827386A (zh) | 2022-09-27 | 2022-09-27 | 调度方法、调度装置、电子设备及存储介质 |
PCT/CN2023/119412 WO2024067207A1 (zh) | 2022-09-27 | 2023-09-18 | 调度方法、调度装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211188739.0A CN117827386A (zh) | 2022-09-27 | 2022-09-27 | 调度方法、调度装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827386A true CN117827386A (zh) | 2024-04-05 |
Family
ID=90476147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211188739.0A Pending CN117827386A (zh) | 2022-09-27 | 2022-09-27 | 调度方法、调度装置、电子设备及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117827386A (zh) |
WO (1) | WO2024067207A1 (zh) |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111260020B (zh) * | 2018-11-30 | 2024-04-16 | 深圳市海思半导体有限公司 | 卷积神经网络计算的方法和装置 |
CN109740732B (zh) * | 2018-12-27 | 2021-05-11 | 深圳云天励飞技术有限公司 | 神经网络处理器、卷积神经网络数据复用方法及相关设备 |
KR102374525B1 (ko) * | 2019-09-06 | 2022-03-16 | 주식회사 하이퍼커넥트 | 키워드 스폿팅 장치, 방법 및 컴퓨터 판독 가능한 기록매체 |
CN111597029B (zh) * | 2020-05-20 | 2024-03-22 | 上海商汤智能科技有限公司 | 数据处理方法及装置、电子设备和存储介质 |
CN112200300B (zh) * | 2020-09-15 | 2024-03-01 | 星宸科技股份有限公司 | 卷积神经网络运算方法及装置 |
CN114548354A (zh) * | 2020-11-26 | 2022-05-27 | 珠海格力电器股份有限公司 | 多层神经网络的计算方法、装置、设备及计算机可读介质 |
CN112633470B (zh) * | 2020-12-11 | 2023-01-06 | 苏州浪潮智能科技有限公司 | 优化神经网络卷积残差结构的方法、系统、设备及介质 |
-
2022
- 2022-09-27 CN CN202211188739.0A patent/CN117827386A/zh active Pending
-
2023
- 2023-09-18 WO PCT/CN2023/119412 patent/WO2024067207A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024067207A1 (zh) | 2024-04-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210216875A1 (en) | Method and apparatus for training deep learning model | |
CN110390387B (zh) | 对深度学习应用所用资源进行评估 | |
US7937567B1 (en) | Methods for scalably exploiting parallelism in a parallel processing system | |
CN106056529B (zh) | 一种对用于图片识别的卷积神经网络训练的方法与设备 | |
CN110262901B (zh) | 一种数据处理方法及数据处理系统 | |
CN109033001B (zh) | 用于分配gpu的方法和装置 | |
CN114020470B (zh) | 资源分配方法、装置、可读介质及电子设备 | |
CN114503125A (zh) | 结构化剪枝方法、系统和计算机可读介质 | |
US11868243B2 (en) | Topological scheduling | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN114330689A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
WO2023231999A1 (zh) | 卷积运算方法、卷积运算装置、电子设备及存储介质 | |
US9947073B2 (en) | Memory-aware matrix factorization | |
CN117271136A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN109635238B (zh) | 矩阵运算方法、装置、设备及可读介质 | |
CN115934102B (zh) | 通用寄存器动态分配方法、装置、计算机设备和存储介质 | |
US20220269622A1 (en) | Data processing methods, apparatuses, electronic devices and computer-readable storage media | |
CN117827386A (zh) | 调度方法、调度装置、电子设备及存储介质 | |
CN111275799A (zh) | 动画的生成方法、装置和电子设备 | |
Zeng et al. | Parallel multi-GPU implementation of fast decoupled power flow solver with hybrid architecture | |
CN114205416B (zh) | 资源缓存方法、装置、电子设备和计算机可读介质 | |
CN118035618A (zh) | 数据处理器、数据处理方法、电子设备、存储介质 | |
CN117236407A (zh) | 一种模型结构优化方法、装置、电子设备及存储介质 | |
CN116186339A (zh) | 并行图计算处理方法、装置、电子设备及存储介质 | |
CN112416931A (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 |