CN114764374A - 一种在加速卡系统中执行通信任务的方法和设备 - Google Patents

一种在加速卡系统中执行通信任务的方法和设备 Download PDF

Info

Publication number
CN114764374A
CN114764374A CN202110055097.6A CN202110055097A CN114764374A CN 114764374 A CN114764374 A CN 114764374A CN 202110055097 A CN202110055097 A CN 202110055097A CN 114764374 A CN114764374 A CN 114764374A
Authority
CN
China
Prior art keywords
accelerator
acceleration
unit
communication
cards
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
Application number
CN202110055097.6A
Other languages
English (en)
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Anhui Cambricon Information Technology Co Ltd
Original Assignee
Anhui Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Anhui Cambricon Information Technology Co Ltd filed Critical Anhui Cambricon Information Technology Co Ltd
Priority to CN202110055097.6A priority Critical patent/CN114764374A/zh
Priority to PCT/CN2021/138702 priority patent/WO2022143194A1/zh
Publication of CN114764374A publication Critical patent/CN114764374A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

本公开提供过一种在加速卡系统中执行通信任务的方法,该方法可以实现在计算装置中,其中计算装置可以包括在组合处理装置中,该组合处理装置还可以包括通用互联接口和其他处理装置。所述计算装置与其他处理装置进行交互,共同完成用户指定的计算操作。组合处理装置还可以包括存储装置,该存储装置分别与计算装置和其他处理装置连接,用于计算装置和其他处理装置的数据。

Description

一种在加速卡系统中执行通信任务的方法和设备
技术领域
本公开涉及计算机领域,更具体地,涉及计算机通信领域。
背景技术
目前主流的框架(比如Tensorflow,Pytorch)只使用一个专门的通信队列 (comm_queue)去执行通信任务。当负责通信任务的通信库获取到任务时,通常会将 这个任务直接下发在框架的comm_queue或是通信库内部的任务队列 (internal_queue)中执行,比如负责GPU之间通信的通信库NCCL。目前通信任务都 会下在一个队列中执行,且当通信任务出现错误的情况下,需要将通信任务从头重新 执行一遍,从而降低了整体的通信效率。此外,现有技术中无法实现用户在无感知的 情况下进行通信任务容错或重传的操作。
发明内容
本公开的一个目的是克服现有技术中不能将一个任务下发到多个队列中并行执行的缺陷,不能充分利用通信或运算资源,并且容错能力较低的缺陷。
根据本公开的第一方面,提供一种在加速卡系统中执行通信任务的方法,其中,所述加速卡系统包括多个能够互相通信的加速卡,所述多个加速卡中的一个加速卡能 够通过通信路径与另一个加速卡进行通信;所述方法包括:建立通信任务队列,所述 通信任务队列中包括通信任务和用于对所述通信任务的执行状态进行监控的状态标 识;建立通信任务执行队列,用于通过通信路径在加速卡之间执行通信任务;响应于 所述通信任务的执行,改变所述状态标识符以监控所述通信任务的执行状态。
根据本公开第二方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或 多个处理器运行时,使得所述电子设备执行如上所述的方法。
根据本公开第三方面,提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的技术方案的至少一个有益效果在于区分通信任务队列和通信任务执行队列,实现了用户在无感知的情况下进行任务的容错或重传等操作。本公开的技术方 案还能够将一个总通信任务分配到不同的分通信任务队列中,从而加速总通信任务的 执行。此外,即使某一个分通信任务队列的执行出现错误,也无需重新执行全部分通 信任务,从而减轻任务执行的负担。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公 开的若干实施方式,并且相同或对应的标号表示相同或对应的部分其中:
图1a为披露一个实施方式中加速单元结构示意图
图1b、图2、图3、图4以及图5a-图5c为本披露实施例的加速单元的多个结构 示意图;
图6-图11为本披露实施例的加速组件的多个结构示意图;
图12a-图12c为加速组件表示成网络拓扑的示意图;
图13为本披露实施例的包括多个加速单元的加速装置示意图;
图14为一个实施例中加速装置对应的网络拓扑示意图;
图15为另一个实施例中加速装置对应的网络拓扑示意图;
图16-图20为本披露实施例的包括多个加速组件的加速装置的多个示意图;
图21为又一种加速装置的网络拓扑示意图;
图22为基于加速装置无线扩展的矩阵网络拓扑示意图;
图23为本披露又一个实施例中加速装置示意图;
图24为又一种加速装置的网络拓扑示意图;
图25为又一种加速装置的网络拓扑示意图;
图26为本披露一个实施例中组合装置结构示意图;
图27为本披露一个实施例中板卡的结构示意图;
图28示出了根据本公开一个实施方式的在加速卡系统中执行通信任务的方法流程图;
图29a示出了根据本公开一个实施方式的执行通信任务的方法流程图;
图29b示出了根据本公开一个实施方式的任务下发队列和通信任务执行队列的示意图;
图30a示出了根据本公开一个实施方式的将任务队列中的一个总任务划分为多个分任务的流程图;
图30b示出了根据本公开一个实施方式的在队列中插入标识的示意图;
图31示出了根据本公开另一个实施方式的队列示意图;以及
图32示出了根据本公开一个实施方式的插入第二等待标识被修改的示意图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基 于本公开中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其 他实施例,都属于本公开保护的范围。
应当理解,本公开的权利要求、说明书及附图中的术语“第一”、“第二”、“第 三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本公开的说明书 和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、 元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、 组件和/或其集合的存在或添加。
还应当理解,在此本公开说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本公开。如在本公开说明书和权利要求书中所使用的那样,除非 上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复 数形式。还应当进一步理解,在本公开说明书和权利要求书中使用的术语“和/或”是 指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组 合。
如在本说明书和权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如 果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦 确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所 描述条件或事件]”。
下面结合附图来详细描述本公开的具体实施方式。
图28示出了根据本公开一个实施方式的在加速卡系统中执行通信任务的方法,其中,所述加速卡系统包括多个能够互相通信的加速卡,所述多个加速卡中的一个加 速卡能够通过通信路径与另一个加速卡进行通信;所述方法包括:在操作S2810,建 立通信任务队列,所述通信任务队列中包括通信任务和用于对所述通信任务的执行状 态进行监控的状态标识;在操作S2820,建立通信任务执行队列,用于通过通信路径 在加速卡之间执行通信任务;以及,在操作S2830,响应于所述通信任务的执行,改 变所述状态标识符以监控所述通信任务的执行状态。
首先,下文中将结合附图来详细描述加速卡系统的各种实施方式。本文的加速卡系统由多个能够互相通信的加速卡构成,这些加速卡之间能够通过不同的通信路径来 可通信地连接,从而从一个加速卡出发到达另外一个加速卡时,能够通过不同的通信 路径到达,从而形成不同的通信拓扑结构。需要理解的是,下文中的连接均指可通信 地连接,即每个加速卡之间可互相进行通信和数据传输。
此外,上文所述的加速卡系统可以形成为加速单元、加速组件或加速装置等。需要理解的是,在上下文中虽然根据具体场景使用了不同的术语,但他们本质上均为包 括了多个加速卡的系统。
图1a为披露一个实施方式中加速单元结构示意图。根据本公开的一个实施方式,所述加速卡系统可以包括一个加速单元,该加速单元可以包括M个本单元加速卡,每 个本单元加速卡包括内接端口,每个本单元加速卡通过内接端口与其他的本单元加速 卡相连接,其中,M个本单元加速卡在逻辑上形成为L*N规模的加速卡矩阵,L和N 为不小于2的整数。
如图1a所示,可以通过多个加速卡来形成加速卡矩阵,加速卡之间互相连接, 从而能够进行数据或指令的传递和通信。例如加速卡MC00至MC0N形成了加速卡矩 阵的第0行,加速卡MC10至MC1N形成了加速卡矩阵的第1行,以此类推,加速卡 MCL0至MCLN形成了加速卡矩阵的第L行。
需要理解的是,为了方便上下文的理解,将处于同一个加速单元中的加速卡称为“本单元加速卡”,而将其他加速单元中的加速卡称为“外单元加速卡”。这样的称 呼仅仅在于方便描述,而对本公开的技术方案不形成限制。
每个加速卡可以有多个端口,这些端口可以与本单元加速卡进行连接,也可以与外单元加速卡进行连接。在本公开中,本单元加速卡之间的连接端口可以称为内接端 口,而本单元加速卡与外单元加速卡之间的连接端口可以称为外接端口。需要理解的 是,外接端口和内接端口仅仅是为了方便进行描述,二者可以采用相同的端口。这将 在下文中进行描述。
需要理解的是,M可以是任何整数,可以将M个加速卡形成1*M或者M*1的矩 阵,也可以将M个矩阵形成为其他类型的矩阵。本公开的加速单元并不限定具体的矩 阵大小和形式。
更进一步地,加速卡之间,例如本单元加速卡之间,本单元加速卡与外单元加速卡之间,可以通过单条或者多条通信路径来连接。这将在后文中进行详细描述。
还需要理解的是,在本公开的上下文中,尽管均以矩形网络来描述多个加速卡之间的位置,但实际上,所形成的矩阵在物理空间排列上并不必然是矩阵形态,而是可 以处于任何位置,例如多个加速卡可以形成一条直线或者多个加速卡可以不规则排 列。上述的矩阵仅仅是逻辑上而言的,只要加速卡之间的连接形成矩阵关系即可。
根据本公开的一个实施方式,M可以为4,由此,4个本单元加速卡可以在逻辑 上形成为2*2的加速卡矩阵;M可以为9,由此9个本单元加速卡可以在逻辑上形成 为3*3的加速卡矩阵;M可以为16,由此16个本单元加速卡可以在逻辑上形成为4*4 的加速卡矩阵。M也可以为6,由此6个本单元加速卡可以在逻辑上形成为2*3或3*2 的加速卡矩阵;M还可以为8,由此8个本单元加速卡可以在逻辑上形成为2*4或4*2 的加速卡矩阵。
根据本公开的一个实施方式,每个本单元加速卡与其他至少一个本单元加速卡通过两条路径来连接。
在本公开所记载的拓扑结构中,两个本单元加速卡之间可以通过单条通信路径来连接,也可以通过多条(例如两条)路径来连接,只要端口的数量足够即可。通过多 条通信路径来连接有利于保障加速卡之间通信的可靠性,并且有利于形成不同的拓扑 结构。这将在下文的示例中进行更加详细的解释和描述。
根据本公开的一个实施方式,所述加速卡矩阵中处于四个角的对角本单元加速卡之间通过两条路径来连接。对于一个矩阵而言,优选地可以将处于矩阵对角的两对加 速卡连接起来,对于某些拓扑结构而言,处于对角线位置的加速卡进行连接有助于形 成两条完整的通信回路。这将在下文的示例中进行更加详细的解释和描述。
更具体地,根据本公开的一个实施方式,所述本单元加速卡中的至少一个可以包括外接端口。例如,每个加速单元中可以包括四个本单元加速卡,每个本单元加速卡 可以包括六个端口,并且其中每个本单元加速卡的四个端口为内接端口,用于与其他 三个本单元加速卡连接;至少一个本单元加速卡的其余两个端口为外接端口,用于与 外单元加速卡连接。
需要理解的是,每个本单元加速卡的六个端口中,可以用四个端口来连接本单元加速卡,而空余的两个端口可以用来连接其他加速单元中的加速卡。这些空余的端口 也可以为空闲端口,不连接任何外部设备,也可以直接或间接地与其他设备或端口相 连接。
出于示例和简化的目的,下文中的加速单元、加速组件加速装置以及电子设备均以每个加速单元包括四个加速卡为例来进行说明。需要理解的是,每个加速单元可以 包括更多数量或更少数量的加速卡。
为方便描述,该加速单元可以包括四个加速卡,即第一加速卡、第二加速卡、第 三加速卡和第四加速卡,每个加速卡中均设置有内接端口和外接端口,每个加速卡通 过内接端口与其他三个加速卡相连接。
图1b为本公开一个实施例中加速单元结构示意图。加速单元100包括四个加速卡,这四个加速卡为加速卡MC0、加速卡MC1、加速卡MC2和加速卡MC3。对于四 个加速卡,每个加速卡可以包括外接端口和内接端口,加速卡MC0的内接端口与加 速卡MC1、MC2和MC3的内接端口均相连接,加速卡MC1的内接端口与加速卡MC2、 MC3的内接端口均相连接,加速卡MC2的内接端口与加速卡MC3的内接端口相连接, 即每个加速卡的内接端口与其他三个加速卡的内接端口均相连接。通过四个加速卡的 内接端口的互连可以实现四个加速卡之间的信息交互。本公开实施例利用加速单元中 四个加速卡间的互连,可以提高加速单元的计算能力以及实现高速处理海量数据的目 的,并且使得每个加速卡和其它加速卡之间的路径最短,通信延时最低。
如上文所述,本公开中的加速卡的数量可以不限于四个,而是可以为其他数量。例如,在一个实施例中,加速卡的数目N等于3,每个加速卡中均设置有内接端口和 外接端口,每个加速卡通过内接端口与其他两个加速卡相连接,实现三个加速卡间的 互连。在另一个实施例中,加速卡的数目N等于5,每个加速卡中均设置有内接端口 和外接端口,每个加速卡通过内接端口与其他四个加速卡相连接,实现五个加速卡间 的互连,从而提高加速单元的计算能力,并且实现高速的处理海量数据。在又一个实 施例中,加速卡的数目N大于5,每个加速卡中均设置有内接端口和外接端口,每个 加速卡通过内接端口与其他所有加速卡均相连接,实现N个加速卡间的互连,实现高 速的处理海量数据。
基于图1b提供的加速单元100,进一步的,每个加速卡与其他至少一个加速卡可以通过两条路径来连接。具体的,可以存在例如三种连接方式:第一种连接方式是每 个加速卡可以与另外三个加速卡中的一个加速卡通过两条路径进行连接;第二种方式 是每个加速卡可以与另外三个加速卡中的两个加速卡均通过两条路径进行连接;第三 种方式是每个加速卡可以与另外三个加速卡均通过两条路径进行连接,在这种情况 下,不排除有每个加速卡有更多端口的情况。为了便于理解上述关于两条路径的连接 方式,下面将以第一种连接方式为例并结合图2进行示例性的描述。
图2为本公开另一个实施例中加速单元结构示意图。如图2所示的加速单元200中,每个加速卡与其他至少一个加速卡可以通过两条路径来连接,例如图示中的加速 卡MC0与加速卡MC2之间可以通过两条路径来连接,以及加速卡MC1与加速卡MC3 之间可以通过两条路径来连接。根据这样的设置,两个加速卡之间进行信息交互的链 路(或称路径)可以有两条,如此,当其中某一条链路发生故障时,两个加速卡之间 还有另外一条链路来连接,从而能够有效提高加速单元的安全性。
以上结合图1和图2对根据本公开的加速单元及其多个加速卡之间的连接方式进行了示例性的描述,本领域技术人员应该理解的是,以上描述是示例性的而非限制性 的,例如加速单元中的加速卡的排列方式可以不限于图1和图2中所示的形式,在一 个实施例中,加速单元的四个加速卡可以在逻辑上布设为四边形排列,下面将结合图 3进行描述。
图3为本公开又一个实施例中加速单元结构示意图。如图3所示的加速单元300中,四个加速卡MC0、MC1、MC2和MC3在逻辑上可以布设为四边形排列,四个加 速卡可以占据四边形的四个顶点位置。加速卡MC0、MC1、MC2和MC3之间的线路 呈现四边形,使得线路排列更加清晰,便于设置线路。需要说明的是,图3中示出的 四个加速卡呈矩形或2*2矩阵排列,但这是逻辑互联图,为了描述方便才画成矩形的 形式,具体四边形可以自由设置,例如平行四边形、梯形、正方形等。在实际的布局 布线中,四个加速卡也可以是任意的排列,例如在实际的整机中,四个加速卡是并列 排成一字形的,顺序可以是MC0、MC1、MC2、MC3。还需要理解的是,本实施例中 所述的逻辑四边形是示例性的,实际上多个加速卡的排布形状可以千变万化,四边形 只是其中之一。例如加速卡的数量为五个时,可以逻辑上呈五边形排列。
基于图2提供的加速单元200的连接关系,进一步的,参见图4,图4为本公开 又一个实施例中加速单元结构示意图。如图4所示的加速单元400中,四个加速卡 MC0、MC1、MC2和MC3在逻辑上可以布设为四边形排列,四个加速卡分别占据四 边形的四个顶点位置。如图中进一步示出的,加速卡MC1的内接端口和加速卡MC3 的内接端口之间可以采用两条路径进行连接,加速卡MC0的内接端口与加速卡MC2 的内接端口之间可以通过两条路径来连接。如此对于加速单元400,不仅线路设置便 捷,并且提升了安全性。
图5a为本公开一个实施例中加速单元结构示意图。如图5a所示的加速单元500中,每个加速卡上的数字标记均表示端口,每个加速卡可以包括六个端口,即端口0、 端口1、端口2、端口3、端口4、端口5。其中,端口1、端口2、端口4和端口5为 内接端口,端口0和端口3为外接端口。对于四个加速卡MC0、MC1、MC2和MC3, 每个加速卡的2个外接端口均可以与其他加速单元相连接,用于多个加速单元之间的 互连。每个加速卡的4个内接端口可以用于和本加速单元中的其它三个加速卡互联。
如图5a中进一步示出的,四个加速卡在逻辑上可以呈例如四边形排列,加速卡MC0和加速卡MC2可以呈对角关系,MC0的端口2和MC2的端口2相连接,MC0 的端口5和MC2的端口5相连接,即加速卡MC0和加速卡MC2两者之间可以有两 条链路进行通信。加速卡MC1和加速卡MC3可以呈对角关系,MC1的端口2和MC3 的端口2相连接,MC1的端口5和MC3的端口5相连接,即加速卡MC1和加速卡 MC3两者之间可以有两条链路进行通信。
根据这样的设置,由于每个加速卡有两个外接端口和四个内接端口,且呈对角关系的两对加速卡中,每对加速卡的两个加速卡之间均可以采用两个内接端口进行连接 以形成两条链路,因此可以有效提升加速单元的安全性和稳定性。并且四个加速卡逻 辑上布设的四边形排列,使得整个加速单元的线路布局合理清晰,方便每个加速单元 内的布线操作。进一步需要说明的是,如图5b中所示的四个加速卡之间的互连线路 中,对于加速卡MC1的端口1与MC0的端口1之间的连接线路、加速卡MC0的端 口2与MC2的端口2之间的连接线路、加速卡MC2的端口1与MC3的端口1之间 的连接线路、以及加速卡MC3的端口2与MC1的端口2之间的连接线路,这四条线 路构成了一个竖着的8字形网络,如图5b所示。对于加速卡MC1的端口4与MC2 的端口4之间的连接线路、加速卡MC2的端口5与MC0的端口5之间的连接线路、 加速卡MC0的端口4与MC3的端口4之间的连接线路、加速卡MC3的端口5与MC1 的端口5之间的连接线路,这四条线路构成了一个横着的8字形网络,如图5c所示。 这样的两个全连接方形网络可以形成一个双环结构,具有冗余备份、增强系统可靠性 的作用。
根据本公开的一个实施例,本公开所述的加速卡,可以是Mezzanine Card(简称MC卡),其可以是一块单独的电路板。MC卡上面可以搭载ASIC芯片和一些必要的 外围控制电路。MC卡可以和基板通过扣板连接器连在一起。基板上的电源和控制信 号可以通过扣板连接器传递给MC卡。根据本公开的另一个实施例,本公开所述的内 接端口和/或外接端口可以是SerDes端口。例如在一个实施例中,每一个MC卡可以 提供6个双向SerDes端口,每个SerDes端口具备8路通道以及56Gbps的数据传输速 率,则每个端口的总带宽可以高达400Gbps,其可以支撑加速卡与加速卡之间进行海 量的数据交换,有助于加速单元高速处理海量数据。
上文中所述的SerDes是英文单词串行器(Serializer)和解串行器(De-Serializer) 的合成词,被称为串行解串器。SerDes接口可以被用于构建高性能处理器集群。Serdes 的主要功能是在发送端将多路低速并行信号转换为串行信号,经过传输介质的传输, 最后在接收端将高速串行信号重新转换成低速并行信号,因此其非常适合端到端的长 距离高速传输需求。在另一个实施例中,加速卡中的外接端口可以连接到其他加速单元的QSFP-DD接口上,其中QSFP-DD接口是SerDes技术中常用的一种光模块接口, 其与线缆配合使用可用于和其它外部设备互连。
进一步地,根据本公开的又一个实施例,一个加速单元内部可以搭载4个加速卡,且4个加速卡互联可以采用印制电路板PCB走线完成。在低介电常数的高速板材上, 通过合理的布局布线,可以最大程度的保证信号完整性,进而保证四个加速卡之间的 通信带宽趋向于理论值。
本公开公开的加速单元,在加速单元内部,对于四个加速卡,每个加速卡通过该加速卡的内接端口与其他三个加速卡相连接,每一张加速卡都可以直接和另外三个加 速卡进行通信,这样的通信架构为全连接方形网络拓扑(fully connected quad),这 种全连接网络架构的优势在于每个加速卡和其它加速卡之间的路径最短,总Hop数最 小,延时最低。本公开用Hop来描述系统的时延,Hop在通信中表示跳数,即通信次 数。Hop具体表示从一个节点出发,遍历完网络中所有的节点后回到初始节点的最短 路径。4个加速卡进行互联,所构成的全连接方形网络拓扑延时最短,且其中对角两 个加速卡互联构成的双环结构可以提高系统的健壮性,在单个加速卡出现故障时业务 仍然能够正常运行。在进行各种算术逻辑运算时,双环结构中的每个环可以分别完成 一部分运算,从而提高整体运算效率,并最大化利用拓扑带宽。
以上结合图1a-图5c对根据本公开的加速单元的多个实施例进行了描述,基于上述的加速单元,本公开还公开了一种可以包括多个上述加速单元的加速组件,下面将 结合加速组件的多个实施例进行示例性的描述。
图6为本公开一个实施例中加速组件结构示意图。如图6中所示,加速组件600 可以包括n个上述加速单元,换言之,所述加速卡系统可以体现为一个加速组件,其 包括多个加速单元,即加速单元A1、加速单元A2、加速单元A3、...、加速单元An, 其中加速单元A1和加速单元A2之间通过外接端口相连接,加速单元A2和加速单元 A3之间通过外接端口相连接,即每个加速单元之间通过加速单元的外接端口相连接。 在一个实施例中,加速单元A1中加速卡MC0的外接端口可以与加速单元A2中加速 卡MC0的外接端口相连,加速单元A2中加速卡MC0的外接端口可以与加速单元A3 中加速卡MC0的外接端口相连,即每个加速单元通过加速卡MC0的外接端口连接。
本领域技术人员可以理解的是,本公开中加速单元之间的连接可以不限于加速卡MC0的外接端口的连接,还可以包括例如加速卡MC1的外接端口的连接、加速卡 MC2的外接端口的连接以及加速卡MC3的外接端口的连接中的一种或多种。即本公 开中,加速单元A1与加速单元A2的连接方式可以包括:A1中MC0的外接端口与 A2中MC0的外接端口相连、A1中MC1的外接端口与A2中MC1的外接端口相连、 A1中MC2的外接端口与A2中MC2的外接端口相连、A1中MC3的外接端口与A2 中MC3的外接端口相连中的一种或多种连接方式。类似地,加速单元A2与加速单元 A3的连接方式可以包括:A2中MC0的外接端口与A3中MC0的外接端口相连、A2 中MC1的外接端口与A3中MC1的外接端口相连、A2中MC2的外接端口与A3中 MC2的外接端口相连、A2中MC3的外接端口与A3中MC3的外接端口相连中的一 种或多种连接方式。以此类推可以到加速单元An-1与加速单元An的连接。需要说明 的是,以上描述是示例性的,例如不同加速单元之间的连接可以不限于是标号对应的 加速卡的连接,可以根据需要设置为同标号的加速卡的连接。
需要说明的是,图6中展示了n个加速单元,n大于3,但是加速单元的个数可 以不限于图示中的大于3,还可以设置为例如2个或者3个,两个加速单元之间的连 接关系与上述加速单元A1和A2之间的连接关系相同或相似,三个加速单元之间的 连接关系与上述加速单元A1、A2、A3之间的连接关系相同或相似,此处不再赘述。
另外,加速组件中的多个加速单元的结构可以相同,也可以不相同,图6中为了 展示方便,展示的多个加速单元的结构是相同的,但是实际中,多个加速单元的结构 可以是不同的。例如,有的加速单元中多个加速卡布局是多边形,有的加速单元中多 个加速卡布局呈一条线,有的加速单元中多个加速卡之间通过一条线路进行连接,有 的加速组件中多个加速卡之间通过两条链路进行连接等,有的加速单元包括四个加速 卡,有的加速单元包括三个或五个加速卡等,即每个加速单元的结构可以单独设置, 不同加速单元的结构可相同可不同。
本公开公开的加速组件,不仅加速组件中加速单元内部的加速卡可以进行互连,而且不同的加速单元的加速卡也可以进行互连,从而可以构建混合立体网络。根据这 样的设置,每个加速卡进行处理数据的同时,还可以通过加速单元之间的互连来共享 数据,由于数据的共享可以直接获取数据,减少了数据传播路径和时间,因此对于提 升数据处理效率具有显著作用。
图7为本公开另一个实施例中加速组件结构示意图。如图7中所示,加速组件700可以包括n个前述加速单元,即加速单元A1、加速单元A2、加速单元A3、...、加速 单元An,加速组件700中的多个加速单元在逻辑上可以呈多层结构(图示中以虚线 示出),每一层可以包括一个加速单元,每个加速单元的加速卡通过外接端口与另一 个加速单元中的加速卡相连接。这样层层递进的配置组合使得每个加速卡在高速运算 处理数据的同时,可以通过高速串行链路进行数据的共享,实现加速卡的无限互连, 以满足可定制的算力需求,实现对处理器集群硬件算力的灵活配置。如图中进一步示 出的,每层的加速单元可以包括四个加速卡,加速单元在逻辑上可以布设为四边形排 列,四个加速卡分别布设在四边形的四个顶点位置。
本领域技术人员应该理解的是,以上结合图7所描述的加速组件是示例性的而非限制性的。例如,多个加速单元的结构可以相同或不同。加速组件的层数可以为2层, 3层,4层或者4层以上,层数可以根据需要自由设定。对于每两个相连的加速单元, 二者之间的连接路径数量可以为1条、2条、3条或者4条。为了便于理解,以下将 结合图8-图12进行示例性的描述。
图8为本公开又一个实施例中加速组件结构示意图。如图8中所示,加速组件701中加速单元的个数可以为2个,两个加速单元之间通过一条路径进行连接,具体是可 以通过例如加速单元A1中加速卡MC0的外接端口与加速单元A2中加速卡MC0的 外接端口相连接,可以实现加速单元A1和加速单元A2之间的信息交互。
如图9中所示,加速组件702中加速单元的个数可以为2个,两个加速单元之间 通过两条路径进行连接,加速单元A1中加速卡MC0的外接端口与加速单元A2中加 速卡MC0的外接端口相连接,加速单元A1中加速卡MC1的外接端口与加速单元A2 中加速卡MC1的外接端口相连接。如此,当其中一条路径发生故障时,还有另外一 条线路支持加速单元之间进行通信,进一步提高加速组件的安全性。
下面请参考图10,图10为本公开又一个实施例中加速组件结构示意图。如图10 所示的加速组件703中,加速单元的个数可以为2个,两个加速单元之间通过三条路 径进行连接,加速单元A1中加速卡MC0的外接端口与加速单元A2中加速卡MC0 的外接端口相连接,加速单元A1中加速卡MC1的外接端口与加速单元A2中加速卡 MC1的外接端口相连接,加速单元A1中加速卡MC2的外接端口与加速单元A2中加 速卡MC2的外接端口相连接。如此,即使当其中两条路径发生故障时,还有另外一 条路径支持加速单元之间进行通信,进一步提高加速组件的安全性。
下面请参考图11,图11为本公开又一个实施例中加速组件结构示意图。如图11 所示的加速组件704中,加速单元的个数可以为2个,两个加速单元之间可以通过四 条路径进行连接,例如加速单元A1中加速卡MC0的外接端口与加速单元A2中加速 卡MC0的外接端口相连接,加速单元A1中加速卡MC1的外接端口与加速单元A2 中加速卡MC1的外接端口相连接,加速单元A1中加速卡MC2的外接端口与加速单 元A2中加速卡MC2的外接端口相连接,加速单元A1中加速卡MC3的外接端口与 加速单元A2中加速卡MC3的外接端口相连接。如此,即使当其中三条路径发生故障 时,还有另外一条路径支持加速单元之间进行通信,进一步提高加速组件的安全性。
图12a为加速组件表示成网络拓扑的示意图。如图12a中所示,加速组件705可 以包括两个加速单元,每个加速单元可以包括四个加速卡,每个加速单元中的加速卡 MC1和加速卡MC3之间可以具有两条链路,加速卡MC0和加速卡MC2之间可以具 有两条链路。图12a的左图的加速装置705可以形成右图所示的立体表现形式。图12a 的右图中圆圈均代表加速卡,线条均表示链路连接,圆圈中数字0代表加速卡MC0, 数字1代表加速卡MC1,数字2代表加速卡MC2,数字3代表加速卡MC3。右图表 示的仍是加速组件705,只是作为另外一种表现形式,即展示的是网络拓扑的形式。 右图中竖线中嵌入的数字表示连接的端口数字,例如,两个加速单元中的MC0之间 用端口0进行连接,MC1之间用端口0进行连接,MC2之间用端口3进行连接,MC3 之间用端口3进行连接。
对于图12a中的右图,将一个加速单元视为一个节点,两个节点具有8个加速卡,即两个节点就构成了所谓的8卡互连。每个节点内部的一机四卡互连关系是一定的, 当两个节点互联时,上层节点(即加速单元A1)中MC0和MC1分别通过端口0和 下面的节点(即加速单元A2)的MC0和MC1相连;上层节点的MC2和MC3分别 通过端口3和下层节点的MC2和MC3相连,这种节点拓扑结构称为混合立体网络拓 扑(Hybrid Cube Mesh),即加速组件705为一个混合立体网络拓扑。
在图12a所示的具有8卡的拓扑结构中,也可以形成两个独立的环。如图12b和 图12c所示,这样能够最大限度地利用拓扑带宽来进行规约运算
在图12b中,加速单元A1中的加速卡MC1和MC3通过各自的内接端口5连接, 加速卡MC0和MC2通过各自的内接端口5连接,而加速卡MC2和MC3通过各自的 内接端口1连接;而加速单元A1中的加速卡MC1以及加速单元A2中的加速卡MC1 通过各自的外接单口0相连接,加速单元A1中的加速卡MC0和加速单元A2中的加 速卡MC0通过各自的外接端口0相连接。由此,在图12中的8个卡中形成一个独立 的环。
在图12c中,加速单元A1中的加速卡MC1和MC3通过各自的内接端口2连接, 加速卡MC0和MC2通过各自的内接端口2连接,而加速卡MC0和MC1通过各自的 内接端口1连接;而加速单元A1中的加速卡MC2以及加速单元A2中的加速卡MC2 通过各自的外接单口3相连接,加速单元A1中的加速卡MC3和加速单元A2中的加 速卡MC3通过各自的外接端口3相连接。由此,在图12中的8个卡中形成另一个独 立的环。
上面仅仅示出了两种示例性的连接方式,但实际上,两个加速单元之间的四条连接路径实际上等效的,因此,可以采用这四条路径中的任意一条至三条来连接两个加 速单元,并与每个加速单元内的加速卡形成环形连接。这里将不再赘述。
图13为本公开又一个实施例中加速装置示意图。如图13中所示,加速装置800 可以包括n个上述加速单元,即加速单元A1、加速单元A2、加速单元A3、...、加速 单元An,加速装置800中的多个加速单元在逻辑上呈多层结构(图中以虚线示出), 这里的多层可以包括奇数层或者偶数层,每一层可以包括一个加速单元,每个加速单 元的加速卡通过外接端口与另一个加速单元中的加速卡相连接,其中,加速单元A1 和加速单元A2之间通过外接端口相连接,加速单元A2和加速单元A3之间通过外接 端口相连接,以此类推加速单元An-1和加速单元An之间通过外接端口相连接。并且 最后一个加速单元可以与第一个加速单元相连接,从而所述多个加速单元首尾相连形 成环形结构,例如图示中的加速单元An的加速卡MC0的外接端口与加速单元A1的 加速卡MC0的外接端口相连。这样层层递进的配置组合使得每个加速卡在高速运算 处理数据的同时,可以通过高速串行链路进行数据的共享,实现加速卡的无限互连, 以满足可定制的算力需求,实现对处理器集群硬件算力的灵活配置。
需要说明的是,本公开中的加速装置中加速单元的连接关系有多种情况,在前文中已经进行了详细描述,具体可参照例如上述图6中加速单元的连接关系的描述内容, 在此不再赘述。另外,最后一个加速单元与第一个加速单元相连接的方式有多种,具 体可以包括:加速单元A1中MC0的外接端口与An中MC0的外接端口相连、加速 单元A1中MC1的外接端口与An中MC1的外接端口相连、加速单元A1中MC2的 外接端口与An中MC2的外接端口相连、加速单元A1中MC3的外接端口与An中 MC3的外接端口相连中的一种或多种连接方式。为了便于理解,以下将结合图14和 图15进行示例性的描述。在下面的描述中,本领域技术人员可以理解的是,图14和 图15所示的加速装置是图13所示的加速装置800的多种具体化表现形式,因此关于 图13的加速装置800的相关描述也可以适用于图14和图15中的加速装置。
参考图14,图14为一个实施例中加速装置对应的网络拓扑示意图。如图14所示 的加速装置801可以由四个加速单元组成,圆圈均代表加速卡,线条均表示链路连接, 圆圈中数字0代表加速卡MC0,数字1代表加速卡MC1,数字2代表加速卡MC2, 数字3代表加速卡MC3;图中竖线中嵌入的数字表示连接的端口数字。最后一个加速 单元与第一个加速单元相连接,总hop数为5次。每一个加速单元为一个节点,通过 节点间的互联可以实现4个节点16卡的互连,四个加速单元组成一个小集群,内部 互联,称为一个超级计算集群super pod。这种拓扑是超大规模集群的主推形态,采用 高速SerDes端口,总Hop数为5次,延时最低。集群的可管理性较好,鲁棒性也比 较好。
参考图15,图15为另一个实施例中加速装置对应的网络拓扑示意图。图15与图 14的区别在于,图15中所示加速装置802的加速单元数量更多。从图示中可以看出, 加速装置802的最后一个加速单元与第一个加速单元相连接。根据这样设置的加速装 置,总hop数为节点数加一,即总hop数为加速单元的个数加一。
上面结合图13-图15对包括多个加速单元的加速装置进行了示例性的描述,根据本公开的技术方案,还提供了一种可以包括多个前述加速组件的加速装置,以下将结 合多个实施例进行详细描述。
图16为本公开又一个实施例中加速装置示意图,本公开的加速系统可以实现为一个加速装置。加速装置900可以包括m个前述加速组件,每个加速组件中,除了加 速组件内部需要进行加速单元间的连接的外接端口外,还有空闲的外接端口,加速组 件之间通过空闲的外接端口相互连接,其中,加速组件B1中加速单元A1的加速卡 MC1的外接端口可以与加速组件B2中加速单元A1的加速卡MC1的外接端口相连接, 加速组件B2中加速单元A1的加速卡MC1的外接端口可以与加速组件B3中加速单 元A1的加速卡MC1的外接端口相连接,依次类推,多个加速组件互相连接。可以理 解的是,图16所示的加速装置是示例性的而非限制性的,例如,多个加速组件的结 构可以相同或不同。还例如,不同加速组件之间通过空闲的外接端口连接的方式可以 不限于图16中所示的方式,还可以包括其他方式。为了便于理解,以下将结合图17- 图25进行示例性的描述。
基于图16提供的加速装置,进一步的,参考图17,图17为又一个实施例中加速 装置对应的网络拓扑示意图,加速装置901可以包括两个加速组件,加速组件B1可 以包括四个加速单元,加速组件B2可以包括四个加速单元,加速组件B1中第一个加 速单元与加速组件B2中第一个加速单元相连接,加速组件B1中最后一个加速单元与 加速组件B2中最后一个加速单元相连接。此种网络拓扑下的总hop数为9。本领域 技术人员可以理解的是,图17中每个加速组件中由多个加速单元构成的网络结构是 逻辑上的,在实际应用中多个加速单元的排布位置可以根据需要进行调整。每个加速 组件中的加速单元的数量可以不限于图示中的四个,可以根据需要设置的更多或者更 少,例如可以设置为六个、八个等。
基于图16提供的加速装置,进一步的,参考图18,图18为本公开又一个实施例 中加速装置示意图,加速装置902可以包括四个加速组件即加速组件B1、B2、B3和 B4。四个加速组件中,每个加速组件可以包括两个加速单元A1和A2,每个加速组件 可以通过加速单元A1和A2中的一个与其他加速组件的A1和A2中的一个相互连接。 例如,加速组件B1中的加速单元A1与加速组件B2中的加速单元A1相连接,加速 组件B2中的加速单元A1与加速组件B3中的加速单元A1相连接,加速组件B3中 的加速单元A1与加速组件B4中的加速单元A1相连接,这里的连接都是通过加速单 元的外接端口进行连接。
需要说明的是,加速组件之间的连接方式除了图18中显示的连接方式外还可以有很多种。例如,加速组件之间的连接方式具体可以包括:加速组件B1中的加速单 元A1或者A2与加速组件B2中的加速单元A1或者A2相连接,加速组件B2中的加 速单元A1或A2与加速组件B3中的加速单元A1或A2相连接,以及加速组件B3中 的加速单元A1或者A2与加速组件B4中的加速单元A1或A2相连接。
基于图18提供的加速装置,进一步的,请参考图19,图19为本公开又一个实施 例中加速装置示意图。如图19所示的加速装置903中,每个加速组件可以通过第一 加速单元和第二加速单元中的一个,利用两条路径与其他加速组件的第一加速单元和 第二加速单元中的一个相互连接。例如图示中的加速组件B1中的第一加速单元(例 如加速单元A1)与加速组件B2中的第一加速单元(例如加速单元A1)可以通过两 条路径相连接,加速组件B2中的加速单元A1与加速组件B3中的加速单元A1通过 两条路径相连接,加速组件B3中的加速单元A1与加速组件B4中的加速单元A1通 过两条路径相连接。
需要说明的是,图19中标记的是两条路径连接,实际上还可以包括两条以上的 路径连接的情况。加速组件之间的连接方式除了图19中所示的连接方式,还可以包 括其他方式,例如加速组件B1中的加速单元A1或者A2可以利用两条路径与加速组 件B2中的加速单元A1或者A2相连接,加速组件B2中的加速单元A1或A2可以利 用两条路径与加速组件B3中的加速单元A1或A2相连接,以及加速组件B3中的加 速单元A1或者A2可以利用两条路径与加速组件B4中的加速单元A1或A2相连接。
基于图16提供的加速装置,进一步的,请参考图20,图20为本公开又一个实施 例中加速装置示意图,加速装置904包括四个加速组件,分别是加速组件B1、加速 组件B2、加速组件B3、加速组件B4,每个加速组件包括两个加速单元,每个加速单 元包括两对加速卡。每个加速单元中,MC0和MC1是第一对加速卡,MC2和MC3 是第二对加速卡。其中,加速组件B1的加速单元A1的第二对加速卡与加速组件B2 的加速单元A2的第二对加速卡相连;加速组件B2的加速单元A2的第一对加速卡与 加速组件B3的加速单元A1的第一对加速卡相连;加速组件B3的加速单元A2的第 二对加速卡与加速组件B4的加速单元A1的第二对加速卡相连;加速组件B4的加速 单元A1的第一对加速卡与加速组件B1的加速单元A2的第一对加速卡相连。
参考图21,图21是又一种加速装置的网络拓扑示意图。图21所示加速装置905 是图20所示加速装置904的一个具体化形式,因此上述关于加速装置904的相关描 述也可以适用于图21中的加速装置905。如图21中所示,加速装置905的每个加速 组件可以形成一个混合立体网络单元,每个混合立体网络单元内部的互联关系可以如 图中所示,实现加速装置905的8节点32卡的互连。四个加速组件可以通过例如 QSFP-DD接口和电缆实现多卡多节点的互连,形成矩阵网络拓扑。
具体地,本实施例中的加速组件B1的上层节点的加速卡MC2、MC3的端口0可 以分别和加速组件B2的下层节点的加速卡MC2、MC3相连,加速组件B2的下层节 点的MC0和MC1的端口3可以分别与加速组件B3的上层节点的MC0和MC1相连, 加速组件B3的下层节点的MC2和MC3的端口0可以分别与加速组件B4的上层节点 的MC2和MC3相连,加速组件B4的上层节点的MC0和MC1的端口3可以分别与 加速组件B1的下层节点的MC0和MC1相连。这样设置的混合立体网络之间的互联 可以构成两个双向环结构(如上文中结合图5b、图5c,图12b和图12c所描述的那样), 具有较好的可靠性和安全性等优点,并且适用于深度学习训练,运算效率高。对于加 速装置905中,由8个节点构成的矩阵网络拓扑,总Hop数为11次。
进一步地,如图21中所示,同一个加速组件中不同加速单元中的第一对加速卡 和第二对加速卡可以间接连接。例如,加速组件B1中的上层加速单元的加速卡MC0 和MC1与下层加速单元的加速卡MC2和MC3间接连接。
在图21的网络拓扑基础上,以矩阵网络拓扑为基本单元可以进一步扩展成更大的网络拓扑,图22为基于加速装置无线扩展的矩阵网络拓扑示意图。如图22所示, 加速装置906中可以包括多个加速组件,每个加速组件(图中以方框示出)可以包括 多个加速单元(未示出立体图,可参考图21的加速组件结构),每个加速单元可以 包括例如图示中的四个加速卡互连,因此该矩阵网络拓扑理论上可以无限扩展。
基于图16提供的加速装置,进一步的,请参考图23,图23为本公开又一个实施 例中加速装置示意图,加速装置908可以包括m(m 2)个加速组件,每个加速组件 可以包括n(n2)个加速单元,并且m个加速组件可以呈环形连接。其中,加速组 件B1的加速单元An可以与加速组件B2的加速单元A1相连接,加速组件B2的加 速单元An可以与加速组件B3的加速单元A1相连接,以此类推到加速组件Bm,加 速组件Bm的加速单元An可以与加速组件B1的加速单元A1相连接,从而这m个加 速组件首尾相连,呈环形连接。
基于图23,请参考图24,图24是又一种加速装置的网络拓扑示意图,加速装置 909可以包括6个加速组件,每个加速组件可以包括两个加速单元,每个加速组件的 第二个加速单元可以与下一个加速组件的第一个加速单元相连,形成了12个节点48 卡的互联,形成更大的矩阵网络拓扑,此种网络拓扑下的总Hop为13次。
基于图24,请参考图25,图25是又一种加速装置的网络拓扑示意图,加速装置 910包括8个加速组件,每个加速组件包括两个加速单元,每个加速组件的第二个加 速单元可以与下一个加速组件的第一个加速单元相连,形成了16个节点64卡的互联, 形成更大的矩阵网络拓扑,此种网络拓扑下的总Hop为17次。
在图25的基础上可以一直纵向扩展,形成例如20个节点80卡、24个节点96卡 等超大规模矩阵网络。理论上可以一直无限扩展下去,总Hop数为节点数加一。通过 优化节点间的互联方式,可以使得整个系统的延时最小,能够最大限度的满足系统在 处理海量数据的同时对实时性的要求。
上面结合图16-图25对包括多个加速组件的加速装置进行了示例性的描述,本领域技术人员可以理解的是,上面的描述是示例性的而非限制性的,例如加速组件的数 量、结构以及加速组件之间的连接关系等均可以根据需要进行调整。本领域技术人员 还可以根据需要将上述多个实施例组合形成加速装置,也在本公开的保护范围内。
另外,需要说明的是,本公开中所述的加速卡矩阵、全连接方形网络(拓扑)、 混合立体网络(拓扑)、矩阵网络(拓扑)等都是逻辑上的,具体的布设形式可以根 据需要进行调整。
本公开所公开的拓扑结构还可以进行数据的规约运算。规约运算可以在每个加速卡,每个加速单元以及在加速装置中进行。具体的操作步骤可以如下。
以规约求和运算为例,在一个加速单元中进行的规约运算过程可以包括:将第一个加速卡中存储的数据传递到第二个加速卡中,并在第二个加速卡中对原先存储在第 二个加速卡中的数据以及从第一个加速卡中接收的数据进行加法运算;接下来,再将 在第二个加速卡中的加法运算结果传递到第三个加速卡中,再进行加法运算,以此类 推,直到加速卡中存储的所有数据都进行了加法运算,并且每个加速卡均接收到了最 终的运算结果。
以图4所示的加速单元为例,加速卡MC0中存储了数据(0,0),加速卡MC1 中存储了数据(1,2),加速卡MC2中存储了数据(3,1),以及加速卡MC3中存储 了数据(2,4)。可以将加速卡MC0中的数据(0,0)传递到加速卡MC1中,进行了 加法运算之后得到结果(1,2);接下来,将结果(1,2)传递到加速卡MC2中,得到 下一个结果(4,3);然后,再将该下一个结果(4,3)传递到加速卡MC3中,得到最 终的结果(6,7)。
此后,在本公开的规约运算中,继续将最终的结果(6,7)传递到每个加速卡MC0、MC1,MC2和MC3中,从而所有加速卡中均存储了数据(6,7),从而在一个加速单 元中完成了规约运算。
图4所述的加速单元,可以形成两个独立的环,每个环可以完成一半数据的规约运算,从而加快运算速度,提高运算效率。
另外,上述加速单元在进行规约运算时,也可以实现多个加速卡并发计算,从而加快运算速度。比如,加速卡MC0中存储了数据(0,0),加速卡MC1中存储了数据 (1,2),加速卡MC2中存储了数据(3,1),以及加速卡MC3中存储了数据(2,4)。可以将 加速卡MC0中的部分数据(0)传递到加速卡MC1中,进行了加法运算之后得到结果 (1),同步将加速卡MC1中的一部分数据(2)传递到加速卡MC2,进行了加法运算之后 得到结果(3),从而实现了加速卡MC1和MC2的并发运算;以此类推,完成整个规约 运算。
上述的并发计算还可以包括成组加速单元先进行加法运算,再把本组加速单元的运算结果与另一组加速单元的运算结果进行规约运算。例如,加速卡MC0中存储了 数据(0,0),加速卡MC1中存储了数据(1,2),加速卡MC2中存储了数据(3,1), 以及加速卡MC3中存储了数据(2,4),可以将加速卡MC0中的数据传递到加速卡 MC1中进行运算以得到第一组结果(1,2);同步或异步地,可以将加速卡MC2中的 数据传递到加速卡MC3中进行运算以得到第二组结果(5,5)。接下来,再将第一组 结果与第二组结果进行运算得到最终的规约结果(6,7)。
类似地,除了在一个加速单元中进行规约运算之外,也可以在加速组件或加速装置中进行规约运算。需要理解的是,加速装置也可以认为是首尾连接的加速组件。
当在加速组件或者加速装置中进行规约运算时,可以包括:将同一加速单元的加速卡中的数据进行第一规约运算以在每个加速单元中得到第一规约结果;将多个加速 单元中的第一规约结果进行第二规约运算,以得到第二规约结果。
同样以规约求和运算为例,上述的第一个步骤已经在上文中进行了描述,对于包括多个加速单元的加速装置,可以首先在每个加速单元中进行局部的规约运算,当每 个加速单元中的规约运算完成之后,同一个加速单元中的加速卡将获取到局部规约运 算的结果,这里称为第一规约结果。
接下来,可以将所有加速单元中的第一规约结果在相邻的加速单元中进行传递并进行加法运算。由此,与在一个加速单元中进行规约运算类似,第一加速单元将第一 规约结果传递到第二加速单元中,在第二加速单元的加速卡中分别进行了加法运算之 后,再进行结果的传递和加法运算。在进行了最后一次加法运算之后,再将最终的结 果传导到每一个加速单元中。
需要指出的时,由于上文中的加速组件并不一定首尾连接,因此在将最终结果传导到每一个加速单元的情况下,可以反向传导,而不是如加速单元首尾连接时那种循 环传导。本公开的技术方案对于如何传导最终结果并不做具体限定。
更进一步地,根据本公开的一个实施方式,所述加速装置还可以配置为进行规约运算,包括:将同一加速单元的加速卡中的数据进行第一规约运算以得到第一规约结 果;将同一加速组件的多个加速单元中的第一规约结果进行中间规约运算,以得到中 间规约结果;将多个加速组件中的中间规约结果进行第二规约运算,以得到第二规约 结果。
在该实施方式中,可以首先在同一个加速单元中进行规约运算,这已经在上文中进行了描述,这里将不再赘述。
接下来,可以在每个加速组件中进行规约运算,使得每个加速组件中每个加速卡获取到本加速组件中的局部规约结果;接下来,再以加速组件为单位,在多个加速组 件中进行规约运算,从而使得每个加速卡都获取到加速装置中的全局规约结果。
上面介绍了加速卡系统的各种实施方式,下面将介绍基于该加速卡系统的进行通信的更具体的方法。
在本公开中,通信任务队列和通信任务执行队列是分开的,区分通信任务队列和通信任务执行队列可以使得用户在无感知的情况下进行任务的容错或重传等操作。
在本公开中,可以将通信任务作为异步任务下发到加速卡系统中的任意一个加速卡上,并形成通信任务队列,通信任务队列和通信任务执行队列可以处于不同的加速 卡上。同一个通信队列中的通信任务将被依次执行。对这些通信任务的执行可以由另 外的加速卡来完成,从而通信任务队列和通信任务执行队列处于不同的加速卡上。
优选地,对于某些数据量比较大的通信任务,还可以将其拆分为多个通信任务来执行,同一个队列上的通信任务会按照任务下发的顺序串行执行,而不同队列上的任 务可以并发执行,由此,一个总通信任务在被划分为多个分通信任务并并行之后,将 极大地提升通信任务的执行效率。对于诸如Allreduce之类的通信任务,数据可以通 过不同的通信路径从一个加速卡传送到另外一个加速卡,因此,当一个总通信任务被 划分为多个并行执行的分通信任务后,可以通过不同的通信路径来执行这些分通信任 务。
以图5a-图5c所示的加速卡连接方式为例,当需要将数据从加速卡MC1传送到 加速卡MC3时,则数据可以通过如下多条通信路径来传送:
1、如图5b所示,数据可以从加速卡MC1的1号端口传送到加速卡MC0的1号 端口,再从加速卡MC0的2号端口传送到加速卡MC2的2号端口,最后从加速卡 MC2的1号端口传送到加速卡MC3的1号端口;
2、如图5b所示,数据还可以从加速卡MC1的2号端口直接传送到加速卡MC3 的2号端口;
3、如图5c所示,数据可以从加速卡MC1的4号端口传送到加速卡MC2的4号 端口,再从加速卡MC2的5号端口传送到加速卡MC0的5号端口,最后从加速卡 MC0的4号端口传送到加速卡MC3的4号端口;
4、如图5c所示,数据还可以从加速卡MC1的5号端口直接传送到加速卡MC3 的5号端口。
由此可见,在公开的技术方案中,两个加速卡之间的通信可以通过多条通信路径来进行,换言之,两个加速卡之间的通信可以通过不同的拓扑结构来进行。由此,当 将一个总通信任务划分为多个分通信任务时,每个分通信任务可以通过不同的通信路 径来执行。
需要理解的是,上面结合图5a-图5c的描述仅仅是一个简单的示例,当加速卡系统包含更多的加速卡时,则通信路径会更加复杂和多样,由此也可以将总通信任务划 分为更多数量的分通信任务。
在通信任务队列中,可以设置多个状态标识,这些状态标识可以监视通信任务的执行情况,并也可以控制其他通信任务的执行情况。通信任务的执行会改变状态标识, 而状态标识的改变也会相应地改变其他通信任务的执行。这些状态标识将在下文中进 行更详细的描述。
根据本公开的一个实施方式,虽然可以将通信任务队列加载到任何一个加速卡上,但优选地,可以将通信任务队列加载到低负荷的加速卡上。需要理解的是,当多 个加速卡都参与运算和通信时,每个加速卡的负载可能有所不同,可以优选地选择低 负荷的加速卡来承载通信任务队列。在加速卡可以接收来自于主机或其他加速卡的通 信任务,并形成队列,并控制队列中各通信任务的执行。这样的方式有助于充分利用 加速卡资源,提升系统的整体运行效率。
图29a示出了根据本公开一个实施方式的执行通信任务的方法流程图;图29b示出了根据本公开一个实施方式的任务下发队列和通信任务执行队列的示意图。
如图29a所示,根据本公开的一个实施方式,本公开的方法进一步包括:在操作S2910,将所述通信任务队列中的一个总通信任务划分为多个分通信任务,每个分通 信任务处于不同的通信任务执行队列中;在操作S2920,通过不同的通信路径并行地 执行所述多个分通信任务;以及在操作S2930,响应于所述分通信任务执行完毕,使 得所述总通信任务执行完毕。
下面结合图29b来详细描述上述的方法。
在图29b中包括了两种类型的队列,即通信任务队列LQ和通信任务执行队列PQ,通信任务队列中可以接收多个总通信任务,例如总通信任务A,B和C等等,这些总 通信任务A、B和C在进入通信任务队列LQ时,串行地组合在一起,执行顺序为A、 B和C,也就是说,在通信任务A执行时,通信任务B和C需要等待,而通信任务B 只有等到通信任务A执行完毕之后才能执行;而通信任务C需要等待通信任务B执 行完毕之后才能执行。这样的任务执行方式无法充分利用系统的并行运行资源,特别 是当某一个通信任务的执行时间特别长或通信数据量特别大的时候,其他通信任务的 执行会明显受到阻塞,从而系统性能受到影响。
可以将通信任务队列LQ中的通信任务视为总通信任务,并将总通信任务划分为多个并行执行的分通信任务,并放置在通信任务执行队列PQ中执行。当一个总通信 任务被划分为多个分通信任务并行执行时,可以显著地提升任务的执行效率。
在本公开中,以总通信任务B为例,可以将该总通信任务B划分为多个分通信任 务b1,b2等等,这里以两个分通信任务b1和b2为例来进行说明。需要说明的是, 分通信任务的划分数量可以是其他数量,这可以根据加速卡系统的拓扑结构来确定。 例如,如果从一个加速卡到达另外一个加速卡的通信路径越多,那么可以将总通信任 务划分为更多的分通信任务,反之则可以将总通信任务划分为更少的分通信任务;或 者总通信任务涉及的数据量越大,则可以将其划分为更多的分通信任务。
当将总通信任务B划分为分通信任务b1和b2,并将这些分通信任务分别置于不 同的通信任务执行队列PQ1和PQ2中之后,可以在通信任务执行队列PQ1和PQ2中 并行地执行这两个分通信任务b1和b2。
总通信任务B与分通信任务的执行需要满足如下规则:1、当总通信任务B还未 开始执行时,分通信任务b1和b2也应当处于未开始状态;2、当总通信任务B开始 执行时,分通信任务b1和b2也应当开始执行;3、通信任务队列LQ中处于任务B 之后的其他任务(例如C)需要等待任务B执行完毕之后才能执行;4、当分通信任 务b1和b2全部执行完毕之后,总通信任务B也应当执行完毕。
图30a示出了根据本公开一个实施方式的将通信任务队列中的一个总通信任务划分为多个分通信任务的流程图。
由此,根据本公开的一个实施方式,将通信任务队列中的一个总通信任务划分为多个分通信任务S2910包括:在操作S29110,设置允许所述总通信任务开始执行的第 一写入标识;在操作S29120,设置禁止所述分通信任务开始执行的第一等待标识;以 及,在操作S29130,当所述第一写入标识未被执行时,执行所述第一等待标识以禁止 所述分通信任务开始执行。
图30b示出了根据本公开一个实施方式的在队列中插入标识的示意图。下面结合图30b来详细描述图30a的具体实施方式。
首先,为了控制通信任务B的执行,需要设置一个写入标识,换言之,需要在待 执行的通信任务之前插入一个写入标识,这里示例性表示为F0,只有执行到该写入标 识F0的时候,或者当该写入标识F0被改变为允许执行接下来的任务时,后续的通信 任务B才开始执行。而如果没有执行到该写入标识F0,则相应的通信任务并不开始 执行。可以通过原子操作(Atomic Operation)来插入该写入标识。所谓原子操作是指 不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会 有任何上下文切换。
相应地,可以在每个分通信任务之前插入等待标识f0,等待标识表示禁止该标识之后的分通信任务执行。需要理解的是,图30b中的第一写入标识F0和等待标识f0 虽然采用了不同的名称来命名,但写入标识F0和等待标识f0指向同一个标识,以检 测该同一个标识是否发生改变。还需要理解的是,图30b所示的第一写入标识F0和 等待标识f0的插入位置仅仅是为了方便理解,而并不必然如图30b那样插入在分通信 任务中。
根据本公开的一个实施方式,并行地执行所述多个分通信任务包括:响应于所 述第一写入标识被执行,关断所述第一等待标识,从而并行地执行所述多个分通信任 务。
总通信任务之前的写入标识F0和等待标识f0呈现关联的关系,只有当写入标识F0允许执行后续的总通信任务时,才结束等待标识f0,并开始运行相应的分通信任务, 而如果写入标识F0不允许执行后续的总通信任务,则等待标识f0也使得分通信任务 的执行处于等待状态。
图31示出了根据本公开另一个实施方式的队列示意图。
根据本公开的一个实施方式,可以设置第二等待标识,以禁止执行所述总通信 任务之后的其他通信任务。
如图31所示,可以在第一写入标识后插入第二等待标识,当执行到该第二等待 标识时,则表明该当前总通信任务之后的其他总通信任务需要处于等待状态,在该当 前总通信任务没有执行完毕之前,其他总通信任务不能开始执行。
根据上面的描述可以看出,当执行到第一写入标识F0时,该第一写入标识F0 所对应的总通信任务B开始执行,即,该总通信任务B的分通信任务b1和b2结束等 待状态并开始执行;此后,执行到第二等待标识F1时,则总通信任务B之后的其他 任务进入等待状态,在执行总通信任务B的时候并不执行。
图32示出了根据本公开一个实施方式的设置第二等待标识被修改的示意图。
根据本公开的一个实施方式,每当一个分通信任务执行完毕,则修改所述第二 等待标识F1,直至所有分通信任务执行完毕;以及响应于所有分通信任务执行完毕, 将所述第二等待标识F1修改为等待结束标识,从而使得所述总通信任务执行完毕。
接下来,如图32所示,在执行队列PQ中开始执行每个分通信任务b1和b2, 每当一个分通信任务b1或b2执行完毕,则可以相应地修改第二等待标识F1,例如可 以使得第二等待标识F1加一。第二等待标识F1修改的次数与分通信任务被执行完毕 的次数相同。因此,第二等待标识F1可以在初始的时候设定一个目标值,随着分通 信任务b1或b2的执行完毕,第二等待标识F1逐渐接近该目标值,当第二等待标识 F1达到预设目标值的时候,则意味着所有的分通信任务b1和b2执行完毕。需要理解 的是,对第二等待标识F1的修改方式可以有很多种,而并不局限于如上文所述的“加 一”,例如每修改一次可以减去一,直至该第二等待标识F1小于预定的阈值。本公 开对于如何修改第二等待标识并不做任何限定。
上文所述的“第二等待标识F1达到目标值”也可以理解为一个等待结束标识, 这意味着当前总通信任务B已经执行完毕,可以开始执行其他任务了。
需要理解的是,在图30b,图31和图32中,尽管标识f0被显示在分通信任务 中,但这仅仅是为了便于理解,该标识f0实际上处于通信任务队列中,以便于对各个 分通信任务的执行进行监控。
在将总通信任务划分为多个分通信任务时,可以有多种划分方式,可以将总通 信任务随机地划分为多个分通信任务;可以将总通信任务划分为固定数量的分通信任 务;可以根据通信路径的数量来将总通信任务划分为与处理器的数量相应数量的分通 信任务等等。
根据本公开的一个优选实施方式,可以将任务队列中的一个总通信任务划分为多个执行时间等效的分通信任务。
上述的执行时间等效并不意味着每个分通信任务本身的大小是相同的。例如, 每个端口的通信速度为40Gbps,那么对于160G的数据而言,如果采用一条通信路径 来传输这些数据,则理论上需要4秒来完成数据的传输。因此,可以将该160G的数 据拆分为多个分通信任务,例如2个,3个或4个。当拆分为4个分通信任务时,则 可以采用4条通信路径来并行地进行数据传输,则理论上仅需要1秒即可完成160G 的数据传输,通信时间仅为原通信时间的25%。显然,这样将有助于缩短对总通信任 务的执行时间。
此外,多条通信路径中的每条通信路径并不必然会有同样的传输速度,因此, 对于通信任务的划分则可以考虑每个通信路径的速度来调整每个分通信任务所对应 的数据的大小。例如,四条通信路径的传输速度分别为16Gbps,18Gbps,22Gbps和 24Gbps,那么对于160G的数据而言,则可以将其分别拆分为四个分通信任务,分别 为32G,36G,44G和48G,每个通信路径完成数据传输的时间为2秒,从而能够保 证每条通信路径能够同时或基本同时完成各分通信任务。
不同的通信路径可以对应于不同的拓扑结构,如图5a-图5c所描述的那样。
根据本公开的一个实施方式,其中,可以响应于所述总通信任务的数据量超过 特定阈值,将所述总通信任务划分为多个分通信任务。需要理解的是,将总通信任务 划分为多个分通信任务还需要考虑每个任务所涉及的数据总量,如果某个总通信任务 涉及的数据总量较小,那么将没有必要再将该总通信任务进行划分。
根据本公开的一个实施方式,本公开的方法进一步包括:响应于一个或多个分 通信任务出现错误,重新运行出现错误的分通信任务。
当在通信任务执行队列PQ中执行多个分通信任务时,有可能发生错误,例如数 据线路导致的传输失败,出现数据吞吐错误,出现数据传输出现丢包等。在传统的方 案中,如果总通信任务不被划分为多个分通信任务,一旦任务的执行过程中发生错误, 则需要将整个总通信任务重新执行一次,从而会严重地浪费处理能力,造成系统整体 性能的下降。
在本公开的方案中,由于多个分通信任务均处于不同的执行队列中,这些执行 队列之间独立运行,互相不发生干涉,因此即使某一个分通信任务在执行过程中发生 错误,也不会影响其他分通信任务的执行。因此,如果一个分通信任务的执行出现错 误,那么可以仅重新执行该出现错误的分通信任务即可,而无需将全部的分通信任务 或者总通信任务整体重新运行一次。在运行该出现错误的分通信任务时,其他队列可 以处于空闲状态,或者可以同时执行其他分通信任务。因此,本公开中将一个总通信 任务划分为多个并行的分通信任务的情况能够提升系统处理资源的利用率,并且提升 处理效率。
根据本公开的一个实施方式,其中,响应于一个或多个分通信任务出现错误, 将出现错误的分通信任务进一步拆分为多个子任务以便于并行执行。
当一个分通信任务出现错误而需要重新执行时,可以将出现错误的分通信任务作为一个新的总通信任务加入到通信任务分配队列LQ中,并将该分通信任务进一步 划分为多个子任务,并在多个并行的执行队列PQ中重新执行一次该出现错误的分通 信任务。将出现错误的分通信任务进一步划分为多个子任务重新执行进一步提升了系 统的运行效率,使得即使某个分通信任务的执行发生错误,改正该错误所花费的时间 和处理资源都大大降低。
由此可见,基于本公开的上述方案,在通信数据量较大的时候,可以将一个通信任务拆为任意多个分任务,下发到多个不同的通信任务执行队列中并发执行,提高 带宽利用率。
进一步地,可以根据芯片之间的具体拓扑连接方式的最大带宽选择不同的算法进行通信,进一步优化大数据量的通信效率。由此,可以根据加速卡之间的物理拓扑连 接,灵活的构建通信逻辑拓扑进行数据通信,进一步提高通信效率。
还可以独立地监管在每个通信任务执行队列中执行的分通信任务,如果分通信任务出现了错误,则只需要将这个分通信任务重新下发或重新执行,不需要将整个通信 任务重新执行。从而可以在用户无感知的情况下,实现通信任务的部分重传处理,降 低了通信任务的容错和重传的代价,提高了整体的通信效率。
下发任务的加速卡可以是加速卡系统中的任意一个加速卡。根据本公开的一个实施方式,由于通信任务队列只是存在等待和写入操作,真正的通信任务是在通信任务 执行队列里面运行的,因此通信任务队列可以对应加速卡系统中的任意一个,这有利 于降低开发人员编程出错的概率,并且可以选择任务量较小的加速卡去执行通信任务 队列的等待和写入控制。
本公开还提供一种电子设备,包括:一个或多个处理器;以及存储器,所述存储 器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运 行时,使得所述电子设备执行如上所述的方法。
本公开还提供一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如上所述的方法。
本公开的技术方案可应用于人工智能领域,实现为或者实现在人工智能芯片中。该芯片可以单独存在,也可以包含在计算装置中。
图26为本公开一个实施例中组合处理装置结构示意图,如图所示,
图26示出了一种组合处理装置2600,其包括上述的计算装置2602,互联接口2604,和其他处理装置2606。根据本公开的计算装置与其他处理装置进行交互,共同 完成用户指定的操作。图26为组合处理装置的示意图。
其他处理装置,包括中央处理器CPU、图形处理器GPU、神经网络处理器等通 用/专用处理器中的一种或以上的处理器类型。其他处理装置所包括的处理器数量不做 限制。其他处理装置作为机器学习运算装置与外部数据和控制的接口,包括数据搬运, 完成对本机器学习运算装置的开启、停止等基本控制;其他处理装置也可以和机器学 习运算装置协作共同完成运算任务。
互联接口用于在计算装置(包括例如机器学习运算装置)与其他处理装置间传输数据和控制指令。该计算装置从其他处理装置中获取所需的输入数据,写入该计算装 置片上的存储装置;可以从其他处理装置中获取控制指令,写入计算装置片上的控制 缓存;也可以读取计算装置的存储模块中的数据并传输给其他处理装置。
可选的,该结构还可以包括存储装置2608,存储装置分别与所述计算装置和所 述其他处理装置连接。存储装置用于保存在所述计算装置和所述其他处理装置的数 据,尤其适用于所需要运算的数据在本计算装置或其他处理装置的内部存储中无法全 部保存的数据。
该组合处理装置可以作为手机、机器人、无人机、视频监控设备等设备的SOC 片上系统,有效降低控制部分的核心面积,提高处理速度,降低整体功耗。此情况时, 该组合处理装置的互联接口与设备的某些部件相连接。某些部件譬如摄像头,显示器, 鼠标,键盘,网卡,wifi接口。
在一些实施例里,本公开还公开了一种芯片封装结构,其包括了上述芯片。
在一些实施例里,本公开还公开了一种板卡,其包括了上述芯片封装结构。参阅图27,其提供了一种示例性的板卡,上述板卡除了包括上述芯片2702以外,还可以 包括其他的配套部件,该配套部件包括但不限于:存储器件2704、接口装置2706和 控制器件2708。
所述存储器件与所述芯片封装结构内的芯片通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元2710。每一组所述存储单元与所述芯片通过总线连 接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。
DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲 的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中, 所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4 颗粒(芯片)。在一个实施例中,所述芯片内部可以包括4个72位DDR4控制器, 上述72位DDR4控制器中64bit用于传输数据,8bit用于ECC校验。在一个实施例 中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在 一个时钟周期内可以传输两次数据。在所述芯片中设置控制DDR的控制器,用于对 每个所述存储单元的数据传输与数据存储的控制。
所述接口装置与所述芯片封装结构内的芯片电连接。所述接口装置用于实现所述芯片与外部设备2712(例如服务器或计算机)之间的数据传输。例如在一个实施例中, 所述接口装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接 口传递至所述芯片,实现数据转移。在另一个实施例中,所述接口装置还可以是其他 的接口,本公开并不限制上述其他的接口的具体表现形式,所述接口单元能够实现转 接功能即可。另外,所述芯片的计算结果仍由所述接口装置传送回外部设备(例如服 务器)。
所述控制器件与所述芯片电连接。所述控制器件用于对所述芯片的状态进行监控。具体的,所述芯片与所述控制器件可以通过SPI接口电连接。所述控制器件可以 包括单片机(Micro Controller Unit,MCU)。如所述芯片可以包括多个处理芯片、多 个处理核或多个处理电路,可以带动多个负载。因此,所述芯片可以处于多负载和轻 负载等不同的工作状态。通过所述控制装置可以实现对所述芯片中多个处理芯片、多 个处理和/或多个处理电路的工作状态的调控。
在一些实施例里,本公开还公开了一种电子设备或装置,其包括了上述板卡。
电子设备或装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、 智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相 机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、 和/或医疗设备。
所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波 炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核 磁共振仪、B超仪和/或心电图仪。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限 制,因为依据本公开,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术 人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块 并不一定是本公开所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本公开所提供的几个实施例中,应该理解到,所披露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅 仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可 以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显 示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元 的间接耦合或通信连接,可以是电性、光学、声学、磁性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到 多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例 方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成 的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,当本公开的技术方案 可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干 指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本公 开各个实施例所述方法的全部或部分步骤。而前述的存储器包括:U盘、只读存储器 (ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、 移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上对本公开实施例进行了详细介绍,本文中应用了具体个例对本公开的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本公开的方法及其核心思 想;同时,对于本领域的一般技术人员,依据本公开的思想,在具体实施方式及应用 范围上均会有改变之处,综上所述,本说明书内容不应理解为对本公开的限制。

Claims (26)

1.一种在加速卡系统中执行通信任务的方法,其中,所述加速卡系统包括多个能够互相通信的加速卡,所述多个加速卡中的一个加速卡能够通过通信路径与另一个加速卡进行通信;所述方法包括:
建立通信任务队列,所述通信任务队列中包括通信任务和用于对所述通信任务的执行状态进行监控的状态标识;
建立通信任务执行队列,用于通过通信路径在加速卡之间执行通信任务;
响应于所述通信任务的执行,改变所述状态标识符以监控所述通信任务的执行状态。
2.根据权利要求1所述的方法,其中,所述加速卡系统包括一个加速单元,所述加速单元包括M个本单元加速卡,每个本单元加速卡包括内接端口,每个本单元加速卡通过内接端口与其他的本单元加速卡可通信地连接,其中,
M个本单元加速卡在逻辑上形成为L*N规模的加速卡矩阵,L和N为不小于2的整数。
3.根据权利要求1所述的方法,其中,所述加速卡系统包括多个加速单元,每个加速单元包括M个本单元加速卡,每个本单元加速卡包括内接端口,每个本单元加速卡通过内接端口与其他的本单元加速卡可通信地连接,其中,
M个本单元加速卡在逻辑上形成为L*N规模的加速卡矩阵,L和N为不小于2的整数,所述M个本单元加速卡中的至少一个包括外接端口,所述加速单元之间通过外接端口可通信地连接。
4.根据权利要求1所述的方法,其中,所述加速卡系统包括多个加速单元,每个加速单元包括M个本单元加速卡,每个本单元加速卡包括内接端口,每个本单元加速卡通过内接端口与其他的本单元加速卡可通信地连接,其中,
M个本单元加速卡在逻辑上形成为L*N规模的加速卡矩阵,L和N为不小于2的整数,所述M个本单元加速卡中的至少一个包括外接端口,所述加速单元之间通过外接端口可通信地连接,所述多个加速单元在逻辑上呈多层结构,每一层包括一个加速单元,每个加速单元的本单元加速卡通过外接端口与外单元加速卡可通信地连接,并且最后一个加速单元与第一个加速单元可通信地连接,从而所述多个加速单元首尾相连形成环形结构。
5.根据权利要求1所述的方法,其中,所述加速卡系统包括第一加速组件、第二加速组件、第三加速组件和第四加速组件,每个加速组件包括第一加速单元和第二加速单元,每个加速组件通过第一加速单元和第二加速单元中的一个与其他加速组件的第一加速单元和第二加速单元中的一个可通信地连接;每个加速单元包括M个本单元加速卡,每个本单元加速卡包括内接端口,每个本单元加速卡通过内接端口与其他的本单元加速卡可通信地连接,其中,
M个本单元加速卡在逻辑上形成为L*N规模的加速卡矩阵,L和N为不小于2的整数,所述M个本单元加速卡中的至少一个包括外接端口,所述加速单元之间通过空闲的外接端口可通信地连接;
所述第一加速组件的第一加速单元的第二对加速卡与所述第二加速组件的第二加速单元的第二对加速卡连接;
所述第二加速组件的第二加速单元的第一对加速卡与所述第三加速组件的第一加速单元的第一对加速卡连接;
所述第三加速组件的第二加速单元的第二对加速卡与所述第四加速组件的第一加速单元的第二对加速卡连接;
所述第四加速组件的第一加速单元的第一对加速卡与所述第一加速组件的第二加速单元的第一对加速卡连接。
6.根据权利要求2-5中任意一项所述的方法,其中,所述M个本单元加速卡在逻辑上形成为2*2、3*3或4*4的加速卡矩阵。
7.根据权利要求2-6中任意一项所述的方法,其中,每个本单元加速卡与其他至少一个本单元加速卡通过两条路径来可通信地连接。
8.根据权利要求2-7中任意一项所述的方法,其中,所述加速卡矩阵中处于四个角的对角本单元加速卡之间通过两条通信路径来可通信地连接。
9.根据权利要求2-8中任意一项所述的方法,其中,在加速单元中包括四个本单元加速卡时,每个本单元加速卡包括六个端口,并且其中每个本单元加速卡的四个端口为内接端口,用于与其他三个本单元加速卡可通信地连接;至少一个本单元加速卡的其余两个端口为外接端口,用于与外单元加速卡可通信地连接。
10.根据权利要求2-9中任意一项所述的方法,其中,所述内接端口和外接端口为SerDes端口。
11.根据权利要求3-10中任意一项所述的方法,其中,所述多个加速单元具有相同的结构。
12.根据权利要求3-11中任意一项所述的方法,其中,所述加速单元配置为将所述加速单元的加速卡中的数据进行规约运算以得到规约结果。
13.根据权利要求12所述的方法,其中,所述多个加速单元配置为进行规约运算,包括:
将同一加速单元的加速卡中的数据进行第一规约运算以在每个加速单元中得到第一规约结果;
将多个加速单元中的第一规约结果进行第二规约运算,以得到第二规约结果。
14.根据权利要求1-13中任意一项所述的方法,其中,所述通信任务队列和所述通信任务执行队列处于不同的加速卡上。
15.根据权利要求1-14所述的方法,其中,所述通信任务队列处于所述多个加速卡中的任一加速卡,优选地,处于低负荷的加速卡上。
16.根据权利要求1-15中任意一项所述的方法,进一步包括:
将所述通信任务队列中的一个总通信任务划分为多个分通信任务,每个分通信任务处于不同的通信任务执行队列中;
通过不同的通信路径并行地执行所述多个分通信任务;
响应于所述分通信任务执行完毕,使得所述总通信任务执行完毕。
17.根据权利要求16所述的方法,进一步包括:
设置允许所述总通信任务开始执行的第一写入标识;
设置禁止所述分通信任务开始执行的第一等待标识;
当所述第一写入标识未被执行时,执行所述第一等待标识以禁止所述分通信任务开始执行。
18.根据权利要求17所述的方法,其中,并行地执行所述多个分通信任务包括:
响应于所述第一写入标识被执行,关断所述第一等待标识,从而并行地执行所述多个分通信任务。
19.根据权利要求16-18中任意一项所述的方法,进一步包括:设置第二等待标识,以禁止执行所述总通信任务之后的其他通信任务。
20.根据权利要求19所述的方法,进一步包括:
每当一个分通信任务执行完毕,则修改所述第二等待标识,直至所有分通信任务执行完毕;
响应于所有分通信任务执行完毕,将所述第二等待标识修改为等待结束标识,从而使得所述总通信任务执行完毕。
21.根据权利要求16-20中任意一项所述的方法,其中将通信任务队列中的一个总通信任务划分为多个在不同的通信路径中执行时间等效的分通信任务。
22.根据权利要求16-21中任意一项所述的方法,其中,响应于所述总通信任务的数据量超过特定阈值,将所述总通信任务划分为多个分通信任务。
23.根据权利要求16-22中任意一项所述的方法,进一步包括:响应于一个或多个分通信任务出现错误,重新执行出现错误的分通信任务。
24.根据权利要求16-23中任意一项所述的方法,响应于一个或多个分通信任务出现错误,将出现错误的分通信任务进一步拆分为多个子通信任务以便于并行执行。
25.一种电子设备,包括:
一个或多个处理器;以及
存储器,所述存储器中存储有计算机可执行指令,当所述计算机可执行指令由所述一个或多个处理器运行时,使得所述电子设备执行如权利要求1-24中任意一项所述的方法。
26.一种计算机可读存储介质,包括计算机可执行指令,当所述计算机可执行指令由一个或多个处理器运行时,执行如权利要求1-24中任意一项所述的方法。
CN202110055097.6A 2020-12-30 2021-01-15 一种在加速卡系统中执行通信任务的方法和设备 Pending CN114764374A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110055097.6A CN114764374A (zh) 2021-01-15 2021-01-15 一种在加速卡系统中执行通信任务的方法和设备
PCT/CN2021/138702 WO2022143194A1 (zh) 2020-12-30 2021-12-16 一种执行异步任务的方法、设备和计算机程序产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110055097.6A CN114764374A (zh) 2021-01-15 2021-01-15 一种在加速卡系统中执行通信任务的方法和设备

Publications (1)

Publication Number Publication Date
CN114764374A true CN114764374A (zh) 2022-07-19

Family

ID=82364331

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110055097.6A Pending CN114764374A (zh) 2020-12-30 2021-01-15 一种在加速卡系统中执行通信任务的方法和设备

Country Status (1)

Country Link
CN (1) CN114764374A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116594745A (zh) * 2023-05-11 2023-08-15 阿里巴巴达摩院(杭州)科技有限公司 任务执行方法、系统、芯片及电子设备
CN117033275A (zh) * 2023-10-07 2023-11-10 浪潮(北京)电子信息产业有限公司 加速卡间的dma方法、装置、加速卡、加速平台及介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116594745A (zh) * 2023-05-11 2023-08-15 阿里巴巴达摩院(杭州)科技有限公司 任务执行方法、系统、芯片及电子设备
CN117033275A (zh) * 2023-10-07 2023-11-10 浪潮(北京)电子信息产业有限公司 加速卡间的dma方法、装置、加速卡、加速平台及介质
CN117033275B (zh) * 2023-10-07 2024-02-09 浪潮(北京)电子信息产业有限公司 加速卡间的dma方法、装置、加速卡、加速平台及介质

Similar Documents

Publication Publication Date Title
US11809360B2 (en) Network-on-chip data processing method and device
CN114764374A (zh) 一种在加速卡系统中执行通信任务的方法和设备
CN112686379B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2022143194A1 (zh) 一种执行异步任务的方法、设备和计算机程序产品
CN111767995B (zh) 运算方法、装置及相关产品
CN113312304B (zh) 一种互联装置、主板及服务器
CN113902111A (zh) 多芯片互连系统及神经网络加速处理方法
CN117499348A (zh) 一种基于PCIe交换的人工智能计算服务设备
US12050545B2 (en) Method and device for constructing communication topology structure on basis of multiple processing nodes
US11366696B2 (en) System, board card and electronic device for data accelerated processing
CN110083532A (zh) 基于深度学习框架的融合模式下运行错误定位方法及装置
US20230153157A1 (en) Inter-node communication method and device based on multiple processing nodes
CN114691311A (zh) 一种执行异步任务的方法、设备和计算机程序产品
CN212846786U (zh) 一种加速单元以及电子设备
CN212846785U (zh) 一种加速组件、加速装置以及电子设备
WO2022057600A1 (zh) 一种加速单元、加速组件、加速装置以及电子设备
CN114764488A (zh) 一种在加速卡矩阵中进行数据矩阵的乘法运算的方法和设备
CN114185831A (zh) 一种加速单元以及电子设备
CN114281558A (zh) 多核处理器、用于多核处理器的方法及相应产品
CN111210011B (zh) 数据处理装置及相关产品
CN114185832A (zh) 一种加速组件、加速装置以及电子设备
CN105207823B (zh) 一种网络拓扑结构
CN215494836U (zh) 一种存储计算装置、计算设备、及服务器
CN111258634B (zh) 数据选择装置、数据处理方法、芯片及电子设备
CN115495157A (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