一种用于同步计算任务数据的方法、系统和可读介质与流程

文档序号:26139232发布日期:2021-08-03 14:22阅读:71来源:国知局
一种用于同步计算任务数据的方法、系统和可读介质与流程



背景技术:

目前的神经网络分布式训练方法包括,在多个分布式计算节点上应用同步大小批量随机梯度下降(“sdg”)方法来尝试数据并行加速。在这种方法中,计算节点间的通信模式是所谓的“allreduce”算法。用于实现所述allreduce算法的传统硬件互连结构是基于圆环拓扑结构,所述圆环拓扑结构存在许多重要问题,包括长连接线的延迟和无法分割计算节点来分配多个计算任务。



技术实现要素:

本公开的实施例提供了一种用于同步计算任务数据的系统,用于在多组计算节点之间同步计算任务数据,每组计算节点包括:一组计算节点a-d、一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,并将计算节点d与计算节点b和计算节点c通讯耦合,还包括一组组间互连结构,所述组间互连结构将多组计算节点中的第一组计算节点的计算节点a与第二组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d通讯耦合,所述第二组计算节点与所述第一组计算节点相邻接。所述方法包括:使用第一组环形连接在计算节点的第一维度中进行数据同步,其中,所述第一组环形连接使用沿第一维度通信耦合所述计算节点的组间互连结构和组内互连结构形成;以及,使用第二组环形连接在计算节点的第二维度中广播已同步数据,所述第二组环形连接使用沿第二维度通信耦合所述计算节点的组间互连结构和组内互连结构形成。

本公开实施例还提供了一种用于同步计算任务数据的方法,用于在多组计算节点之间同步计算任务数据,每组计算节点包括:一组计算节点a-d、一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,并将计算节点d与计算节点b和计算节点c通讯耦合,还包括一组组间互连结构,所述组间互连结构将第一组计算节点的计算节点a与第二组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d通讯耦合,所述第二组计算节点与所述第一组计算节点相邻接。所述系统包括:存储一组指令集的存储器;一个或多个处理器被配置为执行所述指令集以使系统:使用环形连接在计算节点的第一维度中同步数据,其中,所述环形连接使用沿第一维度通信耦合所述计算节点的组间互连结构和组内互连结构形成;以及,使用第二环形连接在计算节点的第二维度中广播已同步数据,所述第二环形连接使用沿第二维度通信耦合所述计算节点的组间互连结构和组内互连结构形成。

本公开的实施例进一步提供了非临时性计算机可读介质,其存储一组指令集,该指令集由设备的一个或多个处理器执行,以开启一种用于同步计算任务数据的方法,用于在多组计算节点之间同步计算任务数据。每组计算节点包括:一组计算节点a-d、一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,并将计算节点d与计算节点b和计算节点c通讯耦合,还包括一组组间互连结构,所述组间互连结构将第一组计算节点的计算节点a与第二组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d通讯耦合,所述第二组计算节点与所述第一组计算节点相邻接。所述方法包括:使用环形连接在计算节点的第一维度中进行数据同步,其中,所述环形连接使用沿第一维度通信耦合所述计算节点的组间互连结构和组内互连结构形成;以及,使用第二环形连接在计算节点的第二维度中广播已同步数据,所述第二环形连接使用沿第二维度通信耦合所述计算节点的组间互连结构和组内互连结构形成。

附图说明

所示附图,包含在本说明书中并构成本说明书一部分,示出与本发明一致的实施例,并与实施方式一起,阐释本发明的原理。

图1示出了一种基于环的allreduce操作的示例性实现。

图2示出了一种示例性4x4二维圆环互连结构。

图3a根据本公开的一些实施例,示出了一种分布式系统的典型服务器的原理图。

图3b根据本公开的一些实施例,示出了一种包括服务器的典型计算集群的原理图。

图4根据本公开的一些实施例,示出了某个计算节点与在所述计算节点的周围超正方拓扑结构中的计算节点的示例性连接。

图5根据本公开的一些实施例,示出了一种示例性超正方互连拓扑结构。

图6a-c根据本公开的一些实施例,示出了来自超正方互连拓扑结构的一行六个计算节点的示例性环形连接。

图7a-c根据本公开的一些实施例,示出了来自超正方互连拓扑结构的一行四个计算节点的示例性环形连接。

图8根据本公开的一些实施例,示出了在某个计算集群中,使用超正方互连拓扑结构的示例性板卡。

图9根据本公开的一些实施例,示出了包括计算节点板卡的示例性计算集群。

图10根据本公开的一些实施例,示出了划分为子部分的示例性超正方互连拓扑结构。

图11根据本公开的一些实施例,示出了一种用于在超正方互连拓扑结构中分配计算节点的示例性方法的流程图。

图12根据本公开的一些实施例,示出了用于在超正方互连拓扑结构上执行allreduce算法的一维路径的示例性实现。

图13根据本公开的一些实施例,示出了在超正方互连拓扑结构上执行一种allreduce算法的二维路径的示例性实现。

图14根据本公开的一些实施例,示出了用于在超正方互连拓扑结构中为某个计算任务执行同步数据的方法的示例性流程图。

具体实施方式

现在请详细参考示例性实施例,其示例在附图中示出。以下说明请参考附图,除非另有说明,否则不同附图中的相同编号表示相同或相似的元件。在以下示例性实施例的描述中所阐述的实现并不代表与本发明一致的所有实现。相反,它们仅仅是与所附权利要求中所述的与本发明有关的方面一致的装置和方法的示例。

分布式计算是研究分布式系统的计算机科学领域。分布式系统是一个组件位于不同联网计算机上的系统,这些计算机通过相互传递消息来通信和协调它们的动作。

分布式深度学习是深度学习算法的一种实现方式。由于深度学习算法需要大量的计算能力,因此对于大型计算任务来说,特别是在深度学习算法的训练阶段,将此类算法的工作负荷分配到多台计算机或芯片,以并行方式加速计算变得很有必要。

目前神经网络分布式训练的方法包括,在多个分布式计算节点上应用sdg方法来尝试数据并行加速。在这种方法中,计算节点间的通信模式是所谓的“allreduce”算法。在这种方法中,所述allreduce操作是计算节点间通信的主要模式之一。在一个allreduce操作中,首先从所有分布式节点收集或整合同一变量的所有版本的值,然后计算平均值并将其广播到所有分布式节点。换句话说,allreduce操作是涉及整合步骤和广播步骤的两阶段的通信操作。allreduce操作可以同时应用于许多变量。

虽然在取平均值之前,整合步骤可以通过添加不同版本的值来执行,但是整合步骤也可能包括其他操作,例如乘法运算,“或”运算、“异或”运算,等等。可以理解的是,所有的操作通常都满足关连性和交换性。例如,在对其他版本执行其他整合步骤之前,可以首先对某个值的某些版本执行整合步骤。最终结果可以与一次对所有版本执行单个整合步骤相同。

还有许多方法可以实现所述allreduce操作,尽管allreduce的简单拓扑结构的实现是基于树结构,但由于其更高的带宽利用率和效率,基于环结构的allreduce操作是行业中的主要解决方案。图1示出了一种基于环的allreduce操作的示例性实现。

根据如图1所示,有三个计算节点,分别命名为工作节点a、工作节点b和工作节点c,并且每个计算节点包括三组变量。例如,最初,工作节点a包含具有值(5,13)、(8,19)和(42,1)的三组变量。在allreduce操作中,首先对所有计算节点上的变量求和,然后计算每个变量的平均值并将其广播到每个计算节点。例如,allreduce操作可以分解为图1所示的五个步骤。在步骤1中,所有变量都已准备好启动allreduce操作。在步骤2中,将工作节点a和工作节点b中的第一变量的值相加并存储到工作节点b中,将工作节点b和工作节点c中的第二变量的值求和并存储到工作节点c中,以及将工作节点c和工作节点a中第三变量的值相加并存储到工作节点a中。在步骤3中,将工作节点a和工作节点b中的第三变量的值相加并存储在工作节点b中,将工作节点b和工作节点c中的第一变量的值求和并存储到工作节点c中,以及将工作节点c和工作节点a中第二变量的值求和并存储到工作节点a中。

在这个阶段,所有变量的值都已求和并存储在工作节点a、工作节点b或工作节点c中;下一阶段是将这些求和值从其计算节点广播到其他计算节点;在步骤4中,将工作节点a的第二变量的值发送到工作节点b替换工作节点b的第二变量,将工作节点b的第三变量的值发送到工作节点c替换工作节点c的第三变量,以及将工作节点c的第一变量的值发送到工作节点a替换工作节点a的第一变量;在步骤5中,将工作节点a的第一变量的值发送到工作节点b替换工作节点b的第一变量,将工作节点b的第二变量的值发送到工作节点c替换工作节点c的第二变量,以及将工作节点c的第三变量的值发送到工作节点a,以替换工作节点a的第三变量。

为了通过硬件方式有效地在多个芯片或处理器上实现allreduce操作,可以使用多种硬件互连拓扑结构。例如,二维(“2d”)圆环网络、三维圆环网络或超立方体网络是可以作为实现allreduce操作的硬件互连拓扑结构解决方案。图2示出了一种示例性4x4二维圆环互连结构;根据图2所示的2d圆环互连结构,计算节点(例如,芯片)的每一行或每一列形成一个环。例如,第一行包括计算节点11、计算节点12、计算节点13和计算节点14,环的组成为11-12-13-14-11。由于每一行或每一列都可以形成一个环,因此图1中描述的allreduce操作可以在图2示出的2d圆环互连结构中实现。

围绕常规的互连拓扑结构,如图2的圆环拓扑结构中的重要问题之一是圆环拓扑结构不能有效地扩展。在许多实现中,多个计算任务很可能同时在互连上运行;结果,互连结构可能需要被分成多个部分,每个部分处理特定的计算任务。例如,计算节点11、12和13可以分配给一个计算任务,而计算节点14可以分配给另一个计算任务;问题是计算节点11、12和13之间不再有环形连接,为了形成环,来自计算节点13的数据需要通过计算节点12跳转到计算节点11,这种跳转造成通信效率低下,并阻滞了计算节点12周边的其他潜在的通信流量。

围绕常规互连拓扑结构的另一个重要问题是圆环拓扑结构需要长连接线来连接每个环末端的计算节点。例如,连接计算节点11和计算节点14的连接线比连接计算节点11和计算节点12的连接线长。当硬件系统扩容时,一个环中的计算节点的数量会增加,从而导致计算节点之间的距离更远;结果,需要更长的连接线来连接环末端的计算节点,这可能开始导致通信中的显著延迟。例如,1米以内的铜缆可以维持56-gbps传输速率;如果铜缆的长度增加,可维持的传输速率将小于56-gbps。同时,为了维持更高的传输速率——例如112-gbps传输速率,铜缆的长度需要明显短于1米。

为了解决这些问题,本公开的实施例提出了一种超正方互连拓扑结构和先进的基于环的allreduce操作。根据本公开的一些实施例,图3a示出了一种分布式系统的示例性服务器的原理图。根据图3a,分布式系统100的服务器110包括用于传递信息的总线112或其他通信机制,一个或多个为了处理信息通过总线112通讯耦合的处理器116,以及一个或多个为了处理信息通过总线112通讯耦合的主处理器117。处理器116,例如,可以是一个或多个微处理器。在一些实施例中,一个或多个处理器116包括处理器165和处理器166,且处理器165和处理器166通过互连拓扑结构的片间互连结构连接。主处理器17,例如,可以是中央处理单元(“cpus”)。

服务器110可以通过网络122向另一个服务器130传输数据或与之通信;网络122可以是局域网、互联网服务提供商、互联网或以上任何组合;服务器110的通信接口118连接到网络122;此外,服务器110的一个或多个处理器116可以通过互连拓扑结构的片间互连结构连接到服务器130的一个或多个处理器170(以粗体显示)。在一些实施例中,服务器130的一个或多个处理器170包括处理器171和172,处理器165、处理器166、处理器171、以及处理器172通过所述互连拓扑结构的片间互连结构连接。此外,服务器110可以通过总线112耦合外围设备140,其中包括显示器(例如,阴极射线管(crt)、液晶显示器(lcd)、触摸屏,等等)和输入设备(例如,键盘、鼠标、软键盘,等等)。

服务器110可使用定制的硬连线逻辑、一个或多个asics或fpgas、固件、或与所述服务器结合、使服务器110成为专用机器的程序逻辑来实现。

服务器110还包括存储设备114,存储设备114可以包括内存161和物理存储164(例如,硬盘驱动器、固态驱动器,等等)。存储器161可以包括随机存取存储器(ram)162和只读存储器(rom)163。存储设备114通过总线112与处理器116和主处理器117通讯耦合。存储设备114可包括主存储器,该主存储器可用于存储处理器116和主处理器117执行指令中的临时变量或其他中间信息。此类指令存储在处理器116和主处理器117可访问的非临时性存储介质之后,使服务器110成为定制执行指令中的指定操作的专用机器。在此使用的术语“非临时性介质”是指用于存储使机器以特定方式操作的数据或指令的任何非临时性介质。这种非临时性介质可以包括非易失性介质或易失性介质。非临时性介质包括,例如,光盘或磁盘、动态存储器、软盘、软磁盘、硬盘、固态驱动器、磁带、或任何其他磁性数据存储介质、光盘、任何其他光学数据存储介质、任何带有孔图案的物理介质,ram、prom和eprom、flash-eprom、nvram、闪存、寄存器、缓存、任何其他内存芯片或盒式磁带以及相同的联网版本。

将一个或多个指令的一个或多个序列在处理器116或主处理器117上执行时,可能涉及各种形式的介质。例如,所述指令最初可以在远程计算机的磁盘或固态驱动器上执行,所述远程计算机能够将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。服务器110的本地调制解调器可以接收电话线上的数据,并使用红外发射器将数据转换为红外信号。红外探测器能够接收红外信号中携带的数据,并且适当的电路能够将数据放置在总线112上。总线112将数据带到存储设备114中的主存储器,处理器116或主处理器117从中检索并执行所述指令。

在一些实施例中,服务器(例如,图3a中的服务器110)可以被安排在一起以形成计算集群。根据本申请公开的一些实施例,图3b示出了一种包括服务器的典型计算集群的原理图。如图3b所示,计算集群180包括许多服务器,包括服务器110和130;所述服务器能够被布置为每个服务器在任何方向上都有相邻者,例如上、下、左、右、前和后。尽管服务器能够通过总线(例如服务器110的总线112和服务器130的总线173)和通信接口(例如,如图3a所示的通信接口118)彼此通信,服务器内部的处理器还能够通过互连拓扑结构的片间互连结构彼此通信。例如,如图3b所示,服务器110的处理器165和166可以通过互连拓扑结构的片间互连结构与服务器130的处理器171和172连接(以粗体显示)。服务器110的处理器165和166以及服务器130的处理器171和172也能够通过互连拓扑结构的片间互连相互连接。

为了创建新颖的超正方互连拓扑结构,重新设计了每个计算节点的连接。根据本申请的一些实施例,图4示出了某个计算节点与在所述计算节点的周围超正方拓扑结构中的计算节点的示例性连接。根据图4所示,互连拓扑结构包括计算节点a、b、c、d、a-up、a-left、a-right和a-down;在一些实施例中,计算节点a、b、c和d可以形成一组计算节点,计算节点a-up、a-left、a-right、和a-down属于不同的计算节点组,在一些实施例中,所有所述计算节点都可以是处理器(例如,图3a中分布式系统100的处理器165、166、171和172)。在一些实施例中,所述计算节点可以是人工智能(“ai”)训练芯片或ai训练处理器;在一些实施例中,所述计算节点是加速器,例如神经处理单元(“npus”)或图形处理单元(“gpus”)。

如图4,四个计算节点a、b、c和d各自位于一个矩形的四个角处,并且四个计算节点以矩形连接。换句话说,计算节点a通过连接i-head连接到计算节点b;计算节点a通过连接i-tail连接到计算节点d;计算节点b通过连接i-vertical连接到计算节点c。计算节点d通过连接i-horizontal连接到计算节点c;在一些实施例中,矩形连接是正方形连接。

在计算节点a、b、c和d的矩形连接之外,每个计算节点还能够连接到计算节点的所述相邻矩形连接中的相应计算节点;例如,计算节点a通过连接o-up向上连接到相应的计算节点a-up;计算节点a通过连接o-left向左连接到相应的计算节点a-left;计算节点a通过连接o-down向下连接到相应的计算节点a-down;计算节点a通过连接o-right向右连接到相应的计算节点a-right。因此,计算节点a、b、c和d的每个计算节点可以有六个连接。在一些实施例中,连接i-head、i-tail、i-horizontal、i-vertica、o-left、o-up、o-right、o-down可以是双向的。在一些实施例中,所述连接可以是作为互连拓扑结构的一部分的片间互连结构。在一些实施例中,所述连接可以使用铜电缆形成。

图4所示的计算节点的连接可以按比例放大以形成超正方互连拓扑结构。根据本申请公开的一些实施例,图5示出了一种示例性的超正方互连拓扑结构。根据图5,其中有多个计算节点,包括计算节点11-16、21-26、31-36、41-46、51-56和61-66;每个计算节点具有类似于图4所示的计算节点的所述连接。例如,类似于图4的计算节点a,计算节点33可以与计算节点34、43和44形成矩形连接,并且计算节点33可以具有六个连接。更具体地说,类似于图4的计算节点b和c,计算节点33作为所述矩形连接的一部分连接到计算节点34和43;类似于图4中计算节点a-up,a-left,a-down,和a-right,计算节点33连接到相应的计算节点23、31、35和53。可以理解的是,图5中没有类似于图2中所示的长连接线的连接。因此,由于图5的所述拓扑结构消除了与长连接线相关的延迟,图5的拓扑结构是对传统互连拓扑结构的改进。

使用图5的所述拓扑结构,可以在计算节点的每一行或每一列中形成环形连接。根据本公开的一些实施例,图6a-c示出了来自超正方互连拓扑结构的一行六个计算节点的示例性环形连接。如图6a所示,有六个计算节点在一行中水平对齐,即计算节点11、12、13、14、15和16。此外,上述计算节点之间有七个连接,即连接11-12、11-13、12-14、13-14、13-15、14-16、和15-16。可以理解,在图6a-c中的计算节点11-16相当于在图5中的计算节点11-16,或代表图5中计算节点的任何其他行或列。

根据如图6a示出的所述连接,11-12-14-16-15-13-11可以形成为一个环形连接。换句话说,所述环形连接可以通过顺序遍历连接11-12、12-14、14-16、16-15、15-13和13-11来形成;如图6a中所示,遍历所述连接的所述顺序在所述连接上标识。所述环形连接上的每个计算节点可以沿着所述环形连接转发数据包。

在一些实施例中,连接是双向的。因此,每个环形连接既可以向前方也可以向后方遍历。例如,如图6b所示,所述环形连接11-12-14-16-15-13-11可以通过连接11-13、13-15、15-16、16-14、14-12和12-11顺序遍历。可以理解的是,所述环形连接也可以通过在列中垂直对齐的计算节点来形成。

可以理解,可以从任何所述计算节点开始形成环形连接;例如,如图6c所示,环形连接可以在计算节点14上开始,并且可以形成为14-16-15-13-11-12-14;换句话说,环形连接可以通过顺序遍历连接14-16、16-15、15-13、13-11、11-12和12-14来形成。如图6c所示,遍历所述连接的所述顺序在所述连接上标识。

根据本公开的一些实施例,图7a-c示出来自超正方互连拓扑结构的一行四个计算节点的示例性环形连接。如图7a所示,在一行中有四个计算节点,即计算节点11、12、13和14;此外,还有四个连接,即连接11-12、11-13、12-14和13-14。在一些实施例中,图7a-c中的计算节点11-14可以是图6a-c的计算节点11-14。

根据图7a所示的连接,环形连接可以形成为11-12-14-13-11;换句话说,环形连接可以通过图7a所示的顺序遍历连接11-12、12-14、14-13和13-11来形成。环形连接上的每个计算节点都可以沿着环形连接转发数据包。

在一些实施例中,连接是双向的;因此,每个环形连接既可以向前也可以向后遍历;例如,如图7b所示,环形连接11-12-14-13-11可以按顺序遍历连接11-13、13-14、14-12和12-11形成。如图7b所示,所述连接被遍历的顺序在所述连接上标识;可以理解的是,环形连接也可以通过在一列中垂直对齐的计算节点形成。

可以理解的,可以从任何计算节点开始形成一个环形连接;例如,如图7c所示,环形连接可以从计算节点13开始,并且可以形成为13-14-12-11-13;换句话说,环形连接可以通过按顺序遍历连接13-14、14-12、12-11和11-13来形成;如图7c所示,所述连接被遍历的顺序在所述连接上标识。

在一些实施例中,超正方互连拓扑结构可以被应用于形成包括一个或多个计算节点板卡的计算集群。根据本公开的一些实施例,图8示出了在计算集群中的使用超正方互连拓扑结构的示例板卡。如图8所示,计算节点a-d形成一组计算节点。所述板卡包括计算节点a-d、一个或多个主处理器以及硬件桥。

在一些实施例中,计算节点a-d类似于图4所示的计算节点a-d;在一些实施例中,计算节点a-d通过片间互连连接,连接计算节点a-d的片间互连可以称为板内互连。在一些实施例中,每个计算节点a-d通过片间互连与相邻板卡的相应计算节点连接,将计算节点a-d与相邻板卡的相应计算节点连接的片间互连称为板间互连结构。

在一些实施例中,一个或多个主处理器可以是一个或多个cpus,类似于图3a的主处理器117。在一些实施例中,硬件桥可以是外围组件互连快速(“pcie”)总线,类似于图3a或图3b的总线112。在一些实施例中,pcie可以与网络接口控制器(“nic”)连接,类似于图3a的通信接口118。nic可以连接到以太网或无线宽带(“ib”)网络,类似于图3a的网络122。在一些实施例中,计算集群类似于图3b的计算集群180。在一些实施例中,计算集群是一个人工智能计算集群。

在一些实施例中,图8所示的板卡设置于服务器中,类似于图3a或图3b的服务器110或130。在一些实施例中,服务器可以容置多个板卡。

在一些实施例中,如图8所示,四个计算节点和一个cpu被集成到一个板卡上。在一些实施例中,计算节点a-d可以是ai训练芯片或ai训练处理器。在一些实施例中,计算节点a-d可以是与ai训练芯片或ai训练处理器相关的加速器,例如npu或gpu。每个计算节点a-d可以通过硬件桥连接到一个或多个主处理器。每个计算节点a-d可以有6个端口。每个端口可包含8条通信通道。基于序列化器/反序列化器(“serdes”)架构,每条通信通道可以是112-gbps。

在许多传统的数据中心网络系统中,不同板卡上计算节点之间的通信依赖于pcie总线和传统的以太网或ib网络。可以理解的是,图8所示的板卡不同于传统的数据中心网络系统,因为该板卡可以使用片间互连实现不同板卡上计算节点之间的直接通信(例如,图3a中处理器165和166之间的片间互连)。与pcie总线和以太网或ib网络相比,所述片间互连结构可以在计算节点之间提供更快、更高效的通信。

在一些实施例中,图8所示的多个板卡可以被布置为一个计算集群。根据本公开的一些实施例,图9示出了包含计算节点板卡的示例性计算集群。如图9所示,每个板卡包括四个计算节点a-d、一个或多个主处理器和硬件桥。在一些实施例中,计算节点a-d类似于图4所示的计算节点a-d。在一些实施例中,一个或多个主处理器可以是中央处理单元(“cpus”),类似于图3a的主处理器117。在一些实施例中,硬件桥可以是外围组件互连快速(“pcie”)总线,类似于图3a或图3b的总线112。在一些实施例中,计算集群类似于图3b的计算集群180。在一些实施例中,计算集群是人工智能(“ai”)计算集群。在一些实施例中,所述板卡类似于图8中所示的板卡。

在一些实施例中,所述板卡可以垂直堆叠以形成机架。例如,如图9所示,板卡9011-9018可以垂直堆叠以形成机架9010。在每个机架中,板卡中的某个计算节点可以通过片间互连结构连接到上方或下方相邻板卡中的相应计算节点。例如,如图9所示,板卡9012的计算节点a与板卡9011的计算节点a和板卡9013的计算节点a连接(图9未示出)。在一些实施例中,机架顶部或底部的板卡仅连接到上方或下方的一个相邻板卡的一个计算节点。例如,板卡9011位于机架9010的顶部,因此,板卡9011的计算节点a仅连接到板卡9011下方的板卡9012的计算节点a,因为板卡9011上方没有板卡。在一些实施例中,机架的一部分或整个机架可以安置在服务器中,类似于图3a或图3b中的服务器110和130。可以理解的是,机架也可以通过水平堆叠板卡形成。

在一些实施例中,多个机架可以水平对齐形成计算集群。例如,如图9所示,机架9010-9080水平对齐,机架内每个板卡的计算节点通过片间互连结构连接到左侧或右侧相邻板卡中的相应计算节点。例如,板卡9022的计算节点a连接到板卡9012的计算节点a和板卡9032的计算节点a(图9中未示出)。在一些实施例中,计算集群左侧或右侧的板卡仅被连接到位于左侧或右侧的相邻板卡的一个计算节点。例如,板卡9011位于计算集群的左侧,因此,由于板卡9011的左侧没有板卡,板卡9011的计算节点a仅连接到板卡9011右侧的板卡9021的计算节点a。可以理解的是,计算集群也可以通过垂直堆叠机架形成。

可以理解的是,通过水平和垂直堆叠板卡,如图9所示的计算集群可以不受限制地不断扩大规模。在一些实施例中,安置计算集群的数据中心可以具有顶板,并且所述顶板的高度可能受到限制。因此,机架的高度不会高于顶板的高度。解决此问题的一种方法是在机架的前面或后面添加另一个与机架平行的机架。所述机架顶部板卡上的所述计算节点可与新添加机架的顶部板卡上的计算节点连接。所述连接可以是片间互连结构的一部分。新添加的机架还可以通过添加另一个机架并连接位于机架底部板卡上的计算节点来进一步扩展。因此,计算集群的可扩展性不受数据中心空间尺寸的影响。可以理解的是,所述垂直扩展也适用于水平扩展。

图4、图5、图8和图9所示的超正方互连拓扑结构和图6a-c和图7a-c所示的环形连接的另一个优点是,每一个超正方互连拓扑结构都可以被划分为子部分,每个子部分被分配不同的计算任务。根据本申请一些实施例,图10展示了划分为子部分的示例性超正方互连拓扑结构。可以理解的是,超正方互连拓扑结构可以类似于图5中的所述超正方互连拓扑结构。

根据图10所示,所述超正方互连拓扑结构的计算节点11、12、21、22、13、14、23和24可以分组为一个子部分。环形连接仍然可以由每组水平排列的计算节点形成。例如,可以通过水平排列的计算节点11、12、13和14形成环型连接11-12-14-13-11。在另一示例中,图10所示的超正方互连拓扑结构中的计算节点31、32、41、42、33、34、43、44、51、52、61、62、53、54、63和64可以被分组到一个子部分中,环型连接可以由每组水平或垂直排列的计算节点形成。在另一示例中,图10所示的超正方互连拓扑结构的计算节点15、25、35、45、55和65可以被分组到一个子部分。环形连接可以与图6a-c所示的所述连接相似的方式形成。

在一些实施例中,出于布线的目的,优选正方形分区。例如,包含计算节点31-34、41-44、51-54和61-64的子部分每侧具有四个计算节点,形成正方形。出于布线目的,上述子部分优选于包含计算节点15、25、35、45、55和65的子部分。因此,当系统将计算节点划分为若干子部分以更好地分配计算任务时,该系统可以通过最大化正方形子部分的数量的方式来优化划分计算节点。在一些实施例中,所述系统可以被优化为对每个计算任务首先选择正方形子部分。

可以理解的是,子部分的规格是高度灵活的。例如,每个子部分可以包括8个计算节点或包括超正方互连拓扑结构中的所有计算节点。这种灵活性允许超正方互连拓扑结构根据计算任务的计算需求为每个计算任务分配适当数量的计算节点,从而更有效地利用计算节点。

本公开的实施例进一步提供了一种方法,该方法可以将超正方互连拓扑结构中的计算节点分配给不同的计算任务。根据本公开的一些实施例,图11示出了一种用于在超正方互连拓扑结构中分配计算节点的一个示例性方法的流程图。可以理解的是,图11中的方法1000是在分布式系统(例如,图3a的分布式系统100)中的主机服务器或其他服务器(例如,图3a或图3b的服务器110或130)中执行;还可以理解的是,图11的方法1000是在类似于图5、图9或图10的超正方互连拓扑结构上执行。

在步骤1010中,获取一个计算任务。在一些实施例中,所述计算任务是从用户输入或系统生成中获取。在一些实施例中,计算任务是从存储设备(例如,图3a的存储设备114)获取的。在一些实施例中,计算任务是ai计算任务。在一些实施例中,可同时获取多个计算任务。

在步骤1020中,确定计算任务的硬件负荷。硬件负荷是指适合计算任务的硬件资源数量。在一些实施例中,硬件负荷是基于超正方形互连拓扑结构中的多个计算节点或多个计算节点板卡的数量。被确定适合计算任务的计算节点的数量不能超过超正方互连拓扑结构中计算节点总数。类似地,被确定适合计算任务的计算节点板卡的数量不能超过超正方互连拓扑结构中的板卡的总数。

在步骤1030中,根据硬件负荷,将计算任务分配给所述超正方互连拓扑结构。在一些实施例中,所述分配包括将所述超正方形互连拓扑结构中的所述计算节点或板卡划分为子部分。其中一个子部分包括基于所述计算任务的硬件负荷的足够的计算节点或板卡。例如,所述计算任务可以被分配给与图10所示的计算节点11、12、21、22、13、14、23和24的子部分类似的子部分。在一些实施例中,可能接收到多个计算任务,并且可以将多个计算任务中的每个计算任务分配给单独的子部分。

在一些实施例中,至少一个子部分可以使用片间互连结构形成环形连接,类似于图6a-c或图7a-c所示的环形连接。所述环形连接包括在计算节点之间转发数据包的板间互连。数据包可以从执行计算任务的计算节点生成。在一些实施例中,所有子部分都可以使用片间互连形成至少一个环形连接。

本公开的实施例进一步提供了一种一维路径算法,用于通过使用超正方形互连拓扑结构执行allreduce算法。根据本发明的一些实施例,图12示出了用于在超正方互连拓扑结构上执行allreduce算法的一维路径的示例性实现。如图12所示,allreduce算法可以在由四个连接1、2、3和4连接的四个计算节点1、2、3和4上实现。在一些实施例中,计算节点1、2、3和4类似于图7a-c中的计算节点11、12、13和14,连接1、2、3和4类似于图7a-c中的连接11-12、12-14、14-13和13-11。可以理解的是,allreduce算法可以由图3a的主处理器117或服务器110执行。

在阶段1201,每个计算节点包括一种四个变量的版本,即变量a、b、c和d。变量的每个版本都可以以变量名称和包含变量的计算节点名称的连接来标识。例如,计算节点1中的变量a可以由变量版本a.1标识。在一些实施例中,变量的每个版本可以包含跨越不同计算节点的不同值。例如,计算节点1的变量版本a.1可以包括与计算节点2的变量版本a.2不同的值。

在阶段1202,使用所述连接跨计算节点进行数据传输以整合变量版本。例如,来自计算节点1的变量版本a.1被传输到计算节点2。然后,每个被传输的变量版本都与变量的本地版本整合。例如,在被传输到计算节点2之后,计算节点2中的变量版本a.2整合了变量版本a.1。所述变量的所述整合版本可以以所述变量的名字和在阶段1201包含的各个变量版本的计算节点的名字标识。例如,在变量版本a.1与变量版本a.2整合之后,新的变量版本可以在计算节点2中标识为a.12。

可以使用所述连接在其他计算节点之间引导类似的数据传输,以整合其他变量版本。例如,来自计算节点2的变量版本b.2被传输到计算节点3以形成b.23,来自计算节点3的变量版本c.3被传输到计算节点4以形成c.34,以及来自计算节点4的变量版本d.4被传输到计算节点1以形成d.14。

在阶段1203,使用所述连接跨所述计算节点引导数据传输,以进一步整合变量版本。例如,来自计算节点2的变量版本a.12被传输到计算节点3。然后,每个传输的变量版本都随着变量的本地版本整合。例如,在被传输到计算节点3之后,变量版本a.12与计算节点3中的变量版本a.3整合。所述变量的整合版本可以以变量的名称和在阶段1201阶段包含所述变量的所述版本的计算节点的名称的连接来标识。例如,在变量版本a.12与变量版本a.3整合之后,新的变量版本可以标识为a.123。

可以使用所述连接在其他计算节点之间引导类似的数据传输,以进一步整合其他变量版本。例如,来自计算节点3的变量版本b23被传输到计算节点4,来自计算节点4的变量版本c34被传输到计算节点1,以及来自计算节点1的变量版本d14被传输到计算节点2。

在阶段1204,使用所述连接跨计算节点引导数据传输,以进一步整合变量版本。例如,来自计算节点3的变量版本a.123被传输到计算节点4。然后,每个传输的变量版本都与变量的本地版本整合。例如,在被传输到计算节点4之后,计算节点4中的变量版本a.4整合了变量版本a.123。变量的整合版本可以标记为变量名称和包含阶段1201的所述变量的所述版本的计算节点名称的连接。例如,在用变量版本a.4整合变量版本a.123之后,新的变量版本可以标识为a.1234。

可以使用所述连接在其他计算节点之间引导类似的数据传输,以进一步整合其他变量版本。例如,来自计算节点4的变量版本b.234被传输到计算节点1,来自计算节点1的变量版本c.134被传输到计算节点2,以及来自计算节点2的变量版本d.124被传输到计算节点3。

在阶段1204结束时,每个计算节点包括一个变量的一个版本,该版本完全整合自所述变量的所有版本。例如,计算节点1包括变量版本b.1234,该版本整合自变量b的所有变量版本。为了清楚起见,图12中仅显示了这些变量。

在阶段1205,使用所述连接广播变量版本,引导在计算节点之间的数据传输。例如,来自计算节点4的变量版本a.1234被传输到计算节点1。在阶段1205结束时,每个计算节点包含两个具有完全整合版本的变量,例如,计算节点1包括变量版本a.1234和b.1234。

可以使用所述连接跨其他计算节点引导类似的数据传输,以广播变量版本。例如,来自计算节点1的变量版本b.1234被传输到计算节点2,来自计算节点2的变量版本c.1234被传输到计算节点3,以及来自计算节点3的变量版本d.1234被传输到计算节点4。

在阶段1206,使用所述连接在计算节点之间引导数据传输,以进一步广播变量版本。例如,来自计算节点1的变量版本a.1234被传输到计算节点2。在阶段1206结束时,每个计算节点包括三个具有完全整合版本的变量。例如,计算节点1包括变量版本a.1234、b.1234和c.1234。

使用所述连接跨其他计算节点引导类似的数据传输,以进一步广播变量版本。例如,来自计算节点2的变量版本b.1234被传输到计算节点3,来自计算节点3的变量版本c.1234被传输到计算节点4,来自计算节点4的变量版本d.1234被传输到计算节点1。

在阶段1207,使用所述连接在计算节点之间引导数据传输,以进一步广播变量版本。例如,来自计算节点2的变量版本a.1234被传输到计算节点3,来自计算节点3的变量版本b.1234被传输到计算节点4,来自计算节点4的变量版本c.1234被传输到计算节点1,以及来自计算节点1的变量版本d.1234被传输到计算节点2。在阶段1207结束时,每个计算节点包括所有四个具有完全整合版本的变量。例如,计算节点1包括变量版本a.1234、b.1234、c.1234和d1234。

使用所述连接,在其他计算节点之间的类似的数据传输可被引导,以进一步广播变量版本。例如,来自计算节点3的变量版本b.1234被传输到计算节点4,来自计算节点4的变量版本c.1234被传输到计算节点1,来自计算节点1的变量版本d.1234被传输到计算节点2。

如图12所示,所述allreduce算法可以在四个计算节点1、2、3和4之间的环形连接上执行。由于所述连接1、2、3和4均不包含长连接线,因此,与每个阶段数据传输相关联的延迟被抑制。这是对常规圆环拓扑结构(例如,图2的圆环拓扑结构)中的环形连接的显著改进。

可以理解的是,图12中的所述allreduce算法可以通过在任何方向上传输变量版本来实现。例如,在阶段1202,所述数据传输可以是在相反的方向:来自计算节点1的变量版本a.1被传输到计算节点4,来自计算节点2的变量版本b.2被传输到计算节点1,来自计算节点3的变量版本c.3被传输到计算节点2,以及来自计算节点4的变量版本d.4被传输到计算节点3。后续阶段还可以调整其数据传输的顺序,以便在阶段1207结束时,每个计算节点包含所有四个具有完全整合版本的变量。

还可以理解的是,图12中的所述allreduce算法可以使用阶段1201中任何一组变量版本来执行。例如,在阶段1202,不选择变量版本a.1、b.2、c.3和d.4进行数据传输,而是选择变量版本a.2、b.3、c.4,也可以选择d.1进行数据传输。一般规则是,每组变量版本包括变量a、b、c和d中的每个变量的各一个变量。后续阶段还可以为数据传输调整其变量版本,以便在阶段1207结束时,每个计算节点包含所有四个具有完全整合版本的变量。

还应理解的是,图12中的所述allreduce算法可以在四个以上的计算节点上执行。例如,如图6a-c所示,可以在计算节点11、12、13、14、15和16上形成环形连接。在变量整合的每个阶段,变量的版本沿着所述连接传输,类似于图12中的阶段1202、1203和1204。在变量被广播的每个阶段,一个变量的一个完全整合版本沿着所述连接被传输,类似与图12的阶段1205、1206和1207。

本公开的实施例进一步提供了一种二维路径算法,用于使用超正方互连拓扑结构执行一种allreduce算法。根据本公开的一些实施例,图13示出了在超正方互连拓扑结构上执行一种allreduce算法的二维路由的示例性实现。如图13所示,所述allreduce算法可以在四组计算节点1、2、3、4、5、6、7、8、9、a、b、c、d、e、f和g上实现。可以理解的是,跨越计算节点的每一行或每列的连接可以形成环形连接。在一些实施例中,图13的计算节点类似于图5中的一组16个相邻的计算节点(例如,图5或图10的计算节点31、32、33、34、41、42、43、44、51、52、53、54、61、62、63和64)。可以理解的是,图13中的所述allreduce算法可以由图3a中的主处理器117或服务器110执行。

在阶段1310,每个计算节点包括一种四个变量的版本,即变量a、b、c和d。变量的每个版本都可以以变量名称和包含变量的计算节点名称的连接标识。例如,计算节点1中的变量a可以用变量版本a.1标识。在一些实施例中,变量的每个版本在不同计算节点中间可以包含不同的值。例如,计算节点1的变量版本a.1可以包含与计算节点2的变量版本a.2不同的值(例如,如图1中工作节点a和工作节点b的第一个变量的示例所示)。为了清楚起见,图13只显示了每个计算节点的一种变量版本。

在阶段1320,在阶段1310展示的每个变量版本沿计算节点的每一行被传输和整合三次。在一些实施例中,在阶段1320中的每一行计算节点类似于图12中阶段1202、1203和1204的组合。在阶段1320结束时,每个计算节点包含某个变量的从该变量在所述行中的所有版本中完全整合而来的一个版本。例如,计算节点1包括变量版本b.1234,其是沿着计算节点1、2、3和4的行从变量b的所有变量版本整合而来。在另一个实施例中,计算节点9包括变量版本b.9abc,其是沿着计算节点9、a、b和c的行从变量b的所有变量版本整合而来。

在阶段1330,在阶段1320展示的每个变量版本沿着计算节点的每一列被传输和整合三次。在一些实施例中,阶段1330中计算节点的每一列类似于图12中阶段1202、1203和1204的组合,使用计算节点列(例如,计算节点1、5、9和d)而不是计算节点行。在阶段1330结束时,每个计算节点包括从所述行和所述列的所述变量的所有版本中完全整合而来的某个变量的某个版本。例如,计算节点1包括变量版本b.all,其是从变量版本b.1234、b.5678、b.9abc和b.defg整合获得。换句话说,变量版本b.all是从变量b的所有变量版本中整合获得。在另一个示例中,计算节点7包括变量版本a.all,其是从变量版本a.1234、a.5678、a.9abc和a.defg整合获得。换句话说,变量版本a.all是从变量a的所有变量版本中整合获得。

在阶段1340,在阶段1330展示的每个变量版本沿着计算节点的每一行被传输三次。在一些实施例中,阶段1340中计算节点的每一行类似于图12中阶段1205、1206和1207的组合。在阶段1340结束时,每个计算节点包括具有完全整合版本的所有四个变量。例如,计算节点1包括变量版本a.all、b.all、c.all和d.all(在图13中表示为a/b/c/d.all)。应当理解的是,在阶段1330展示的每个变量版本也可以沿着计算节点的每一列被传输以进行广播。

如图13所示,所述allreduce算法可以使用沿着计算节点的任何行或列的环形连接来执行。由于没有连接包含长连接线,因此,与数据传输每个阶段相关联的延迟被抑制。这是对常规圆环拓扑结构(例如,图2的圆环拓扑结构)中的环形连接的显著改进。

可以理解的是,图13中的所述allreduce算法可以通过在任何方向传输变量版本来执行。例如,在阶段1320,数据传输可以是在列中而不是在行中。随后,在阶段1330的数据传输可以是在行中而不是在列中。

还应理解的是,图13中的所述allreduce算法可以在阶段1201使用任何一组变量版本来执行。例如,在阶段1310不选择变量版本a1、b2、c3和d4用于数据传输,而是选择变量版本a2、b3、c4,和d1用于数据传输。一般规则是,每组变量版本包括变量a、b、c和d中的每个变量的各一个变量。后续阶段还可以为数据传输调整其变量版本,以便在阶段1340结束时,每个计算节点包含所有四个具有完全整合版本的变量。

还应理解的是,图13中的所述allreduce算法不限于在16个计算节点上执行。事实上,图13中的所述allreduce算法可以在计算节点的每一行或每一列可以形成环形连接的任意数量的计算节点上执行。例如,如图5所示,其中显示了36个计算节点,即计算节点11-16、21-26、31-36、41-46、51-56和61-66。环形连接可以沿着计算节点的任何行或列形成。在变量被整合的每个阶段,一个变量的一个版本沿行或列传输,类似于图13中的阶段1320和1330。在变量被广播的每个阶段,变量的完全整合版本沿行或列传输,类似于图13的阶段1340。可以执行所述allreduce算法的其他示例包括图10中的计算节点集11-14和21-14以及图10中的计算节点集15、25、35和45。

本公开实施例还提供了一种在超正方互连拓扑结构中执行计算任务的同步数据的方法。根据本发明的一些实施例,图14示出了用于在超正方互连拓扑结构中为某个计算任务执行同步数据的方法的示例性流程图。可以理解的是,图14的方法1400可由某个分布式系统(例如图3a的分布式系统100)中的主机服务器或其他服务器(例如图3a或图3b的服务器110或130)执行。还应理解的是,图14的方法1400可在类似于图5、图9或图10中的超正方互连拓扑结构上执行。

在执行方法1400之前,超正方互连拓扑结构中的每个计算节点包含要被同步的某个数据版本。在一些实施例中,所述要被同步的数据可以包括多个子数据,并且每个计算节点可以包括每个子数据的一个不同版本。在一些实施例中,要被同步的数据类似于图13中的变量a、b、c和d。每个变量可以是子数据,并且图13中的每个计算节点可以包含变量a、b、c和d的一个版本(例如,图13中的阶段1310)。

在步骤1410中,存储在每个计算节点中的子数据沿着超正方互连拓扑结构中的计算节点阵列的第一维度被同步。所述计算节点阵列的第一维度可以是一行计算节点或一列计算节点。在一些实施例中,在单位时间(例如,一个时钟周期)内,沿着第一维度的每个计算节点接收子数据的某个版本,所述子数据的某个版本是通过某个环形连接上的某个连接从所述行中的另一计算节点传输而来。数据传输一直持续到沿着第一维度的每个计算节点从行中的所有计算节点接收到子数据的所有版本。在一些实施例中,步骤1410中的数据同步类似于图13中的allreduce算法的阶段1320,或者图12中的allreduce算法的阶段1202、1203和1204的组合。

在步骤1420中,存储在每个计算节点中的子数据沿着超正方互连拓扑结构中的计算节点陈列的第二维度被同步。所述计算节点阵列的第二维度可以是与所述第一维度不同的计算节点的列或计算节点的行。例如,如果第一维度是计算节点的某个行,第二维度可能不是计算节点的某个行,第二个维度可以是计算节点的某个列。在一些实施例中,在单位时间(例如,一个时钟周期)内,沿着第二维度的每个计算节点接收子数据的某个版本,所述子数据的某个版本是通过某个环形连接上的某个连接从第二维度的另一个计算节点传输而来。数据传输一直持续到沿着第二维度的每个计算节点从所有计算节点接收到子数据的所有版本。在一些实施例中,步骤1420中的数据同步类似于图13中allreduce算法中的阶段1330,或者图12中allreduce算法中阶段1202、1203和1204的组合。应理解的是,当阵列是一维阵列时,步骤1410可以足够同步数据,并且可能不需要执行步骤1420。

在步骤1430中,存储在每个计算节点中的子数据沿着超正方互连拓扑结构中的计算节点阵列的第三维度被广播。在一些实施例中,计算节点的第三维度可以是计算节点的列或计算节点的行。在一些实施例中,在单位时间(例如,一个时钟周期)内,沿着一行的每个计算节点接收通过某个环形连接上的某个连接从所述行中的另一个计算节点传输的子数据。数据传输一直持续到该行中的所有计算节点从所有计算节点收到子数据。在一些实施例中,步骤1430中的数据同步类似于图13中的allreduce算法的阶段1340,或图12中allreduce算法中阶段1205、1206和1207的组合。应当理解的是,步骤1430中的广播也可以沿着计算节点的每一列执行,类似于图13中的allreduce算法的阶段1340。

因为图14的方法1400可以在超正方互连拓扑结构上执行,所以方法1400中的数据同步可以沿着计算节点的任何行或列的环形连接来执行。由于这些连接最大限度地减少了长连接线的使用,与数据传输的每个阶段相关的延迟被抑制。这是对常规圆环拓扑结构(例如,图2的圆环拓扑结构)中的环形连接的显著改进。

可以理解的是,图14的方法1400可以通过向任何方向上传输子数据来执行。例如,在步骤1410中,可以沿着列而不是行执行数据同步。随后,在步骤1420中的所述数据同步可以在行中而不是在列中执行。

还应理解的是,图14的方法1400可使用子数据的任何组合来执行,类似于图13中的allreduce算法。

还应理解的是,只要计算节点的每一行或每一列可以形成环形连接,就可以在任意数量的计算节点上执行图14的方法1400。例如,如图5所示,其中显示了36个计算节点,即计算节点11-16、21-26、31-36、41-46、51-56和61-66。可以沿着计算节点的任何行或列形成环形连接。在子数据被同步的每个步骤中,一个子数据的一个版本沿着行或列传输,类似于图14的步骤1410和1420。在变量被广播的每个步骤中,沿着行或列传输完全已同步的子数据,类似于图14的步骤1430。

本公开的实施例可以通过在超正方互连拓扑结构中执行allreduce算法的并行路径算法来进一步改进。例如,请重新参考图13,每个计算节点沿着行或列位于环形连接上。假设连接是双向的,并且数据可以同时沿连接正向和反向传输,则每个计算节点都可访问四个环形连接。例如,计算节点1可以访问环形连接1-2-4-3-1、1-3-4-2-1、1-5-d-9-1和1-9-d-5-1。每个环形连接的方向可以分别命名为x-go、x-come、y-go和y-come。因此,图13所示的4*4集群可以同时支持四条路径,x-go和x-come在行中支持4个环,y-come和y-go在列中支持4个环。

由于集群可以同时支持四条路径,需要被同步的所有数据可以分为四组,每组使用被支持的路径之一进行同步。例如,第一组数据可以分别使用x-go、y-go和x-come作为步骤1410、1420和1430中每个步骤的数据传输方向。第二组数据可以分别使用x-come、y-come和y-go作为步骤1410、1420和1430中每个步骤的数据传输方向。第三组数据可以分别将y-go、x-come、y-come用于步骤1410、1420和1430中的每个步骤的数据传输。第四组数据可以分别将y-come、x-go和y-go用于步骤1410、1420和1430中的每个步骤的数据传输。只要每个数据组中每个步骤的路径方向不同,路径就不会发生冲突。所以,数据可以并行地传输和同步,从而显著提高了本公开实施例中的方法和实现的执行效率。

可以理解的是,上述描述的实施例可以通过硬件、软件(程序代码)或硬件和软件的组合来实现。如果通过软件实现,则可以将其存储在以上描述的计算机可读介质中。当由处理器执行时,该软件可以执行所公开的方法。本公开中描述的计算单元和其他功能单元可以通过硬件或软件或硬件和软件的组合来实现。应理解的是,上述模块/单元中的多个模块/单元可组合为一个模块/单元,并且上述模块/单元中每一个可进一步划分为多个子模块/子单元。

实施例还可使用以下条款进一步描述:

1.一种用于同步计算任务数据的方法,用于在多组计算节点之间同步计算任务数据,每组计算节点包括:一组计算节点a-d、一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,并将计算节点d与计算节点b和计算节点c通讯耦合,还包括一组组间互连结构,所述组间互连结构将多组计算节点中的第一组计算节点的计算节点a与第二组计算节点的计算节点a和第三组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b和所述第三组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c和所述第三组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d和所述第三组计算节点的计算节点d通讯耦合,所述第二组计算节点和所述第三组计算节点均与所述第一组计算节点相邻接,其中,所述第二组计算节点和所述第三组计算节点在不同维度上与第一组计算节点对齐,所述方法包括:

使用第一组环形连接在计算节点的第一维度进行数据同步,其中,所述第一组环形连接使用沿所述第一维度通信耦合所述第一组计算节点和所述第二组计算节点的组间互连结构和组内互连结构形成,并且在第一维度中同步数据包括:在单位时间内通过所述第一组环形连接上的连接,在单位时间内沿所述第一维度将子数据从一计算节点传输到另一计算节点;

使用第二组环形连接在所述第一组计算节点和所述第三组计算节点的第二维度中同步数据,其中,所述第二组环形连接使用沿所述第二维度通信耦合所述第一组计算节点和所述第三组计算节点的组间互连结构和组内互连结构形成,并且在第二维度中同步数据包括:在单位时间内通过所述第二组环形连接上的连接,在单位时间内沿所述第二维度的将子数据从一计算节点传输到另一计算节点;以及

使用所述第一组环形连接或所述第二组环形连接,在计算节点的所述第一维度或所述第二维度中广播已同步数据。

2、根据条款1所述的方法,其中,被同步的所述数据包括多个子数据,且每个计算节点包含每个子数据的不同版本。

3、根据条款2所述的方法,其中,使用第一组环形连接在计算节点的第一维度中同步数据还包括:

在一个时钟周期内,行中的每个计算节点接收子数据的一个版本,其中,所述子数据的所述版本是通过所述第一组环形连接上的连接从所述行中的另一计算节点传输得到的;以及

继续数据传输,直到沿着所述第一维度的每个计算节点从所述行中的所有计算节点收到子数据的所有版本。

4.根据条款3所述的方法,其中,使用第二组环形连接在计算节点的第二维度中进行数据同步还包括:

在一个时钟周期内,列中的每个计算节点接收子数据的一个版本,其中,所述子数据的所述版本是通过所述第二组环形连接上的连接从所述列中的另一计算节点传输而来的;以及

继续数据传输,直到沿所述第二维度的每个计算节点从所有计算节点接收到子数据的所有版本。

5、根据条款3所述的方法,其中,使用所述第一组环形连接或所述第二组环形连接,在计算节点的所述第一维度或所述第二维度中广播已同步数据还包括:

在一个时钟周期内,在所述第一维度或所述第二维度中的每个计算节点接收子数据,其中,子数据是依靠所述第一组环形连接上的连接或所述第二组环形连接上的连接,从所述第一维度或所述第二维度的另一计算节点传输而来的;以及

继续数据传输,直到沿所述第一维度或所述第二维度的所有计算节点从所有计算节点收到子数据。

6、根据条款1所述的方法,其中,所述组内互连结构和所述组间互连结构包括片间互连结构。

7、根据条款1所述的方法,其中,所述计算节点为处理器。

8、根据条款1所述的方法,其中,所述计算节点是人工智能训练处理器、ai训练芯片、神经处理单元或图形处理单元。

9、根据条款8所述的方法,其中,所述计算任务是涉及一种allreduce算法的ai计算任务。

10、一种用于同步计算任务数据的系统,用于在多组计算节点之间同步计算任务数据,每组计算节点包括:一组计算节点a-d、一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,并将计算节点d与计算节点b和计算节点c通讯耦合,还包括一组组件互连结构,所述组间互连结构将多组计算节点中的第一组计算节点的计算节点a与第二组计算节点的计算节点a和第三组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b和所述第三组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c和所述第三组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d和所述第三组计算节点的计算节点d通讯耦合,所述第二组计算节点和所述第三组计算节点均与所述第一组计算节点相邻接,其中,所述第二组计算节点和所述第三组计算节点在不同维度上与第一组计算节点对齐,所述系统包括:

存储一组指令的存储器;和

一个或多个配置为执行所述指令集的处理器,以使系统:

使用第一组环形连接在计算节点的第一维度进行数据同步,其中,所述第一组环形连接使用沿第一维度通信耦合所述第一组计算节点和所述第二组计算节点的组间互连结构和组内互连结构形成,并且在第一维度中同步数据包括:在单位时间内通过所述第一组环形连接上的连接,在单位时间内沿所述第一维度将子数据从一计算节点传输到另一计算节点;

使用第二组环形连接在所述第一组计算节点和所述第三组计算节点的第二维度中同步数据,其中,所述第二组环形连接使用沿所述第二维度通信耦合所述第一组计算节点和所述第三组计算节点的组间互连结构和组内互连结构形成,并且在第二维度中同步数据包括:在单位时间内通过所述第二组环形连接上的连接,在单位时间内沿所述第二维度将子数据从一计算节点传输到另一计算节点;以及

使用所述第一组环形连接或所述第二组环形连接,在计算节点的所述第一维度或所述第二维度中广播已同步数据。

11、根据条款10所述的系统,其中,被同步的所述数据包括多个子数据,且每个计算节点包含每个子数据的不同版本。

12、根据条款11所述的系统,其中,所述一个或多个处理器被进一步配置为执行所述指令集,以使所述系统:

在一个时钟周期内,行中的每个计算节点接收子数据的一个版本,其中,所述子数据的所述版本是通过所述第一组环形连接上的连接从所述行中的另一计算节点传输而来的;以及

继续数据传输,直到沿着所述第一维度的每个计算节点从所述行中的所有计算节点收到子数据的所有版本。

13、根据条款12所述的系统,其中,所述一个或多个处理器被进一步配置为执行所述指令集,以使所述系统:

在一个时钟周期内,列中的每个计算节点接收子数据的一个版本,其中,所述子数据的所述版本是通过所述第二组环形连接上的连接从所述列中的另一计算节点传输得到的;以及

继续数据传输,直到沿所述第二维度的每个计算节点从所有计算节点接收到子数据的所有版本。

14、根据条款11所述的系统,其中,所述一个或多个处理器被进一步配置为执行所述指令集,以使所述系统:

在一个时钟周期内,在所述第一维度或所述第二维度中的每个计算节点接收子数据,其中,子数据是依靠所述第一组环形连接上的连接或所述第二组环形连接上的连接,从所述第一维度或所述第二维度的另一计算节点传输而来的;以及

继续数据传输,直到沿所述第一维度或所述第二维度的所有计算节点从所有计算节点收到子数据。

15、根据条款10所述的系统,其中,所述组内互连结构和所述组间互连结构包括片间互连结构。

16、根据条款10所述的系统,其中,所述计算机节点为处理器。

17、根据条款16所述的系统,其中,所述计算节点是人工智能训练处理器、ai训练芯片、神经处理单元或图形处理单元。

18、根据条款17所述的系统,其中,所述计算任务是一种涉及allreduce算法的ai计算任务。

19、一种非临时性计算机可读介质,其存储一组指令集,所述指令集可由设备的一个或多个处理器执行,以使所述设备开启一种同步计算任务数据的方法,用于在多组计算节点之间同步计算任务数据,每组计算节点包括:一组计算节点a-d、一组组内互连结构,所述组内互连结构将计算节点a与计算节点b和计算节点c通讯耦合,并将计算节点d与计算节点b和计算节点c通讯耦合,还包括一组组间互连结构,所述组间互连结构将多组计算节点中的第一组计算节点的计算节点a与第二组计算节点的计算节点a和第三组计算节点的计算节点a通讯耦合,将所述第一组计算节点的计算节点b与所述第二组计算节点的计算节点b和所述第三组计算节点的计算节点b通讯耦合,将所述第一组计算节点的计算节点c与所述第二组计算节点的计算节点c和所述第三组计算节点的计算节点c通讯耦合,并将所述第一组计算节点的计算节点d与所述第二组计算节点的计算节点d和所述第三组计算节点的计算节点d通讯耦合,所述第二组计算节点和所述第三组计算节点均与所述第一组计算节点相邻接,其中,所述第二组计算节点和所述第三组计算节点在不同维度上与第一组计算节点对齐,所述方法包括:

使用第一组环形连接在所述第一组计算节点和所述第二组计算节点的第一维度中同步数据,其中,所述第一组环形连接使用沿所述第一维度通信耦合所述第一组计算节点和所述第二组计算节点的组间互连结构和组内互连结构形成,并且在第一维度中同步数据包括:在单位时间内通过所述第一组环形连接上的连接,在单位时间内沿所述第一维度将子数据从一计算节点传输到另一计算节点;

使用第二组环形连接在所述第一组计算节点和所述第三组计算节点的第二维度中同步数据,其中,所述第二组环形连接使用沿所述第二维度通信耦合所述第一组计算节点和所述第三组计算节点的组间互连结构和组内互连结构形成,并且在第二维度中同步数据包括:在单位时间内通过所述第二组环形连接上的连接,在单位时间内沿所述第二维度的将子数据从一计算节点传输到另一计算节点;以及

使用所述第一组环形连接或所述第二组环形连接,在计算节点的所述第一维度或所述第二维度中广播已同步数据。

20、根据条款19所述的非临时性计算机可读介质,其中,被同步的所述数据包括多个子数据,且每个计算节点包含每个子数据的不同版本。

21、根据条款20所述的非临时性计算机可读介质,其中,所述方法还包括:

在一个时钟周期内,行中的每个计算节点接收子数据的一个版本,其中,所述子数据的所述版本是通过所述第一组环形连接上的连接从所述行中的另一个计算节点传输而来的;以及

继续数据传输,直到沿着所述第一维度的每个计算节点从所述行中的所有计算节点收到子数据的所有版本。

22、根据条款21所述的非临时性计算机可读介质,其中,所述方法还包括:

在一个时钟周期内,列中的每个计算节点接收子数据的一个版本,其中,所述子数据的所述版本是通过所述第二组环形连接上的连接从所述列中的另一个计算节点传输而来的;以及

继续数据传输,直到沿所述第二维度的每个计算节点从所有计算节点接收到子数据的所有版本。

23、根据条款21所述的非临时性计算机可读介质,其中,所述方法还包括:

在一个时钟周期内,在所述第一维度或所述第二维度中的上每个计算节点接收子数据,其中,子数据是依靠所述第一组环形连接上的连接或所述第二组环形连接上的连接,从所述第一维度或所述第二维度的另一计算节点传输而来的;以及

继续数据传输,直到沿所述第一维度或所述第二维度的所有计算节点从所有计算节点收到子数据。

24、根据条款19所述的非临时性计算机可读介质,其中,所述组内互连结构和所述组间互连结构包括片间互连结构。

25、根据条款19所述的非临时性计算机可读介质,其中,所述计算机节点为处理器。

26.根据条款25所述的非临时性计算机可读介质,其中,所述计算节点是人工智能训练处理器、ai训练芯片、神经处理单元或图形处理单元。

27.根据条款26所述的非临时性计算机可读介质,其中,所述计算任务是涉及一种allreduce算法的ai计算任务。

除非另有明确说明,术语“或”包括所有可能的组合,除非不可行。例如,如果声明组件可以包括a或b,则除非另有明确说明或不可行,否则组件可以包括a或者b,或者a和b。作为第二个示例,如果声明组件可以包括a、b或c,则除非另有明确说明或不可行,否则组件可以包括a,b,或者c,或者a和b,或者a和c,或者b和c,或者a、b和c。

在前述描述中,已经参照许多具体细节描述了实施例,这些细节可以因实施而异;可以对所描述的实施例进行某些改编和修改。从本文公开的本发明的具体实施方式考虑,其他实施例对于本领域技术人员来说是显而易见的。本说明书和示例仅被认为是示例性的,并由权利要求说明本发明的真实范围和精神。附图中所示的步骤序列仅用于说明目的,并不旨在限于任何特定的步骤序列。因此,本领域技术人员可以理解,在实现相同方法的同时,这些步骤可以以不同的顺序执行。在附图和说明书中,已经公开了示例性实施例。然而,可以对这些实施例进行许多变化和修改。因此,尽管使用了特定术语,但它们仅在通用和描述性意义上使用,而不是出于限制目的,实施例的范围由权利要求定义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1