掌桥专利:专业的专利平台
掌桥专利
首页

利用计算阵列来处理数据的方法和计算系统

文献发布时间:2023-06-19 11:26:00


利用计算阵列来处理数据的方法和计算系统

技术领域

本公开的示例性实现方式概括地涉及计算机领域,具体地,涉及用于基于包括多个计算设备的计算阵列来处理数据的方法和计算系统。

背景技术

随着计算机技术的发展,计算系统所涉及的待处理数据的数据量越来越大。为了以更高的效率来实现数据处理,可以由多个计算设备来并行地处理数据。目前已经提出了将多个计算设备彼此连接并且分别由每个计算设备来处理一部分待处理数据的技术方案。然而,已有的连接方式需要每个计算设备包括足够的连接端口。将会理解,计算设备的连接端口的数量存在限制,并且连接端口的数量越多则计算设备的制造难度和成本越高。进一步,已有技术方案的可扩展性并不令人满意,这导致不能按照需要来扩展并使用更多的计算设备来执行并行处理。因而,期望开发一种能够更为充分地利用各个计算设备的连接端口的技术方案,以便利用多个计算设备来处理数据。

发明内容

提供了一种用于利用包括多个计算设备的计算阵列来执行处理运算的技术方案。利用本公开的示例性实现方式,可以充分利用计算设备中的连接端口,进而以更为有效的方式实现并行数据处理。

根据本公开的第一方面,提供了一种用于利用计算阵列来执行处理运算的方法,在此计算阵列包括多个计算节点,以及多个计算节点中的计算节点包括一组计算设备。在一个方法中,向计算阵列中的多个计算节点中的每个计算节点分配源数据,源数据包括多个区块。在多个计算节点中的计算节点处,在至少一个迭代过程中,利用计算节点包括的一组计算设备中的多个第一类型的计算设备,分别接收来自多个计算节点中的计算节点以外的多个其他计算节点的多个区块。分别利用多个第一类型的计算设备针对接收的多个区块执行处理运算,以生成多个中间结果。针对多个中间结果执行处理运算,以获得针对源数据执行处理运算的最终结果中的第一部分。

根据本公开的第二方面,提供了一种计算系统,该计算系统包括:根据本公开的第一方面的计算阵列;处理单元;以及与处理单元耦合的存储单元。存储单元包括计算机可执行指令,计算机可执行指令在由处理单元运行时,使得处理单元执行根据本公开的第一方面的方法。

根据本公开的第三方面,提供了一种用于利用计算阵列来执行处理运算的装置。该装置包括用于执行根据本公开的第一方面中的各个步骤的相应模块。

应当理解,本部分所描述的内容并非旨在标识本公开的示例性实现方式的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。

附图说明

结合附图并参考以下详细说明,本公开的各示例性实现方式的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素。

图1A、图1B和图1C分别示意性示出了用于连接多个计算设备的连接方式的框图。

图2示意性示出了根据本公开的一个示例性实现方式的用于执行处理运算的计算阵列的框图。

图3示意性示出了根据本公开的一个示例性实现方式的利用计算阵列来执行处理运算的方法的流程图。

图4示意性示出了根据本公开的一个示例性实现方式的在一个计算节点处执行接收动作的过程的框图。

图5示意性示出了根据本公开的一个示例性实现方式的在另一计算节点处执行接收动作的过程的框图。

图6示意性示出了根据本公开的一个示例性实现方式的在一个计算节点处执行移动动作的过程的框图。

图7A和7B分别示意性示出了根据本公开的一个示例性实现方式的用于扩展计算阵列中的计算设备的过程的框图。

图8示意性示出了根据本公开的一个示例性实现方式的利用计算阵列来执行处理运算的计算系统的框图。

具体实施方式

以下结合附图对本公开的示范性示例性实现方式做出说明,其中包括本公开示例性实现方式的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的示例性实现方式做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例示例性实现方式”和“一个示例性实现方式”表示“至少一个示例示例性实现方式”。术语“另一示例性实现方式”表示“至少一个另外的示例性实现方式”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。

随着计算机技术的发展,处理运算所涉及的数据量不断地增加,这导致由单一计算设备难以在可接受的时间内完成处理运算。目前已经提出了将多个计算设备以环形方式连接并且以分布式方式来并行执行处理运算的技术方案。例如,目前已经提出了分别如图1A、图1B和图1C所示的连接方式。图1A示意性示出了用于连接多个计算设备的连接方式的框图100A。如图1A所示,设备110、111、112、113、114、115、116和117经由3个环路(分别以实线、虚线和点划线示出)而彼此连接。两个计算设备之间需要经由连接端口来连接。在图1A所示的连接方式中,每个计算设备至少需要包括6个连接端口。进一步,图1B和1C分别示意性示出了用于连接多个计算设备的连接方式的框图100B和100C。如图1B所示,多个计算设备以二维方式连接,该二维方式要求每个计算设备至少包括4个连接端口。如图1C所示,多个计算设备以三维方式连接,该三维方式要求每个计算设备至少包括6个连接端口。

将会理解,计算设备的连接端口的数量存在限制,并且连接端口的数量越大则计算设备的制造难度和成本越高。进一步,在如图1A至1C所示的连接方式中,可扩展性并不令人满意。例如,当期望向计算系统中添加更多的计算设备时,难以扩展已有的连接环路,这导致不能使用更多的计算设备来执行并行处理。

为了至少部分地解决已有技术方案中的上述缺陷,在本公开的一个示例性实现方式中,提供了一种用于利用计算阵列来执行处理运算的方法。根据本公开的一个示例性实现方式,提出了计算节点和计算阵列的概念。在此,计算节点可以包括以环路连接的多个计算节点,并且计算阵列可以包括彼此连接的多个计算节点。

首先参见图2描述根据本公开的一个示例性实现方式的概要。图2示意性示出了根据本公开的一个示例性实现方式的用于执行处理运算的计算阵列200的框图。如图2所示,计算阵列200可以包括多个计算节点(分别示出为计算节点N0至N7),并且多个计算节点中的每个计算节点包括一组计算设备。如图2所示,Dij表示第i个计算节点中的第j个计算设备。例如,计算节点N0可以包括计算设备D00、D01、D02、D03、D04、D05、D06、D07。类似地,其他计算节点可以包括相同数量的其他计算设备。

根据本公开的一个示例性实现方式,同一计算节点中的计算设备可以来自于相同或者不同的物理设备。例如,计算设备D00至D07可以是被部署在同一物理设备中的图形处理单元(GPU)。又例如,计算设备D00至D07可以是被部署在两个或者更多物理设备中的GPU。

根据本公开的一个示例性实现方式,计算节点中的计算设备可以包括两种类型:普通计算设备(如空白方框示出的计算设备D00至D06)和可扩展计算设备(如阴影方框示出的计算设备D07)。两种类型的计算设备都可以用于执行处理运算,不同之处在于可扩展计算设备可以被扩展。例如,可以利用包括8个计算设备的计算节点(或者包括8个计算节点的计算阵列)来扩展计算设备D07。

各个计算节点中的一部分普通计算设备可以彼此连接。为方便起见,图2仅示意性示出了节点N0中的各个计算设备与其他计算节点中的各个计算设备的连接方式。每个计算节点中的各个计算设备可以以类似的方式连接。如图2所示,计算节点N0中的计算设备D00经由连接210耦合至计算节点N1中的计算设备D16,计算节点N0中的计算设备D01经由连接211耦合至计算节点N2中的计算设备D25,计算节点N0中的计算设备D02经由连接212耦合至计算节点N3中的计算设备D34,计算节点N0中的计算设备D03经由连接213耦合至计算节点N4中的计算设备D43,计算节点N0中的计算设备D04经由连接214耦合至计算节点N5中的计算设备D52,计算节点N0中的计算设备D05经由连接215耦合至计算节点N6中的计算设备D61,计算节点N0中的计算设备D06经由连接216耦合至计算节点N7中的计算设备D70。

将会理解,图2中的上述连接可以支持双向数据传输。例如,连接210可以支持从计算设备D00向D16传输数据,并且反之亦然。尽管图2中未示出,每个计算节点中的多个计算设备可以以环路方式连接。在本公开的上下文中,并不限制计算节点内部的环路连接方式,例如可以基于图1A至图1C中示出的任一方式来连接计算节点内的多个计算设备。利用如图2所示的计算阵列200,每个计算设备仅需提供一个连接端口来与其他计算设备连接,进而形成可以用于提供更为强大的处理能力的计算阵列。以此方式,可以以更为有效的方式充分利用各个计算设备的连接端口来提供并行处理。

将会理解,尽管图2示意性示出了计算阵列200包括8个计算节点,并且每个计算节点包括8个计算设备的情况,根据本公开的一个示例性实现方式,计算阵列可以包括其他数量的计算节点(例如,4个或者16个,等等)。

根据本公开的一个示例性实现方式,可以基于如图2所示的计算阵列200来以分布式方式并行地执行处理运算。在本公开的上下文中,处理运算可以包括多种运算类型。例如,在通用计算环境以及人工智能应用环境中,处理运算可以包括AllReduce运算。在此,AllReduce运算适合于对分布在多个不同位置的多个数据集进行处理,然后再将处理后的数据分发给不同的位置。典型的AllReduce运算可以包括但不限于求和、求最大值、求最小值、求积、逻辑与、逻辑或、按位与以及按位或,待处理的数据可以包括但不限于向量或者矩阵。为了便于表述,在下文中将仅以求和作为处理运算的示例,描述使用计算阵列来执行处理运算的过程。

将参见图3描述更多细节,图3示意性示出了根据本公开的一个示例性实现方式的利用计算阵列来执行处理运算的方法300的流程图。在框310处,向计算阵列200中的多个计算节点中的每个计算节点分配源数据。根据本公开的一个示例性实现方式,计算阵列200中的计算节点的数量等于计算节点中的计算设备的数量。例如,计算阵列200包括8个计算节点N0至N7,并且每个计算节点包括8个计算设备。根据本公开的一个示例性实现方式,并不限制计算设备的类型,计算设备可以包括但不限于中央处理单元、中央处理单元核、以及图形处理单元,等等。

将会理解,在此的源数据是指待处理数据,例如在求和运算中,源数据是指将要被求和的数据。为了以分布式方式执行求和运算,可以基于计算阵列200中包括的计算节点的数量,将源数据划分为多个区块。例如,在计算阵列200包括8个计算节点的情况下,源数据可以包括8*8=64个区块。

可以向每个计算设备分配源数据,此时每个计算设备将包括64个区块。在不同应用环境中,源数据可以表示不同含义。例如,在机器学习技术中的确定成本函数的具体应用环境中,源数据可以表示网络中的权重信息(W)。此时,可以分别使用符号Wij(0≤i和j≤7,也即i和j以8进制表示)来表示多个区块中的每个区块。例如,W00表示64组权重数据中的第1组权重数据,W01表示第2组权重数据,…,并且W77表示第64组权重数据。在分配过程之后,每个计算设备将包括64个区块:W01至W77。

将会理解,在每个计算节点中的每个计算设备处执行的动作是类似的。为便于描述起见,将参见图3描述在一个计算节点处的各个计算设备执行的动作。根据本公开的一个示例性实现方式,可以以迭代方式在计算节点处执行如框320和330所示的步骤,直到达到预定的迭代次数阈值。根据本公开的一个示例性实现方式,可以基于计算阵列200中包括的计算节点的数量来确定迭代次数阈值。假设计算阵列的阵列包括M(简称为阵列宽度)个计算节点,则迭代次数阈值可以表示为M-1。在如图2所示的计算阵列200中,迭代次数阈值为8-1=7。当计算阵列200包括其他数量的计算节点时,迭代次数阈值可以被设置为不同的数值。

在框320处,在多个计算节点中的一个计算节点处,在至少一个迭代过程中,利用计算节点包括的一组计算设备中的多个第一类型的计算设备,分别接收来自多个计算节点中的计算节点以外的多个其他计算节点的多个区块。为方便描述起见,将以在计算节点N0处执行的迭代过程为示例描述方法300的更多细节。计算节点N0可以基于上文参见图2描述的连接210至216,来分别从其他计算节点(例如,计算节点N1至N7)中的相应计算设备处接收多个区块。下文中将参见图4描述有关接收过程的更多细节。

图4示意性示出了根据本公开的一个示例性实现方式的在一个计算节点处执行接收动作的过程400的框图。如图4所示,计算节点N0中的各个计算设备可以分别沿着如箭头410至416所示方向接收区块。如箭头410所示,计算节点N0中的计算设备D00从计算节点N1中的计算设备D16接收区块;如箭头411所示,计算设备D01从计算节点N2中的计算设备D25接收区块;如箭头412所示,计算设备D02从计算节点N3中的计算设备D34接收区块;如箭头413所示,计算设备D03从计算节点N4中的计算设备D43接收区块;如箭头414所示,计算设备D04从计算节点N5中的计算设备D52接收区块;如箭头415所示,计算设备D05从计算节点N6中的计算设备D61接收区块;以及如箭头416所示,计算设备D06从计算节点N7中的计算设备D70接收区块。

在下文中,将详细描述如何确定两个计算设备之间的上述对应关系。在此,计算节点N0包括第一类型的普通计算设备D00至D06以及第二类型的可扩展计算设备D07。可以逐一为计算节点N0中的每个普通计算设备确定对应计算设备。具体地,针对多个普通计算设备D00至D06中的给定计算设备,可以基于该给定计算设备在计算节点N0中的设备位置,从多个其他计算节点中确定对应计算设备。具体地,对于计算节点N0中的多个计算设备,可以按照各个计算设备的序号来以从左向右的方向进行处理。可以首先确定计算设备D00的对应计算设备。如图4所示,计算设备D00是计算节点N0中的第0个计算设备,可以从计算节点N1中选择计算设备D00的对应计算设备。

在下文中,将以从计算节点N1中选择对应计算设备作为示例进行描述。如图4所示,计算节点N1是计算阵列200中的第1个计算节点,此时可以基于该计算节点N1在计算阵列中的节点位置(“1”)和计算设备D00在计算节点N0中的设备位置(“0”),确定对应计算设备。对应计算设备来自于计算节点N1,因而可以基于节点位置确定对应计算设备的标识符中的第1位。如图4所示,可以基于设备位置、节点位置、阵列宽度来确定对应计算设备的标识符中的第二位。利用本公开的示例性实现方式,可以仅基于简单的数学运算,即可确定各个计算设备的对应计算设备。

具体地,利用上述方法可以确定:D00的对应计算设备为D16,D01的对应计算设备为D25,D02的对应计算设备为D34,D03的对应计算设备为D43,D04的对应计算设备为D52,D05的对应计算设备为D61,D06的对应计算设备为D70。在下文中,将描述如何确定计算阵列200中的任意计算设备Dij的对应计算设备。对于计算设备Dij而言,可以基于如下公式来确定对应计算设备Di’j’:i’=(i+1+j)mod M(mod为取模运算),并且j’=M-j-2。

根据本公开的一个示例性实现方式,可以从对应计算设备接收多个区块中的对应区块。例如,计算设备Dij可以从对应计算设备Di’j’接收区块。具体地,可以从对应计算设备Di’j’接收与给定计算设备Dij在计算阵列中的位置相关联的区块。上文所示的接收过程是并行执行的,换言之,计算设备D00、D01、D02、D03、D04、D05、D06和D07可以并行地分别从对应计算设备D16、D25、D34、D43、D52、D61和D70接收区块。

将会理解,上文仅以计算节点N0中的各个计算设备的接收过程为示例描述了在一个计算节点处执行的动作。每个计算节点中的每个计算设备都可以以类似方式进行操作,以便从对应计算设备接收对应区块。在下文中,将参见图5描述在另一计算节点N1处的接收过程。图5示意性示出了根据本公开的一个示例性实现方式的在另一计算节点处执行接收动作的过程500的框图。

将会理解,计算阵列200中的各个计算设备之间的连接可以支持双向通信。具体地,图2中的连接210可以支持如图4中箭头410所示的一个方向的通信(从D16到D00),并且还可以支持如图5中箭头516所示的一个方向的通信(从D00到D16)。利用本公开的示例性实现方式,可以重用各个计算设备之间的连接以及各个计算设备中的连接端口。以此方式,可以利用有限的连接端口来支持更多的通信环路,进而提供更为高效的并行计算能力。

可以基于上文描述的方法来分别为计算节点N1中的每个计算设备确定对应计算设备,进而确定从哪个计算设备接收对应区块。在图5的示例中,可以沿着如箭头510至516所示方向接收对应区块。如箭头510所示,计算节点N1中的计算设备D10从计算节点N2中的计算设备D26接收区块;如箭头511所示,计算设备D11从计算节点N3中的计算设备D35接收区块;如箭头512所示,计算设备D12从计算节点N4中的计算设备D44接收区块;如箭头513所示,计算设备D13从计算节点N5中的计算设备D53接收区块;如箭头514所示,计算设备D14从计算节点N6中的计算设备D62接收区块;如箭头515所示,计算设备D15从计算节点N7中的计算设备D71接收区块;以及如箭头516所示,计算设备D16从计算节点N0中的计算设备D00接收区块。

根据本公开的一个示例性实现方式,计算阵列200中的每个计算设备可以按照上文描述的方法来确定对应计算设备,并且从对应计算设备接收对应区块。在下文中,将返回图3描述如何处理接收到的对应区块。在图3的框330处,分别利用多个第一类型的计算设备针对接收的多个区块执行处理运算,以生成多个中间结果。可以将框330处所示的动作称为归纳动作。计算节点N0中的每个计算设备可以以类似方式执行归纳动作。具体地,可以基于给定计算设备处的多个区块中的与给定计算设备在计算阵列中的位置相关联的区块以及接收的对应区块,执行处理运算,以便在一个给定计算设备处生成多个中间结果中的中间结果。

例如,在计算设备D00处,可以针对D00处的区块W00和从对应计算设备D16处接收的对应区块W00进行累加操作,以便生成中间结果。可以利用生成的中间结果来替换D00处的先前区块W00。换言之,可以将中间结果写入用于保存先前区块W00的存储空间。又例如,在计算设备D01处,可以针对D01处的区块W01和从对应计算设备D25处接收的对应区块W01进行累加操作,以便生成中间结果。可以利用生成的中间结果来替换D01处的先前区块W01。换言之,可以将中间结果写入用于保存先前区块W01的存储空间。

将会理解,上文仅示意性示出了在两个计算设备处执行的操作,在其他计算设备处执行的操作也是类似的。例如,可以基于如下代码来控制在计算节点N0中的各个计算设备处执行的操作。

例如,表1中的第一行代码“N0.DEVICE0: {N0.DEVICE0.W00, N1.DEVICE6.W00}--> N0.DEVICE0.W00”表示:在计算节点N0中的第0个计算设备(也即,D00处)执行如下动作:将计算节点N0中的第0个计算设备中的区块W00与从计算节点N1中的第6个计算设备(也即,D16)接收的区块W00求和,并且将求和所得的中间结果写入计算节点N0中的第0个计算设备的用于存储W00的存储空间。将会理解,上文表1中的代码可以用于控制计算节点N0中的各个普通计算设备。可以以类似方式来控制其他计算节点中的其他计算设备。例如,可以基于如下表2至表4所示代码来控制在计算节点N1至N3中的各个计算设备处执行的归纳动作。可以基于上文描述的原理来编写相应的代码,以便控制在其他计算节点N4至N7中的各个计算设备处执行的动作。

上文已经参见表1至表4描述在一个迭代过程中在计算节点N0至N3执行的归纳动作的具体过程。在一个迭代过程中,在已经执行归纳动作之后,在每个计算节点处还需要执行移动动作。在移动动作中,可以指示多个第一类型的计算设备分别将多个中间结果传输至计算节点中的多个下一计算设备,以分别更新多个下一计算设备处的与多个第一类型的计算设备的位置相对应的区块。

根据本公开的一个示例性实现方式,可以使用计算节点内部的环路来执行上述移动动作。在下文中,将参见图6描述有关移动动作的更多细节。图6示意性示出了根据本公开的一个示例性实现方式的在一个计算节点处执行移动动作的过程600的框图。在每个计算节点处执行的移动动作是类似的,并且图6仅以在计算节点N0处的移动动作作为示例进行描述。

如图6所示,每个计算设备可以将本地中间结果传输至下一计算设备,以更新下一计算设备(例如,右侧计算设备)中的对应区块。例如,D00可以将本地中间结果(已经被写入至W00所在的存储空间)传输至计算设备D01,以便更新计算设备D01中的先前W00所在的存储空间。D01可以将本地中间结果(已经被写入至W01所在的存储空间)传输至计算设备D02,以便更新计算设备D02中的先前W01所在的存储空间。根据本公开的一个示例性实现方式,可以基于如下表5所示代码来控制在计算节点N0中的各个计算设备处执行的移动动作。

例如,表5中的第一行代码“N0.DEVICE0: {N0.DEVICE0.W00} -->{N0.DEVICE1.W00}”表示:在计算节点N0中的第0个计算设备(也即,D00处)执行如下动作:将计算节点N0中的第0个计算设备中的区块W00写入至计算节点N0中的第1个计算设备(也即,D01处)的用于存储W00的存储空间。进一步,可以利用D01中的W01来覆盖D02中的W01,利用D02中的W02来覆盖D03中的W02,以此类推。

将会理解,上述代码仅仅示出了在计算节点N0中的每个计算设备处执行的功能。可以基于具体应用环境来实现上述功能。将会理解,上文表5中的代码可以用于控制计算节点N0中的各个计算设备。可以以类似方式来控制其他计算节点中的其他计算设备。例如,可以基于如下表6所示代码来控制在计算节点N1中的移动动作。可以基于上文描述的原理,来编写相应的代码以便控制在其他计算节点N2至N7中的各个计算设备处执行的操作。

上文已经描述了在一个迭代过程中执行的归纳动作和移动动作的详细信息。在第一个迭代过程中,可以在每个计算节点中的每个计算设备处执行上文描述的归纳动作和移动动作。在经过第一个迭代过程之后,各个计算设备中的某些区块将会被更新。根据本公开的一个示例性实现方式,如果确定迭代过程被执行的次数未达到预定阈值,在计算节点处执行下一迭代过程,预定阈值是基于多个计算节点的数量确定的。换言之,可以基于更新的区块来执行第二迭代过程、第三迭代过程、…、直到达到预定的迭代次数阈值。

在下文中,继续以计算节点N0为示例描述在后续执行的多个迭代过程。在第二迭代过程中,计算节点N0中的各个计算设备D00、D01、D02、D03、D04、D05、D06、D07可以分别接收来自多个其他计算节点的多个更新的区块。将会理解,在第二迭代过程中用于确定给定计算设备的对应计算设备的方式与上文描述类似。与第一迭代过程的不同之处在于,由于已经在其他计算节点中的各个计算设备处执行了第一迭代过程,因而对应区块中的数据是已经被更新的数据。

继而,可以按照上文描述的过程,分别利用多个第一类型的计算设备针对接收的多个更新的区块执行处理运算,以生成多个更新的中间结果。具体地,可以按照类似于上文描述的方式,在计算节点N0中的各个普通计算设备处执行归纳动作。具体地,可以基于下文表7所示的代码,来控制在计算节点N0中的归纳动作。进一步,可以分别基于表8至表10所示的代码,来分别控制在计算节点N1至N3中的归纳动作。

在第二迭代过程中,当完成归纳动作之后,可以按照上文描述的方式,在计算节点N0中的各个计算设备处执行移动动作。此时,第二迭代过程中的中间结果将会包括来自源数据中的更多区块的求和。根据本公开的一个示例性实现方式,可以继续执行后续的第三迭代过程、第四迭代过程、…,直到迭代次数达到预定阈值次数(7次)。将会理解,上文仅示意性示出了在第一迭代过程和第二迭代过程中的具体动作。可以基于类似的方式来执行后续的迭代过程。在已经完成第7个迭代过程之后,每个计算设备处的中间结果将包括最终结果中的一部分。也即,对于包括64个计算设备的计算阵列200而言,每个计算设备包括最终结果的1/64。

返回图3,在框340处,针对多个中间结果执行处理运算,以获得针对源数据执行处理运算的最终结果中的第一部分。也即,可以基于计算节点N0中的8个计算设备处的中间结果,确定最终结果的1/8(1/64*8=1/8)。在下文中,将详细描述最终结果在各个计算设备中高端分布。D00中的W01将包括最终结果的1/64,D01中的W02将包括最终结果的1/64,D02中的W03将包括最终结果的1/64,D03中的W04将包括最终结果的1/64,D04中的W05将包括最终结果的1/64,D05中的W06将包括最终结果的1/64,D06中的W07将包括最终结果的1/64,并且D07中的W00将包括最终结果的1/64。

将会理解,上文仅以计算节点N0作为示例描述了在一个计算节点处执行的多个迭代过程的详细信息。可以以类似方式在计算阵列200中的每个计算节点处执行类似的动作,以便分别由每个计算节点生成最终结果中的相应的1/8。例如,在计算节点N0处,可以获得最终结果中的第1个1/8的数据;在计算节点N1处,可以获得最终结果中的第2个1/8的数据;…;在计算节点N7处,可以获得最终结果中的第8个1/8的数据。具体地,下文表11示出了最终结果在各个计算设备中的位置。

在表11中,行表示节点序号并且列表示设备序号。例如,行“节点i”和列“设备j”交点处的方框表示计算节点Ni中的第j个设备(也即Dij)中包括最终结果的位置。例如,行“节点0”和列“设备0”交点处的方框表示D00中的W01包括1/64的最终数据。可以基于表11来确定各个最终结果在每个计算设备中的位置。例如,表11中的第1行“节点0”表示:计算设备D00至D07中的区块W01、W02、W03、W04、W05、W06、以及W07中分别包括最终结果中的1/64。表11中的第2行“节点1”表示,计算设备D10至D17中的区块W13、W14、W15、W16、W17、W18、以及W12中分别包括最终结果中的1/64,以此类推。

据本公开的一个示例性实现方式,可以从计算阵列中的各个计算设备中,选择分别与各个计算设备的位置相对应的各个区块,进而将各个区块组合为最终结果。具体地,可以按照上文表11所示的位置关系,从D00中取出区块W01,从D01中取出区块W02,…,从D77中取出区块W76,并且将这些区块组合为最终结果。在此,该最终结果表示针对全部源数据执行处理运算的结果。

用本公开的示例性实现方式,可以将复杂的处理运算的计算量分散在计算阵列200中的64个计算设备。以此方式,仅需要7个迭代过程即可实现针对全部源数据的处理,因而可以极大地提高数据处理效率。进一步,采用计算阵列200的连接方式,并不要求每个计算设备包括大量的连接端口,因而可以尽量使用具有较少连接端口的计算设备的计算能力,实现并行计算。

据本公开的一个示例性实现方式,每个计算节点可以进一步包括第二类型的可扩展计算设备。可以利用计算节点或者计算阵列来替换可扩展计算设备,以便向计算阵列中加入更多的计算设备来实现并行处理。在下文中,将参见图7A和图7B来描述有关扩展的更多细节。图7A分别示意性示出了根据本公开的一个示例性实现方式的用于扩展计算阵列中的计算设备的过程700A的框图。在图7A中,左侧以阴影示出的计算设备D07是可扩展计算设备,可以利用计算节点710来扩展该计算设备D07。计算节点710的结构类类似于计算阵列200中的计算节点的结构。例如,计算节点710可以包括8个计算设备:E00、E01、E02、E03、E04、E05、E06、E07。在此,E00至E06可以是普通的计算设备,并且E07可以是另一可扩展计算设备。

图7B示意性示出了根据本公开的一个示例性实现方式的用于扩展计算阵列中的计算设备的过程700B的框图。在图7B中,左侧以阴影示出的计算设备D07是可扩展计算设备,可以利用计算阵列720来扩展该计算设备D07。计算节点710的结构类类似于计算阵列200,例如,计算设备720可以包括8个计算节点,并且每个计算节点可以包括8个计算设备。例如,第1个计算节点可以包括计算设备F00、F01、…、以及F07,…,第8个计算节点可以包括计算设备F70、F71、…、以及F77。在计算阵列720中,以阴影示出的计算设备F07、F17、…、以及F77可以是可扩展计算设备。

用本公开的示例性实现方式,提出了一种可扩展的层级连接方式。此时,不同层级中的可扩展计算设备都可以被替换为计算节点或者计算阵列,以便扩展原始计算阵列中的计算设备的数量。例如,可以分别利用相同或者不同的结构来扩展计算阵列中的各个可扩展设备。利用本公开的示例性实现方式,摆脱了已有技术方案中的环路连接的扩展性差的限制,由此可以以更为方便并且有效的方式扩展计算阵列的容量,以便提供更高的处理性能。

文已经参见图3至图7B描述了根据本公开的一个示例性实现方式的方法300的步骤。在本公开的一个示例性实现方式中,提供了一种用于利用计算阵列来执行处理运算的装置。该计算阵列包括多个计算节点,以及多个计算节点中的计算节点包括一组计算设备,并且该装置包括:分片模块,配置用于向计算阵列中的多个计算节点中的每个计算节点分配源数据,源数据包括多个区块;接收模块,配置用于在多个计算节点中的计算节点处,在至少一个迭代过程中,利用计算节点包括的一组计算设备中的多个第一类型的计算设备,分别接收来自多个计算节点中的计算节点以外的多个其他计算节点的多个区块;生成模块,配置用于分别利用多个第一类型的计算设备针对接收的多个区块执行处理运算,以生成多个中间结果;以及获得模块,配置用于针对多个中间结果执行处理运算,以获得针对源数据执行处理运算的最终结果中的第一部分。在本公开的一个示例性实现方式中,该装置可以进一步包括用于执行上文描述的方法300中的其他步骤的模块。

下文中,将参见图8描述用于实现上述方法的计算系统。图8示意性示出了根据本公开的一个示例性实现方式的利用计算阵列来执行处理运算的计算系统800的框图。如图8所示,计算系统800可以包括计算阵列200,该计算阵列200可以包括多个计算节点(例如,N0至N7),并且每个计算节点可以包括多个计算设备。计算系统800可以进一步包括处理单元810,以及耦合至该处理单元810的存储单元820。存储单元820可以包括计算机可执行指令,以便用于在由处理单元810运行时,执行上文描述的方法300。

据本公开的一个示例性实现方式,提供了一种计算系统,包括:计算阵列,计算阵列包括多个计算节点,以及多个计算节点中的计算节点包括一组计算设备;处理单元;与处理单元耦合的存储单元,存储单元包括计算机可执行指令,计算机可执行指令在由处理单元运行时,使得处理单元执行如下动作:向计算阵列中的多个计算节点中的每个计算节点分配源数据,源数据包括多个区块;在多个计算节点中的计算节点处,在至少一个迭代过程中,利用计算节点包括的一组计算设备中的多个第一类型的计算设备,分别接收来自多个计算节点中的计算节点以外的多个其他计算节点的多个区块;分别利用多个第一类型的计算设备针对接收的多个区块执行处理运算,以生成多个中间结果;以及针对多个中间结果执行处理运算,以获得针对源数据执行处理运算的最终结果中的第一部分。

据本公开的一个示例性实现方式,分别接收来自多个其他计算节点的多个区块包括:针对多个第一类型的计算设备中的给定计算设备,基于给定计算设备在计算节点中的设备位置,确定多个其他计算节点中的给定计算设备的对应计算设备;以及从对应计算设备接收多个区块中的对应区块。

据本公开的一个示例性实现方式,基于设备位置确定对应计算设备包括:针对其他计算节点中的给定计算节点,基于给定计算节点在计算阵列中的节点位置和设备位置,确定对应计算设备;以及其中从对应计算设备接收对应区块包括:从对应计算设备接收与给定计算设备在计算阵列中的位置相关联的区块。

据本公开的一个示例性实现方式,生成多个中间结果包括:基于给定计算设备处的多个区块中的与给定计算设备在计算阵列中的位置相关联的区块以及接收的对应区块,执行处理运算,以生成多个中间结果中的中间结果。

据本公开的一个示例性实现方式,基于多个中间结果确定第一部分包括:指示多个第一类型的计算设备分别将多个中间结果传输至计算节点中的多个下一计算设备,以分别更新多个下一计算设备处的与多个第一类型的计算设备的位置相对应的区块;以及方法进一步包括:响应于确定迭代过程被执行的次数未达到预定阈值,在计算节点处执行下一迭代过程,预定阈值是基于多个计算节点的数量确定的。

据本公开的一个示例性实现方式,在计算节点处执行下一迭代过程包括:在多个第一类型的计算设备处,分别接收来自多个其他计算节点的多个更新的区块;以及分别利用多个第一类型的计算设备针对接收的多个更新的区块执行处理运算,以生成多个更新的中间结果;以及基于多个更新的中间结果确定第一部分。

据本公开的一个示例性实现方式,动作进一步包括:针对多个其他计算节点,确定最终结果中的在多个其他计算节点处生成的多个其他部分;以及基于第一部分和多个其他部分,确定最终结果。

据本公开的一个示例性实现方式,确定最终结果包括:从计算阵列中的各个计算设备中,选择分别与各个计算设备的位置相对应的各个区块;以及组合各个区块以确定最终结果。

据本公开的一个示例性实现方式,计算节点进一步包括第二类型的计算设备,并且方法进一步包括:利用以下至少任一项来扩展第二类型的计算设备:包括多个附加计算设备的附加计算节点;以及包括多个附加计算节点的附加计算阵列。

据本公开的一个示例性实现方式,多个计算设备中的每个计算设备包括以下至少任一项:中央处理单元、中央处理单元核、以及图形处理单元;处理运算包括以下至少任一项:求和、求最大值、求最小值、求积、逻辑与、逻辑或、按位与以及按位或;以及多个计算节点的数量等于计算节点中的一组计算设备的数量,并且多个区块的数量是基于多个计算节点的数量确定的。

领域技术人员可以理解,这里所描述的方法步骤不仅仅局限于附图中所示例性示出的顺序,而是可以按照任何其他可行的顺序来执行。

公开的以上描述用于使本领域的任何普通技术人员能够实现或使用本公开。对于本领域普通技术人员来说,本公开的各种修改都是显而易见的,并且本文定义的一般性原理也可以在不脱离本公开的精神和保护范围的情况下应用于其它变形。因此,本公开并不限于本文所述的实例和设计,而是与本文公开的原理和新颖性特性的最广范围相一致。

相关技术
  • 利用计算阵列来处理数据的方法和计算系统
  • 用于处理数据的方法、计算系统和计算机可读存储介质
技术分类

06120112923488