CN115994040A - 计算系统以及进行数据广播和数据归约的方法及存储介质 - Google Patents
计算系统以及进行数据广播和数据归约的方法及存储介质 Download PDFInfo
- Publication number
- CN115994040A CN115994040A CN202310100010.1A CN202310100010A CN115994040A CN 115994040 A CN115994040 A CN 115994040A CN 202310100010 A CN202310100010 A CN 202310100010A CN 115994040 A CN115994040 A CN 115994040A
- Authority
- CN
- China
- Prior art keywords
- computing
- memory
- cores
- data
- core
- 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
- 230000009467 reduction Effects 0.000 title claims abstract description 87
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000003860 storage Methods 0.000 title claims abstract description 31
- 230000015654 memory Effects 0.000 claims abstract description 216
- 238000004364 calculation method Methods 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 10
- 230000008569 process Effects 0.000 claims description 7
- 230000005540 biological transmission Effects 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 4
- 238000013135 deep learning Methods 0.000 description 3
- 235000012431 wafers Nutrition 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Abstract
本公开的实施例涉及计算系统以及进行数据广播和数据归约的方法及存储介质。该计算系统包括设置在一个或多个计算设备中的多个计算核、分别位于该一个或多个计算设备中的一个或多个片上网络、以及存储器,每一计算设备中的计算核均连接到对应的片上网络,以通过该片上网络相互通信;该存储器中包括为输入的待处理数据对象创建的多个存储器对象,每一个存储器对象中均存储有关于待处理数据对象的数据,并且多个存储器对象被配置成使用相同的偏移地址来存储相同的数据;每一存储器对象被配置为仅允许多个计算核中与该存储器对象相关联的计算核进行存取。由此,能够减少数据处理时所需的数据传输的次数,进而提高数据处理的速度。
Description
技术领域
本公开的实施例总体涉及信息处理领域,并且更具体地涉及一种计算系统以及进行数据广播和数据归约的方法及存储介质。
背景技术
在多计算核的计算系统中,深度学习任务批处理(batch)被划分并且在多计算核间并行处理。具体来说,深度神经网络的每一次迭代,输入的待处理数据对象(例如输入的矩阵数据对象)会被等分成多份,然后分别在多个计算核中独立进行前向传播和后向传播的运算,计算出梯度。在该次迭代完成后,合并梯度以及更新深度神经网络的参数,然后进行下一次迭代。
数据归约和数据广播是深度学习任务批处理过程中使用频率较大的两种处理。在传统方案中,仅会在存储器中为输入的待处理数据对象创建一个单独的存储器对象,该存储器对象为所有计算核共用,因此在需要对待处理数据对象的相关数据进行广播操作或归约操作时,需要在各相关的计算核之间多次来回地传输各种相关的数据,从而导致长延迟时间以及计算核的大带宽消耗,进而导致了严重的性能问题。
例如,在传统方案中,在进行数据归约操作时,归约群组内的所有计算核需向该群组中的特定计算核发送由其产生需要参与归约操作的相应数据;该特定计算核在接收到各个数据后,利用其归约计算单元对接收到的各个数据进行归约计算以得到相应的归约计算结果,并向归约群组中的所有计算核发送归约完成消息;归约群组中的所有计算核在接收到归约完成消息后,还需要通过读网络向该特定计算核发送归约计算结果读取请求,该归约计算结果读取请求中需包括相应计算核的地址;该特定计算核在接收到该各读取请求后,再将包括该归约计算结果的读响应通过读网络广播给该归约群组中的各个计算核,该读响应中除了包括归约计算结果以外,还需要包括该归约群组中的所有计算核的地址。又如,在进行数据广播操作时,广播群组中的所有计算核都需要通过读网络向特定计算核发送包括其地址的数据读请求,该特定计算核在接收到相应的数据读请求后,通过读网络将包括相应数据的读响应广播给该广播群组中的各个计算核,该读响应中除了包括相应数据以外,还需要包括该广播群组中的所有计算核的地址。在以上归约和广播的过程中,由于需要多次来回地传输相关的数据,因此速度较慢、延迟时间较长并且每一计算核都需消耗一定的带宽来完成相应的处理。另外,由于在读取过程中使用的是读网络,而读网络在深度学习任务批处理过程中的使用频率相对较高,从而容易造成计算核读写带宽之间的不平衡。
发明内容
针对上述问题,本公开提供了一种计算系统以及进行数据广播和数据归约的方法及存储介质,使得有助于减少数据处理时所需的数据传输的次数,减少延迟时间以及带宽消耗,进而提高数据处理的速度。
根据本公开的第一方面,提供了一种计算系统,包括设置在一个或多个计算设备中的多个计算核、分别位于所述一个或多个计算设备中的一个或多个片上网络、以及存储器,所述一个或多个计算设备的数目小于所述多个计算核的数目,每一计算设备中的计算核均连接到对应的片上网络,以通过所述片上网络相互通信;所述存储器中包括为输入的待处理数据对象创建多个存储器对象,每一个存储器对象中均存储有关于所述待处理数据对象的数据,并且所述多个存储器对象被配置成使用相同的偏移地址来存储相同的数据;所述多个存储器对象的数目与所述多个计算核的数目相同,并且每一存储器对象被配置为仅允许所述多个计算核中与所述存储器对象相关联的计算核进行存取。
根据本公开的第二方面,提供了一种用于进行数据广播的方法,所述方法由根据本公开的第一方面的计算系统执行,所述方法包括:对于每一计算核,如果在针对所述待处理数据对象的处理过程中在本地产生了关于所述待处理数据对象的新数据,向所述计算核所属的广播群组中的多个计算核发送相同的将所述新数据存储在指定的偏移地址的第一指令,所述第一指令包括所述广播群组的群组标识符、需要向所述多个计算核广播的所述新数据以及所述偏移地址;以及在所述多个计算核中的每一计算核处,响应于接收到所述第一指令,将所述新数据存储在相关联的存储器对象中的所述偏移地址处以供用于进行后续处理。
在本公开的第三方面中,提供了一种用于进行数据归约的方法,所述方法由根据本公开的第一方面的计算系统执行,所述方法包括:对于每一计算核,如果在针对所述待处理数据对象的处理过程中在本地产生了关于所述待处理数据对象的新数据,向所述计算核所属的广播群组中的多个计算核发送相同的将所述新数据存储在指定的偏移地址的第一指令,所述第一指令包括所述广播群组的群组标识符、需要向所述多个计算核广播的所述新数据以及所述偏移地址;以及在所述多个计算核中的每一计算核处,响应于接收到所述第一指令,将所述新数据存储在相关联的存储器对象中的所述偏移地址处以供用于进行后续处理。
在本公开的第四方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第二方面或第三方面的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1示出了根据本公开的一些实施例的计算系统100的示意图。
图2示出了根据本公开的另一些实施例的计算系统200的示意图。
图3示出了根据本公开的实施例的关于计算核的布置的示意图。
图4示出了根据本公开的实施例的用于进行数据广播的方法400的流程图。
图5示出了根据本公开的实施例的用于进行数据归约的方法500的流程图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,在传统方案中,仅会在存储器中为输入的待处理数据对象创建一个单独的存储器对象,该存储器对象为所有计算核共用,因此在对待处理数据对象的相关数据进行广播操作或归约操作时,需要在各相关的计算核之间多次来回地传输相关的数据,从而导致长延迟时间,进而导致了严重的性能问题。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于进行数据处理的计算系统,包括设置在一个或多个计算设备中的多个计算核、分别位于所述一个或多个计算设备中的一个或多个片上网络、以及存储器,所述一个或多个计算设备的数目小于所述多个计算核的数目,每一计算设备中的计算核均连接到对应的片上网络,以通过所述片上网络相互通信;所述存储器中包括为输入的待处理数据对象创建多个存储器对象,每一个存储器对象中均存储有关于所述待处理数据对象的数据,并且所述多个存储器对象被配置成使用相同的偏移地址来存储相同的数据;所述多个存储器对象的数目与所述多个计算核的数目相同,并且每一存储器对象被配置为仅允许所述多个计算核中与所述存储器对象相关联的计算核进行存取。以此方式,有助于减少数据处理时需要进行的数据传输的次数,减少延迟时间以及带宽消耗,进而提高输出处理的速度。
图1示出了根据本公开的一些实施例的计算系统100的示意图。计算系统100可包括存储器(即如图1所示的系统存储器110)、一个或多个片上网络120以及多个计算核(即如图1所示的计算核1到计算核n)。在本公开中,n可以是任意大于或等于2的整数。
计算核1到计算核n可设置在一个或多个计算设备中,并且计算设备的数目小于计算核的数目。例如,如图3所示,该多个计算核可分别设置在计算设备1、计算设备2、计算设备3和计算设备4中,每一计算设备中设置有一个或多个计算核(例如,每一计算设备中设置有计算核1到m,其中m为大于或等于1的整数)。应注意,虽然图3中示出了计算核被布置在四个计算设备,但是这仅是示例,在实际使用中,计算系统100中可包括更多或更少的计算设备,并且各个计算设备中所包括的计算核的数目可以相同也可以不同。计算设备1-4例如包括但不限于封装有多个晶片的芯片(chip),例如中央处理器芯片(CPU芯片)、图形处理器芯片(GPU芯片)、人工智能芯片(AI芯片)、高性能计算芯片(HPC芯片)等。在计算设备包括多个晶片的情况下,设置在计算设备上的各个计算核可被分别布置在不同的晶片上。在本公开中,不同计算设备之间可通过总线相互通信,该总线可例如通过高速IO总线或者Blink等来实现。
一个或多个片上网络(NOC,Network On Chip)120分别位于以上提到的一个或多个计算设备中,即该一个或多个计算设备中的每一计算设备包括一个片上网络120。每一片上网络120用于实现对应计算设备中的各个计算核之间的互联或连接。在本公开中,每一计算设备中的各个计算核均连接到对应的片上网络,以通过该片上网络相互通信。另外,计算系统100的不同计算设备中的片上网络均经由总线相互连接,从而使得设置在这些不同计算设备上的各个计算核之间也可相互通信,以协作完成相关的数据处理操作。片上网络通常可包括读网络和写网络,读网络主要用于例如从一个计算核中读取相应的数据,写网络主要用于例如将数据从一个计算核写(例如存储)到另一计算核中。
各个计算核可以被配置成执行一个或多个通用或定制的数据处理操作。例如,计算核可以被配置成执行逻辑、对数、指数、乘法、比较、三角函数、矩阵运算和/或其他适当的通用数据处理操作。作为备选或者附加,计算核还可以被配置成执行神经网络模型训练和推理、系统发育推断、基因组测序、气候建模、天气预测、视频/声音处理和/或其它适当的定制操作。计算核可以包括归约引擎(也可以称为归约计算单元,图中未示出)。归约引擎可以被配置成执行归约操作(后面也称为归约计算),归约操作例如包括但不限于加和、乘积等。
在本公开中,计算系统100中包括的多个计算核可被划分成一个或多个计算核群组。每一计算核群组可以是广播群组或者归约群组。在一些实现中,可根据各计算核所在的计算设备来划分计算核群组,即将设置在同一计算设备中的计算核划分为一个计算核群组。由此,在图3所示的示例中,可划分出四个计算核群组,即对应于计算设备1的计算核群组1、对应于计算设备2的计算核群组2、对应于计算设备3的计算核群组3以及对应于计算设备4的计算核群组4。在另一些实现中,还可根据各计算核所在的计算节点来划分计算核群组,即将位于同一计算节点中多个计算核划分为一个计算核群组。通常同一计算节点中可包括多个计算设备,并且每一计算设备中可设置有一个或多个计算核。假设在图3中,计算设备1和计算设备2属于第一计算节点,并且计算设备3和计算设备4属于第二计算节点,因此在根据计算节点来划分计算核群组时,可划分出两个计算核群组,即计算设备1和计算设备2中的计算核属于一个计算核群组,并且计算设备3和计算设备4中的计算核属于另一个计算核群组。在本公开中,每一计算核群组都分配有相应的群组标识符,以与其他计算核群组进行区分,从而使得可以更容易地确定例如对数据进行广播操作或者归约操作的计算核的范围。
计算系统100中包括的存储器(即系统存储器110)可包括为输入的待处理数据对象(例如,输入的待处理图像的数据矩阵等)创建的多个存储器对象,每个计算核一个存储器对象,例如图1所示的实施例中的存储器对象1到n。所创建的每一个存储器对象中均应存储有关于该待处理数据对象的数据,例如待处理图像的数据矩阵中的每一数据。各个存储器对象被配置成使用相同的偏移地址来存储相同的数据。例如,关于待处理数据对象的某一个数据存储在存储器对象1中的偏移地址、存储在存储器对象2中的偏移地址以及存储在存储器对象n中的偏移地址均相同。
在本公开中,所创建的存储器对象的数目应与计算核的数目相同。例如,在图1中包括n个计算核,因此应当创建n个存储器对象,每一计算核一个存储器对象。在本公开中,所创建的每一存储器对象被配置为仅允许计算系统100中的多个计算核中与该存储器对象相关联的计算核进行存取。例如,存储器对象1仅允许计算核1进行存取,存储器对象2仅允许计算核2进行存取,存储器对象n仅允许计算核n进行存取。
虽然在图1所示的实施例中,为输入的待处理数据对象创建的多个存储器对象均被创建在该系统存储器110上,例如与计算核1相关联的存储器对象1、与计算核2相关联的存储器对象2、与计算核n相关联的存储器对象n均被创建在系统存储器110上,但是在实际应用中,如果某个计算核中包括片上存储器,并且该片上存储器具有足够的存储空间来创建关于输入的待处理数据对象的存储器对象,则与该计算核相关联的存储器对象可被创建在该计算核的片上存储器中,而不被创建在系统存储器中。例如仅作为示例,如果图中的计算核1包括片上存储器,并且该片上存储器具有足够的存储空间来创建关于输入的待处理数据对象的存储器对象,则可将与计算核1相关联的存储器对象1创建在计算核1的片上存储器中,而不是创建在系统存储器110中。对于其他计算核而言也是如此。
在本公开中,系统存储器110也连接到一个或多个片上网络120,使得各个计算核可以通过相应的片上网络120来访问创建在系统存储器110中的各个存储器对象。在一些实施例中,系统存储器110经由各个计算设备之间的总线连接到分别设置在这些计算设备中的各个片上网络120。
在本公开中,每一存储器对象均占用相应存储器的一个存储分段。所创建的每一存储器对象都具有相应的配置信息。这些配置信息可包括分配给相应存储器对象的基地址,并且还可包括相应存储器对象所占的存储分段的长度、宽度和高度等。每一存储器对象的配置信息仅被提供给多个计算核中与该存储器对象相关联的计算核,使得相关联的计算核可基于相应的基地址以及通过指令接收到的偏移地址来确定相应数据的具体存储地址。
在如图1所示的实施例中,计算系统100还可包括多个高速缓存存储器(例如,如图1所示的高速缓存存储器1到n)。在一些实现中,高速缓存存储器可以是例如二级高速缓存存储器。高速缓存存储器的数目与计算核的数目相同,例如在图1中包括n个计算核,因此相应地具有n个高速缓存存储器。每一计算核与在该计算核本地的一个高速缓存存储器连接。例如,如图1所示,计算核1与在该计算核1本地的高速缓存存储器1连接,计算核2与在该计算核2本地的高速缓存存储器2连接,计算核n与在该计算核n本地的高速缓存存储器n连接。在本公开中,在计算核本地的高速缓存存储器相对于计算系统100中的其他高速缓存存储器而言与该计算核之间的距离更近。与任一计算核相关联的存储器对象的逻辑页面均被映射到与该计算核连接的高速缓存存储器上,以供该计算核通过相应的高速缓存存储器来对相关联的存储器对象进行存取。例如,如图1所示,与计算核1相关联的存储器对象1的逻辑页面被映射到与计算核1连接的高速缓存存储器1上,与计算核2相关联的存储器对象2的逻辑页面被映射到与计算核2连接的高速缓存存储器2上,与计算核n相关联的存储器对象n的逻辑页面被映射到与计算核n连接的高速缓存存储器n上。
当然,在一些实施例中,计算系统100中也可不包括高速缓存存储器1到n,而可由计算核1到n直接对系统存储器110中相关联的存储器对象进行存取。
图2示出了根据本公开的另一些实施例的计算系统200的示意图。如图2所示,计算系统200包括计算核1到n以及一个或多个片上网络220,并且每一计算核上均包括片上存储器,即如图1所示的片上存储器1到片上存储器n,其中n为大于或等于2的整数。计算核1到n连接到一个或多个片上网络220。计算核1到n也可设置在一个或多个计算设备中,并且计算设备的数目小于计算核的数目。在本公开中,位于每一计算设备中的各个计算核均连接到该计算设备的片上网络。此外,该一个或多个计算设备可通过总线相互通信,而且不同计算设备的片上网络均经由该总线相互连接,从而使得设置在计算系统200的不同计算设备上的各个计算核之间也可相互通信,以协作完成相关的数据处理操作。在图2所示的实施例中,为输入的待处理数据对象(例如,输入的待处理图像的数据矩阵等)创建多个存储器对象被分别创建在相关联的计算核的片上存储器上。具体地,与计算核1相关联的存储器对象被创建在计算核1的片上存储器1上,与计算核2相关联的存储器对象被创建在计算核3的片上存储器3上,并且与计算核n相关联的存储器对象被创建在计算核n的片上存储器n上。但是,应注意,存储器对象被创建在计算核的片上存储器上的条件是该片上存储器具有足够的存储空间来存储与待处理数据对象相关的各个数据,否则无法在其上创建合适的存储器对象。关于计算核1到n、片上网络220以及存储器对象等的其他细节可与以上结合图1的实施例所描述的计算核1到n、片上网络120以及存储器对象的内容相同,这里不再进行赘述。
此外,虽然在图1所示的实施例中与各个计算核相关联的存储器对象均被创建在系统存储器中,并且在图2所示的实施例中与各个计算核相关联的存储器对象被分别创建在相应计算核的片上存储器中,但是在又一些实施例中,计算系统可即包括系统存储器,也包括分别包括在所述多个计算核中的至少一个计算核中的至少一个片上存储器,因此在这些实施例中,可将与至少一个计算核相关联的存储器对象分别创建在相应计算核的片上存储器(前提是该片上存储器具有足够的存储空间)上,并将与各个其他计算核相关联的存储器对象都被创建在系统存储器上。
通过以上技术方案,由于针对待处理的数据对象为不同的计算核分别创建了多个存储器对象,而且这些存储器对象除了基地址不同以外,其他都完全相同,例如其中存储有相同的数据,并且每一数据在各个存储器对象中的偏移地址是相同的。因此,在本公开中,在对待处理数据对象进行数据处理时,各个计算核可就各个数据基于相同的偏移地址来对与其相关联的存储器对象进行存取,而无需将数据在不同计算核之间多次来回进行传输,由此有助于大大减少等待时间,进而提高数据处理的效率。
图4示出了根据本公开的实施例的用于进行数据广播的方法400的流程图。方法400可在以上提到的计算系统100或200中执行。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在步骤402,对于每一计算核,如果在针对待处理数据对象的处理过程中在本地产生了关于待处理数据对象的新数据,向该计算核所属的广播群组中的多个计算核发送相同的将该新数据存储在指定的偏移地址的第一指令。
在本公开中,第一指令可包括该广播群组的群组标识符、需要向步骤402中提到的多个计算核广播的该新数据以及该指定的偏移地址。群组标识符指示该广播群组,即该新数据应广播到哪个计算核群组。在本公开中,广播群组指的是与步骤402中需要进行广播操作的计算核所属的计算核群组。偏移地址指示该新数据应被存储到相关联的各个存储器对象的哪个位置。第一指令还可包括广播启用标识,以指示该第一指令涉及数据广播。在该实现中,第一指令可例如为:store.group0.broadcast addr0,data0,该第一指令表示将新数据data0广播到广播群组group0中的各个计算核处,并存储在各个相关联的存储器对象的偏移地址addr0处。
在一些实现中,新数据(例如,步骤402中提到的新数据)在被相应的计算核产生之后,通常会先被寄存到该计算核的某个寄存器或缓存器中以等待进行进一步处理,因此第一指令还可涉及从该寄存器或缓存器中取出该新数据。在这样的实现中,第一指令可例如为:store.group0.broadcast addr0,register_N,该第一指令表示将寄存在相应计算核的寄存器register_N中的新数据(例如,data0)广播到广播群组group0中的各个计算核处,并将其存储在各个相关联的存储器对象的偏移地址addr0处。
在一些实现中,在新数据不需要被广播到广播群组中包括的所有计算核的情况下,第一指令中还可进一步包括广播模式标识符,广播模式标识符指示待使用的广播模式。在本公开中,广播模式用于指示发起第一指令的源计算核以及相应广播群组(即第一指令中所包括的群组标识符所标识的广播群组)的多个计算核中应接收该新数据的多个目的地计算核。在这样的实现中,第一指令可例如为:store.group0.pattern0.broadcast addr0,register_N,该第一指令表示将寄存在相应计算核的寄存器register_N中的新数据(例如,data0)从广播模式pattern0所指示的源计算核广播到广播群组group0中由广播模式pattern0所指示的各个目的地计算核处,并存储在各个相关联的存储器对象的偏移地址addr0处。
在本公开中,由于步骤402中的第一指令涉及数据发送和存储,因此可通过片上网络中的写网络向多个计算核中与针对待处理数据对象的后续处理相关的多个计算核广播该新数据。
在步骤404,在步骤402中提到的多个计算核中的每一计算核处,响应于接收到第一指令,将该新数据存储在相关联的存储器对象的该偏移地址处以供用于进行后续处理。
例如,可通过相应的片上存储器或者相应的高速缓存存储器将新数据存储在相关联的存储器对象中的该偏移地址处,具体取决于相关联的存储器对象被创建在相应的片上存储器上还是被创建在系统存储器上。
广播群组中的每一个计算核在接收到该第一指令后,都会将接收到的新数据存储在与其相关联的存储器对象的该偏移地址处以供用于后续处理。
通过采用以上技术手段,在进行数据广播时,可基于指定了单个偏移地址的一个相同的指令就可将新数据写到所有相关计算核,而无需来回的多次传输,由此减少了延迟时间以及各个计算核所需消耗的带宽,提高了广播效率。另外,在本公开中,以上广播是通过片上网络中的写网络来完成的,由于写网络相对于读网络的使用频率更低,因此有助于降低写网络和读网络之间的不平衡。
图5示出了根据本公开的实施例的用于进行数据归约的方法500的流程图。方法500可由以上提到的计算系统100或200中执行。应当理解的是,方法500还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在步骤502,对于每一计算核,如果在针对待处理数据对象的计算过程中在本地产生了需要参与归约计算的新数据,则向该计算核所属的归约群组中的多个计算核发送相同的进行归约计算并将归约计算结果存储到指定的偏移地址处的第二指令。
在本公开中,由于步骤502中的第二指令涉及数据发送和存储,因此可通过片上网络中的写网络向该计算核以及多个相关的计算核广播该新数据以供分别进行归约计算。
在本公开中,该第二指令可包括步骤502中提到的归约群组的群组标识符、需要参与该归约计算的该新数据以及该偏移地址。群组标识符为该归约群组的标识符,以指示该归约计算需要在该归约群组的多个计算核所产生的数据之间进行。在本公开中,归约群组可以是与步骤502中产生新数据的计算核所属的计算核群组。偏移地址指示归约计算结果应被存储到相关联的各个存储器对象的哪个位置。第二指令还可包括广播启用标识,以指示本次操作涉及数据广播。在该实现中,第二指令可例如为:reduce.group0.broadcastaddr0,data0,该第二指令表示将新数据data0广播到归约群组group0中的各个计算核处,以供在这些计算核处进行归约计算并将归约计算结果存储在相关联的存储器对象的偏移地址addr0处。
在一些实现中,新数据(例如,步骤502中的新数据)在被相应的计算核产生之后,通常会被先寄存到该计算核的某个寄存器或缓存器中以等待进行进一步处理,因此在基于第二指令广播该新数据以进行归约计算之前,还需从该寄存器或缓存器中取出该新数据。在该实现中,第二指令可例如为:reduce.group0.broadcast addr0,register_N,该第二指令表示将寄存在相应计算核的寄存器register_N中的新数据(例如,data0)广播到归约群组group0中的各个计算核处,以供在这些计算核处进行归约计算并将归约计算结果存储在相关联的存储器对象的偏移地址addr0处。
在一些实现中,在新数据不需要在第二指令中的群组标识符所指示的归约群组中的所有计算核中进行归约计算的情况下,第二指令还可包括广播模式标识符。广播模式标识符用于指示待使用的广播模式。各个广播模式用于指示发起第二指令的源计算核以及归约群组中的多个计算核中应参与相应的归约计算的的多个目的地计算核。在该实现中,第二指令可例如为:reduce.group0.pattern0.broadcast addr0,register_N,该第二指令表示将寄存在相应计算核的寄存器register N中的新数据(例如,data0)从广播模式pattern0所指示的源计算核(即该相应计算核)广播到归约群组group0的多个计算核中由广播模式pattern0所指示的各个目的地计算核处,以供在这些计算核处进行归约计算并将归约计算结果存储在相关联的存储器对象的偏移地址addr0处。
在本公开中,在步骤502中提到的归约群组中的多个计算核中的每一计算核处都会执行类似的第二指令,只是这些计算核通过第二指令发送的数据有所不同,这些数据这些新数据是分别由相应的计算核产生的。
在步骤504,在步骤502中提到的多个计算核中的每一计算核处,响应于接收到分别来自该多个计算核的多个新数据,对该多个新数据执行该归约计算以得到相应的归约计算结果,并将归约计算结果存储在相关联的存储对象中的所述偏移地址处以供用于进行后续处理。
在本公开中,归约计算可例如包括但不限于加和、乘积等计算。并且需要进行的具体归约计算也可在例如相应的第二指令中指定。各个计算核可在其相应的归约计算单元上执行该归约计算。
另外,在需要参与该归约计算的每一个计算核处都需要进行同样的归约计算,并且也会将相应的归约计算结果存储在该指定的偏移地址处。
在本公开中,可例如通过相应的片上存储器或者相应的高速缓存存储器将所述计算结果存储在相关联的存储器对象中的该偏移地址处,具体取决于相关联的存储器对象被创建在相应的片上存储器上还是被创建在系统存储器上。
通过以上技术方案,由于为待处理的数据对象创建了多个相同的存储器对象,每一计算核一个存储器对象,因此需要参与归约计算的各个数据可通过指令的相同的偏移地址的相同的第二指令被广播到每一个相关的计算核处以在归约群组中相关的每一计算核处执行归约计算来得到相应的归约计算结果,并且所得到的归约计算结果可被存储在各个相关的存储器对象的相同偏移地址处,因此无需来回的多次传输,由此减少了延迟时间以及各个计算核所需消耗的带宽,提高了广播效率。另外,在本公开中,以上广播是通过片上网络中的写网络来完成的,由于写网络相对于读网络的使用频率更低,因此有助于降低写网络和读网络之间的不平衡。
本公开涉及方法、装置、系统、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘计算设备。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (18)
1.一种计算系统,包括设置在一个或多个计算设备中的多个计算核、分别位于所述一个或多个计算设备中的一个或多个片上网络、以及存储器,所述一个或多个计算设备的数目小于所述多个计算核的数目,
每一计算设备中的计算核均连接到对应的片上网络,以通过所述片上网络相互通信;
所述存储器中包括为输入的待处理数据对象创建的多个存储器对象,每一个存储器对象中均存储有关于所述待处理数据对象的数据,并且所述多个存储器对象被配置成使用相同的偏移地址来存储相同的数据;
所述多个存储器对象的数目与所述多个计算核的数目相同,并且每一存储器对象被配置为仅允许所述多个计算核中与所述存储器对象相关联的计算核进行存取。
2.根据权利要求1所述的计算系统,其中所创建的每一存储器对象具有相应的配置信息,所述配置信息包括分配给相应存储器对象的基地址,每一存储器对象的配置信息仅被提供给所述多个计算核中与所述存储器对象相关联的计算核。
3.根据权利要求2所述的计算系统,其中每一存储器对象占用相应存储器的一个存储分段,并且所述配置信息还包括每一存储器对象所占的存储分段的长度、宽度和高度。
4.根据权利要求1所述的计算系统,其中所述存储器包括系统存储器,所述系统存储器也连接到所述一个或多个片上网络,并且所述多个存储器对象都被创建在所述系统存储器上。
5.根据权利要求4所述的计算系统,其中所述计算系统还包括多个高速缓存存储器,所述多个高速缓存存储器的数目与所述多个计算核的数目相同,每一计算核与所述多个高速缓存存储器中在所述计算核本地的一个高速缓存存储器连接,并且与任一计算核相关联的存储器对象的逻辑页面被映射到与所述计算核连接的高速缓存存储器上,以供所述计算核通过所述高速缓存存储器来对相关联的存储器对象进行存取。
6.根据权利要求1所述的计算系统,其中所述存储器包括分别包括在所述多个计算核中的多个片上存储器,并且与每一计算核相关联的存储器对象被创建在相应计算核的片上存储器上。
7.根据权利要求1所述的计算系统,其中所述存储器包括系统存储器以及分别包括在所述多个计算核中的至少一个计算核中的至少一个片上存储器,
与所述多个计算核中的至少一个计算核相关联的存储器对象被分别创建在相应计算核的片上存储器上;
与所述多个计算核中的所述至少一个计算核之外的其他计算核相关联的存储器对象都被创建在所述系统存储器上。
8.根据权利要求1所述的计算系统,其中所述多个计算核被划分成多个计算核群组,每一计算核群组具有相应的群组标识符。
9.根据权利要求8所述的计算系统,其中所述多个计算核根据所在的计算设备或者计算节点被划分为多个计算核群组。
10.根据权利要求1所述的计算系统,其中所述一个或多个计算设备通过总线相互通信。
11.一种用于进行数据广播的方法,所述方法在根据权利要求1-10中的任一项所述的计算系统中执行,所述方法包括:
对于每一计算核,如果在针对所述待处理数据对象的处理过程中在本地产生了关于所述待处理数据对象的新数据,向所述计算核所属的广播群组中的多个计算核发送相同的将所述新数据存储在指定的偏移地址的第一指令,所述第一指令包括所述广播群组的群组标识符、需要向所述多个计算核广播的所述新数据以及所述偏移地址;以及
在所述多个计算核中的每一计算核处,响应于接收到所述第一指令,将所述新数据存储在相关联的存储器对象中的所述偏移地址处以供用于进行后续处理。
12.根据权利要求11所述的方法,其中将所述新数据存储在相关联的存储器对象中的所述偏移地址处包括:
通过相应的片上存储器或者相应的高速缓存存储器将所述新数据存储在相关联的存储器对象中的所述偏移地址处。
13.根据权利要求11所述的方法,其中所述第一指令还包括广播模式标识符,所述广播模式标识符指示待使用的广播模式,所述广播模式用于指示发起所述第一指令的源计算核以及所述广播群组中的多个计算核中应接收所述新数据的多个目的地计算核。
14.一种用于进行数据归约的方法,所述方法在根据权利要求1-10中的任一项所述的计算系统中执行,所述方法包括:
对于每一计算核,如果在针对所述待处理数据对象的计算过程中在本地产生了需要参与归约计算的新数据,则向所述计算核所属的归约群组中的多个计算核发送相同的进行归约计算并将归约计算结果存储到指定的偏移地址处的第二指令,所述第二指令包括所述归约群组的群组标识符、需要参与所述归约计算的所述新数据以及所述偏移地址;以及
在所述多个计算核中的每一计算核处,响应于接收到分别来自所述多个计算核中的多个新数据,对所述多个新数据执行所述归约计算以得到相应的归约计算结果,并将所述归约计算结果存储在相关联的存储对象中的所述偏移地址处以供用于进行后续处理。
15.根据权利要求14所述的方法,其中所述第二指令还包括广播模式标识符,所述广播模式标识符指示待使用的广播模式,所述广播模式用于指示发起所述第二指令的源计算核以及所述归约群组中应参与所述归约计算的多个目的地计算核。
16.根据权利要求14所述的方法,其中将所述归约计算结果存储在相关联的存储对象中的所述偏移地址处包括:
通过相应的片上存储器或者相应的高速缓存存储器将所述归约计算结果存储在相关联的存储器对象中的所述偏移地址处。
17.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求11-13中任一项所述的方法。
18.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求14-16中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310100010.1A CN115994040A (zh) | 2023-02-09 | 2023-02-09 | 计算系统以及进行数据广播和数据归约的方法及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310100010.1A CN115994040A (zh) | 2023-02-09 | 2023-02-09 | 计算系统以及进行数据广播和数据归约的方法及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115994040A true CN115994040A (zh) | 2023-04-21 |
Family
ID=85990171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310100010.1A Pending CN115994040A (zh) | 2023-02-09 | 2023-02-09 | 计算系统以及进行数据广播和数据归约的方法及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115994040A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881090A (zh) * | 2023-09-06 | 2023-10-13 | 北京壁仞科技开发有限公司 | 计算装置以及控制计算装置中的计算核的能耗的方法 |
-
2023
- 2023-02-09 CN CN202310100010.1A patent/CN115994040A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881090A (zh) * | 2023-09-06 | 2023-10-13 | 北京壁仞科技开发有限公司 | 计算装置以及控制计算装置中的计算核的能耗的方法 |
CN116881090B (zh) * | 2023-09-06 | 2024-01-26 | 北京壁仞科技开发有限公司 | 计算装置以及控制计算装置中的计算核的能耗的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11948073B2 (en) | Machine learning inference engine scalability | |
CN102906726B (zh) | 协处理加速方法、装置及系统 | |
US20210295168A1 (en) | Gradient compression for distributed training | |
CN111199273A (zh) | 卷积计算方法、装置、设备及存储介质 | |
CN111338695B (zh) | 基于流水线技术的数据处理方法及相关产品 | |
EP3686816A1 (en) | Techniques for removing masks from pruned neural networks | |
TW202147188A (zh) | 神經網路模型的訓練方法和相關産品 | |
CN111459856B (zh) | 一种数据传输装置及传输方法 | |
CN112005251A (zh) | 运算处理装置 | |
CN111752879B (zh) | 一种基于卷积神经网络的加速系统、方法及存储介质 | |
CN115994040A (zh) | 计算系统以及进行数据广播和数据归约的方法及存储介质 | |
CN111210004B (zh) | 卷积计算方法、卷积计算装置及终端设备 | |
CN113011553A (zh) | 加速器、操作加速器的方法和包括加速器的装置 | |
US11941528B2 (en) | Neural network training in a distributed system | |
CN117435855A (zh) | 用于进行卷积运算的方法、电子设备和存储介质 | |
WO2023124304A1 (zh) | 芯片的缓存系统、数据处理方法、设备、存储介质及芯片 | |
CN111047037A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN116415100A (zh) | 业务处理方法、装置、处理器及计算设备 | |
CN115346099A (zh) | 基于加速器芯片的图像卷积方法、芯片、设备及介质 | |
CN113688089B (zh) | 数据处理方法、计算系统和计算机存储介质 | |
CN113570053A (zh) | 一种神经网络模型的训练方法、装置以及计算设备 | |
CN111461310A (zh) | 处理神经网络模型的神经网络设备、神经网络系统和方法 | |
US20230059970A1 (en) | Weight sparsity in data processing engines | |
TWI753728B (zh) | 運算單元架構、運算單元叢集及卷積運算的執行方法 | |
CN114095289B (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 | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Applicant after: Shanghai Bi Ren Technology Co.,Ltd. Address before: 201114 room 1302, 13 / F, building 16, 2388 Chenhang Road, Minhang District, Shanghai Applicant before: Shanghai Bilin Intelligent Technology Co.,Ltd. Country or region before: China |