CN113703955A - 计算系统中数据同步的方法及计算节点 - Google Patents

计算系统中数据同步的方法及计算节点 Download PDF

Info

Publication number
CN113703955A
CN113703955A CN202010443371.2A CN202010443371A CN113703955A CN 113703955 A CN113703955 A CN 113703955A CN 202010443371 A CN202010443371 A CN 202010443371A CN 113703955 A CN113703955 A CN 113703955A
Authority
CN
China
Prior art keywords
node
plane
data
nodes
planes
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
CN202010443371.2A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010443371.2A priority Critical patent/CN113703955A/zh
Publication of CN113703955A publication Critical patent/CN113703955A/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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种计算系统中数据同步的方法及计算节点,属于计算机技术领域。本申请提供了一种基于立方体的网络拓扑结构实现全归约的方法,通过按照节点在立方体中所在的每个平面,将节点上的数据分成多个数据段,分别在节点所在的多个平面内执行归约拆分操作,对归约拆分操作得到的结果数据,执行相对平面的两个对应节点之间的全归约操作,在节点所在的多个平面内对全归约操作得到的结果数据执行全收集操作,能够显著减少实现数据发起和同步次数,因此显著减少了数据同步开销。

Description

计算系统中数据同步的方法及计算节点
技术领域
本申请涉及计算机技术领域,特别涉及一种计算系统中数据同步的方法及计算节点。
背景技术
全归约(allreduce)是计算系统中实现数据同步的一种高效方法。全归约是指对计算系统每个节点上的数据进行归约,并使参与通信的所有节点均获得归约结果的操作。
时下,可以将计算系统中的网络拓扑结构配置为环形,利用环全归约(RingAllreduce)的方法实现allreduce。具体地,每个节点首先通过在环内执行归约拆分(reduce-scatter)操作,以将本节点的部分数据和网络中所有节点的部分数据进行归约。之后,每个节点根据reduce-scatter操作得到的结果,在环内执行全收集(allgather)操作,从而得到网络中全部节点上数据的归约结果。
采用上述方法时,如果网络中节点的数量为n个(n为大于或等于2的正整数),执行reduce-scatter操作时需要数据发起和同步(n-1)次,执行allgather操作时需要数据发起和同步(n-1)次,导致实现allreduce总共需要2*(n-1)次的数据发起和同步,由于数据发起和同步的次数过多,导致数据同步的开销过大。
发明内容
本申请实施例提供了一种计算系统中数据同步的方法及计算节点,能够减少数据同步的开销。所述技术方案如下:
第一方面,提供了一种计算系统中数据同步的方法,在该方法中,所述计算系统的网络拓扑结构为立方体,所述立方体的顶点用于表示所述计算系统中的节点,所述计算系统包括第一节点,所述方法包括:
按照所述第一节点在所述立方体中所处的多个第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段;
分别与所述计算系统中位于每个所述第一平面的共面节点,对每个所述第一平面对应的数据段执行归约拆分操作,得到每个所述第一平面对应的第一结果数据;
分别与所述计算系统中位于每个第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据,所述第二平面是所述立方体中与所述第一平面位置相对的平面;
分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作。
以上提供了一种基于立方体的网络拓扑结构实现全归约的方法,采用上述方法时,平面内执行归约拆分操作时数据发起和同步次数是3次。相对平面内对数据进行全归约操作时数据发起和同步次数是2次。平面内全收集操作时数据发起和同步次数是3次。因此,计算系统总共执行8次数据发起和同步即可实现全归约;或者,平面内执行归约拆分操作时数据发起和同步次数是3次。相对平面内对数据进行全归约操作时数据发起和同步次数是2次。平面内全收集操作时数据发起和同步次数是1次。因此,计算系统总共执行6次数据发起和同步即可实现全归约。因此,该方法能够显著减少计算系统中实现全归约带来的数据发起和同步次数,从而显著减少了计算系统的数据同步开销。
可选地,所述分别与所述计算系统中位于每个第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据,包括:
分别与每个所述第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全收集操作,得到每个所述第一平面对应的第三结果数据;
分别与每个所述第一平面的第四节点,对每个所述第一平面对应的第三结果数据执行归约拆分操作,得到每个所述第一平面对应的第二结果数据,所述第四节点是所述第一平面上与所述第一节点相邻的节点,且所述第四节点得到的第三结果数据和所述第一节点得到的第三结果数据对应于相同的子数据段。
采用上述方式时,在实现相对平面的数据全归约操作的基础上,由于所需的数据发起和同步次数少,有助于减少计算系统的数据同步开销。
可选地,所述分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作,包括:
分别通过每个所述第一平面对应的环形网络,将每个所述第一平面对应的第二结果数据发送至每个所述第一平面内的每个共面节点。
采用上述方式时,在实现平面内全收集的基础上,由于所需的数据发起和同步次数少,有助于减少计算系统的数据同步开销。
可选地,所述分别与所述计算系统中位于每个第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据,包括:
分别与每个所述第一平面的第二节点,对每个所述第一平面对应的第一结果数据执行全收集操作,得到每个所述第一平面对应的第四结果数据,所述第二节点是所述第一平面上与所述第一节点相邻的节点;
分别与每个所述第二平面的相对节点,对每个所述第一平面对应的第四结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据。
采用上述方式时,在实现相对平面的数据全归约操作的基础上,由于所需的数据发起和同步次数少,有助于减少计算系统的数据同步开销。
可选地,所述分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作,包括:
分别将每个所述第一平面对应的第二结果数据发送至每个所述第一平面内的第三节点,所述第三节点是所述第一平面上与所述第一节点相邻的节点,所述第三节点和所述第二节点不同。
采用上述方式时,在实现平面内全收集的基础上,由于所需的数据发起和同步次数少,有助于减少计算系统的数据同步开销。
可选地,所述按照所述第一节点在所述立方体中所处的多个第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段,包括:
根据所述多个第一平面的数量,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段,所述数据段的数量为所述多个第一平面的数量的整数倍。
可选地,所述分别与所述计算系统中位于每个所述第一平面的共面节点,对每个所述第一平面对应的数据段执行归约拆分操作,包括:
根据所述计算系统位于每个所述第一平面的节点数量,对每个所述第一平面对应的数据段分别拆分,得到每个所述第一平面对应的多个子数据段,所述子数据段的数量为对应第一平面的节点数量的整数倍;
分别与每个所述第一平面的共面节点,同步彼此得到的所述第一平面对应的子数据段。
可选地,所述分别与所述计算系统中位于每个所述第一平面的共面节点,对每个所述第一平面对应的数据段执行归约拆分操作,包括:
分别与所述计算系统中位于每个所述第一平面的共面节点,并行地对每个所述第一平面对应的数据段执行归约拆分操作;
所述分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作,包括:
分别与每个所述第一平面内的共面节点,并行地对每个所述第一平面对应的第二结果数据执行全收集操作。
通过这种可选方式,立方体的所有平面都同时执行相同的操作,保证立方体的所有链路的双向带宽都得到有效利用,避免了出现空闲链路的情况,提升带宽资源的利用率。
可选地,所述多个第一平面的数量为3。
可选地,所述多个第二平面的数量为3。
可选地,所述第一平面中的节点数量为4。
第二方面,提供了一种计算系统中数据同步的方法,在该方法中,所述计算系统的网络拓扑结构为立方体,所述立方体的顶点用于表示所述计算系统中的节点,所述计算系统包括第一节点,所述方法包括:
按照所述第一节点在所述立方体中所处的第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到所述第一平面对应的数据段;
与所述计算系统中位于所述第一平面的共面节点,对所述第一平面对应的数据段执行归约拆分操作,得到所述第一平面对应的第一结果数据;
与所述计算系统中位于第二平面的相对节点,对所述第一平面对应的第一结果数据执行全归约操作,得到所述第一平面对应的第二结果数据,所述第二平面是所述立方体中与所述第一平面位置相对的平面;
与所述第一平面内的共面节点,对所述第一平面对应的第二结果数据执行全收集操作。
可选地,所述分别与所述计算系统中位于第二平面的相对节点,对所述第一平面对应的第一结果数据执行全归约操作,得到所述第一平面对应的第二结果数据,包括:
与所述第二平面的相对节点,对所述第一平面对应的第一结果数据执行全收集操作,得到所述第一平面对应的第三结果数据;
与所述第一平面的第四节点,对所述第一平面对应的第三结果数据执行归约拆分操作,得到所述第一平面对应的第二结果数据,所述第四节点是所述第一平面上与所述第一节点相邻的节点,且所述第四节点得到的第三结果数据和所述第一节点得到的第三结果数据对应于相同的子数据段。
可选地,所述与所述第一平面内的共面节点,对所述第一平面对应的第二结果数据执行全收集操作,包括:
通过所述第一平面对应的环形网络,将所述第一平面对应的第二结果数据发送至所述第一平面内的共面节点。
可选地,所述与所述计算系统中位于第二平面的相对节点,对所述第一平面对应的第一结果数据执行全归约操作,得到所述第一平面对应的第二结果数据,包括:
与所述第一平面的第二节点,对所述第一平面对应的第一结果数据执行全收集操作,得到所述第一平面对应的第四结果数据,所述第二节点是所述第一平面上与所述第一节点相邻的节点;
与所述第二平面的相对节点,对所述第一平面对应的第四结果数据执行全归约操作,得到所述第一平面对应的第二结果数据。
可选地,所述与所述第一平面内的共面节点,对所述第一平面对应的第二结果数据执行全收集操作,包括:
将所述第一平面对应的第二结果数据发送至所述第一平面内的第三节点,所述第三节点是所述第一平面上与所述第一节点相邻的节点,所述第三节点和所述第二节点不同。
可选地,所述按照所述第一节点在所述立方体中所处的多个第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到所述第一平面对应的数据段,包括:
根据所述多个第一平面的数量,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到所述第一平面对应的数据段,所述数据段的数量为所述多个第一平面的数量的整数倍。
可选地,所述与所述计算系统中位于所述第一平面的共面节点,对所述第一平面对应的数据段执行归约拆分操作,包括:
根据所述计算系统位于所述第一平面的节点数量,对所述第一平面对应的数据段拆分,得到所述第一平面对应的多个子数据段,所述子数据段的数量为对应第一平面的节点数量的整数倍;
与所述第一平面的共面节点,同步彼此得到的所述第一平面对应的子数据段。
第三方面,提供了一种计算节点,该计算节点具有实现上述第一方面或第一方面任一种可选方式中数据同步的功能。该计算节点包括至少一个模块,至少一个模块用于实现上述第一方面或第一方面任一种可选方式所提供的计算系统中数据同步的方法。第三方面提供的计算节点的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第四方面,提供了一种计算节点,该计算节点具有实现上述第二方面或第二方面任一种可选方式中数据同步的功能。该计算节点包括至少一个模块,至少一个模块用于实现上述第二方面或第二方面任一种可选方式所提供的计算系统中数据同步的方法。第四方面提供的计算节点的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。
第五方面,提供了一种计算节点,该计算节点包括处理器,该处理器用于执行指令,使得该计算节点执行上述第一方面或第一方面任一种可选方式所提供的计算系统中数据同步的方法。第五方面提供的计算节点的具体细节可参见上述第一方面或第一方面任一种可选方式,此处不再赘述。
第六方面,提供了计算节点,该计算节点包括处理器,该处理器用于执行指令,使得该计算节点执行上述第二方面或第二方面任一种可选方式所提供的计算系统中数据同步的方法。第六方面提供的计算节点的具体细节可参见上述第二方面或第二方面任一种可选方式,此处不再赘述。
第七方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以使计算节点执行上述第一方面或第一方面任一种可选方式所提供的计算系统中数据同步的方法。
第八方面,提供了一种计算机可读存储介质,该存储介质中存储有至少一条指令,该指令由处理器读取以使计算节点执行上述第二方面或第二方面任一种可选方式所提供的计算系统中数据同步的方法。
第九方面,提供了一种计算机程序产品,当该计算机程序产品在计算节点上运行时,使得计算节点执行上述第一方面或第一方面任一种可选方式所提供的计算系统中数据同步的方法。
第十方面,提供了一种计算机程序产品,当该计算机程序产品在计算节点上运行时,使得计算节点执行上述第二方面或第二方面任一种可选方式所提供的计算系统中数据同步的方法。
第十一方面,提供了一种芯片,当该芯片在计算节点上运行时,使得计算节点执行上述第一方面或第一方面任一种可选方式所提供的计算系统中数据同步的方法。
第十二方面,提供了一种芯片,当该芯片在计算节点上运行时,使得计算节点执行上述第二方面或第二方面任一种可选方式所提供的计算系统中数据同步的方法。
第十三方面,提供了一种计算系统,所述计算系统的网络拓扑结构为立方体,该计算系统包括多个计算节点,多个计算节点中每个计算节点用于执行上述第一方面或第一方面任一种可选方式所述的方法。
附图说明
图1是本申请实施例提供的一种归约操作的结果示意图;
图2是本申请实施例提供的一种全归约操作的结果示意图;
图3是本申请实施例提供的一种广播操作的结果示意图;
图4是本申请实施例提供的一种收集操作的结果示意图;
图5是本申请实施例提供的一种全收集操作的结果示意图;
图6是本申请实施例提供的一种拆分操作的结果示意图;
图7是本申请实施例提供的一种归约拆分操作的结果示意图;
图8是本申请实施例提供的一种四个节点组成的环形网络的网络拓扑结构示意图;
图9是本申请实施例提供的一种四个节点组成的单向环形网络的网络拓扑结构示意图;
图10是本申请实施例提供的一种单向环形网络内全归约操作的步骤一示意图;
图11是本申请实施例提供的一种单向环形网络内全归约操作的步骤二示意图;
图12是本申请实施例提供的一种单向环形网络内全归约操作的步骤三示意图;
图13是本申请实施例提供的一种单向环形网络内全归约操作的步骤四示意图;
图14是本申请实施例提供的一种单向环形网络内全归约操作的步骤五示意图;
图15是本申请实施例提供的一种单向环形网络内全归约操作的步骤六示意图;
图16是本申请实施例提供的一种实现全归约操作的网络拓扑结构示意图;
图17是本申请实施例提供的一种实现全归约操作的网络拓扑结构示意图;
图18是本申请实施例提供的一种实现全归约操作的网络拓扑结构示意图;
图19是本申请实施例提供的一种网络拓扑结构为立方体的计算系统100的架构图;
图20是本申请实施例提供的一种立方体拓扑展开至平面的示意图;
图21是本申请实施例提供的一种计算系统100的软件架构示意图;
图22是本申请实施例提供的一种计算系统中的数据同步方法200的流程图;
图23是本申请实施例提供的一种节点所在的平面以及位置相对的平面的示意图;
图24是本申请实施例提供的一种多个平面采用逆时针方向并发通信的示意图;
图25是本申请实施例提供的一种多个平面采用顺时针方向并发通信的示意图;
图26是本申请实施例提供的一种将节点上的数据拆分为3个数据段的示意图;
图27是本申请实施例提供的一种待执行归约拆分操作的数据段的示意图;
图28是本申请实施例提供的一种平面内执行归约拆分操作时拆分子数据段的示意图;
图29是本申请实施例提供的一种平面内执行归约拆分操作后各个节点上分布的结果数据的示意图;
图30是本申请实施例提供的一种平面内执行归约拆分操作后各个节点上分布的结果数据的示意图;
图31是本申请实施例提供的一种平面内执行归约拆分操作后各个节点上分布的结果数据的示意图;
图32是本申请实施例提供的一种平面内相邻节点执行全收集操作后各个节点上分布的结果数据的示意图;
图33是本申请实施例提供的一种计算系统中的数据同步方法300的流程图;
图34是本申请实施例提供的一种相对平面相对顶点执行全归约操作的示意图;
图35是本申请实施例提供的一种相对平面相对顶点执行全归约操作后各个节点上分布的结果数据的示意图;
图36是本申请实施例提供的一种平面内相邻顶点执行归约拆分操作的示意图;
图37是本申请实施例提供的一种平面内相邻顶点执行归约拆分操作后各个节点上分布的结果数据的示意图;
图38是本申请实施例提供的一种平面内通过环的方式执行全收集操作的示意图;
图39是本申请实施例提供的一种计算系统中的数据同步方法400的流程图;
图40是本申请实施例提供的一种平面内相邻顶点执行全收集操作的示意图;
图41是本申请实施例提供的一种平面内相邻顶点执行全收集操作后各个节点上分布的结果数据的示意图;
图42是本申请实施例提供的一种相对平面相对顶点执行全归约操作的示意图;
图43是本申请实施例提供的一种相对平面相对顶点执行全归约操作后各个节点上分布的结果数据的示意图;
图44是本申请实施例提供的一种平面内通过相邻节点交换数据的方式执行全收集操作的示意图;
图45是本申请实施例提供的一种平面内通过相邻节点交换数据后各个节点上分布的结果数据的示意图;
图46是本申请实施例提供的一种计算节点500的结构示意图;
图47是本申请实施例提供的一种计算节点600的结构示意图;
图48是本申请实施例提供的一种计算节点800的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
以下示例性介绍本申请的应用场景。
本申请实施例提供的数据同步方法可以作为一种基于立方体拓扑结构实现全归约的方法,适用于各种节点互连进行集合通信的场景。具体而言,本申请实施例提供的数据同步方法可以能够应用在计算集群执行分布式计算任务的场景,例如,应用在人工智能(Artificial Intelligence,AI)领域中执行分布式训练任务的场景、物理实验数据分析的场景,气象数据分析的场景或者其他并行计算场景。尤其是,本申请实施例适用于高速链路较少的节点互联场景,例如节点只有三个相同类型高速链路的场景。在这些应用场景中,通过实施本申请实施例能够高效地利用系统中的所有高速链路进行数据同步。下面,对一些应用场景进行简单的介绍。
在分布式计算的场景下,可以将整个计算系统负责执行的分布式计算任务拆分为若干个子任务,计算系统中的每个节点用于执行一个或多个子任务。每个节点执行其负责的子任务后,会得到子任务的结果,需要汇总计算系统中所有节点得到的结果。在这一场景下,通过执行本申请实施例提供的数据同步方法,能够高效地将每个节点得到的结果同步至计算系统中的其他节点,从而高效地汇总整个计算系统执行任务的结果。
在分布式训练的场景下,可以将神经网络的训练并行化至计算系统的多个节点。具体地,首先,向包括N个(N是大于或等于1的正整数)节点的计算集群加载待训练的模型,其中,每个节点会加载一份完整的待训练的模型和初始的模型参数;之后,向计算集群加载本次批尺寸(batch)的训练数据,每个节点加载1/N份batch训练数据;之后,计算集群各节点根据1/N份batch训练数据,计算得到一份梯度值。例如,节点1计算得到第1份梯度值,节点2计算得到第2份梯度值,依次类推,节点N计算得到第N份梯度值。之后,对计算集群中所有节点的梯度值进行汇总,根据汇总结果计算模型参数。之后,更新各节点的模型参数,进行下一次batch训练。在这一场景下,通过执行本申请实施例提供的数据同步方法,能够高效地汇总每个节点计算出的梯度值,节省分布式训练的时间。
由于本申请实施例涉及集合通信(Collective Communication)技术的应用,为便于理解,下面对本申请实施例涉及的集合通信技术中的术语相关概念进行介绍。
(1)集合通信。
集合通信是指多个节点之间的相互通信过程。在消息传递接口(Message PassingInterface,MPI)中定义了集合通信的通信原语,通信原语包括:归约(reduce)、全归约(allreduce)、广播(broadcast)、收集(gather)、全收集(allgather)、拆分(scatter)、归约拆分(reduce-scatter)等等。
(2)归约操作。
归约操作是指对多个节点上的数据进行归约,并使多个节点中的根节点上保存归约得到的结果。可选地,多个节点中哪个节点作为根节点由用户指定。归约的方式包括而不限于求和、求最大值、求最小值、求平均值或者用户自定义的操作。通过执行归约操作,能够将不同节点中的数据整合至一起。例如,请参见附图1,附图1是对节点A、节点B和节点C上的数据通过求和的方式实现归约操作的举例说明,节点A是对节点A、节点B、节点C中的根节点的举例说明。节点A上具有数据A、节点B上具有数据B,节点C上具有数据C,数据A、数据B和数据C经过归约后,结果是数据A+数据B+数据C,节点A上会保存数据A+数据B+数据C。
(3)全归约操作。
全归约操作是指对多个节点上的数据执行归约操作(例如求和操作),并使得该多个节点中的每个节点均保存归约结果。例如,请参考附图2,附图2是对节点A、节点B和节点C上的数据通过求和的方式实现全归约操作的举例说明,节点A上具有数据A,节点B上具有数据B,节点C上具有数据C。执行全归约操作后,节点A、节点B和节点C均获得了数据A、数据B和数据C的归约结果,归约结果是数据A、数据B和数据C之和。
(4)广播操作。
广播操作是指将参与通信的多个节点中的一个节点上的数据传送到多个节点中其他的每个节点。例如,请参考附图1,附图2是对节点A上的数据执行广播操作的举例说明。节点A上具有数据A,参与通信的节点包括节点A、节点B和节点C,节点A执行广播操作后,节点A、节点B和节点C上均获得了数据A。
(5)收集操作。
收集操作是指将参与通信的多个节点上的数据汇总到该多个节点中的根节点上,从而将节点本地的数据同步至指定的节点(根节点)上。例如,请参考附图4,附图4是对节点A、节点B和节点C上的数据执行收集操作的举例说明,节点A是对节点A、节点B、节点C中的根节点的举例说明。节点A上具有数据A、节点B上具有数据B,节点C上具有数据C。节点A执行收集操作后,节点A上获得了数据A、数据B和数据C。
(6)全收集操作。
全收集操作是指将参与通信的多个节点上的数据汇总至该多个节点中的每个节点上,从而将节点本地的数据同步至该多个节点中其他的每个节点。例如,请参考附图5,附图5是对节点A、节点B和节点C上的数据执行全收集操作的举例说明,节点A上具有数据A、节点B上具有数据B,节点C上具有数据C。节点A、节点B和节点C执行全收集操作后,节点A、节点B和节点C上均获得了数据A、数据B和数据C。
(7)拆分。
拆分是指对节点上的数据进行拆分并使参与通信的其他节点上保存拆分得到的数据段。可选地,发送节点对本端保存的数据拆分后,得到多个数据段,发送节点将不同数据段分发至不同的其他节点,从而实现拆分操作。例如,请参见附图6,节点A对节点A上的数据A进行拆分后,得到了三个数据段,这三个数据段分别是数据段A1、数据段A2和数据段A3。节点A将数据段A2发送至节点B,节点A将数据段A3发送至节点C,使得数据段A1在节点A上保存,数据段A2在节点B上保存,数据段A3在节点C上保存。
(8)归约拆分操作。
归约拆分操作是指对多个节点上的数据执行归约操作(例如求和操作)和拆分操作,并使得该多个节点中的每个节点均保存归约得到的部分结果。可选地,数据中不同部分的归约结果保存在不同的节点上。例如,请参考附图7,附图7是对节点A、节点B和节点C上的数据通过求和的方式实现归约拆分操作的举例说明,节点A上具有数据A、节点B上具有数据B,节点C上具有数据C。节点A、节点B和节点C在执行归约拆分操作的过程中,节点A将数据A拆分为数据段A1、数据段A2和数据段A3,节点B将数据B拆分为数据段B1、数据段B2和数据段B3,节点C将数据C拆分为数据段C1、数据段C2和数据段C3。然后,节点A、节点B和节点B互相交换彼此的数据段,即,将自身拆分的数据段发送至其他节点,并接收其他节点发来的数据段,对自身拆分的数据段和接收的数据段进行归约操作。执行归约拆分操作后,节点A上获得了数据A、数据B和数据C中第一部分的归约结果,即数据段A1、数据段B1和数据段C1之和;节点B上获得了数据A、数据B和数据C中第二部分的归约结果,即数据段A2、数据段B2和数据段C2之和;节点C上获得了数据A、数据B和数据C中第三部分的归约结果,即数据段A3、数据段B3和数据段C3之和。
以上介绍了集合通信技术中的术语概念,以下对如何基于环全归约(Ring All-reduce)实现全归约的方法进行介绍。
环全归约是全归约基于环形网络拓扑结构的一种实现方法,其将节点从逻辑上连接成环的形式,在环上的所有节点上执行全归约操作。以4个节点为例,环全归约的具体实现方法包括以下步骤一至步骤三。
步骤一、将每个节点逻辑上连接成环形网络。例如,参见附图8,将节点A、节点B、节点C和节点D连接成环形网络。
步骤二、将数据按照环的个数分成多段,每段数据在1个单向环内执行全归约操作。由于链路一般是双向的,因此附图8中实际上包含两个单向环。因此首先将数据分成两大段,每大段数据在一个单向环中执行环全归约操作。例如,参见附图9,附图9是对单向环的举例说明。
步骤三、每个单向环内执行全归约操作。例如,以在附图9所示的单向环为例,步骤三包括以下步骤3.1至步骤3.3。
步骤3.1、将环内的数据(即该节点总数据量的一半)按照节点个数分成4段(每段即该节点总数据量的8分之一)。
步骤3.2、在该单向环内执行归约拆分操作。
在单向环内执行全归约操作中数据的传递过程共包括6个步骤,步骤3.2涉及的环内执行归约拆分操作关于6个步骤中的步骤一至步骤三,步骤3.3涉及的环内执行全收集操作关于6个步骤中的步骤四至步骤六。
例如,参见附图10、附图11和附图12,附图10、附图11和附图12是步骤3.2涉及的数据的传递汇总求和的举例说明。其中,附图10是对环内执行全归约操作中第一个步骤的举例说明,附图11是对环内执行全归约操作中第二个步骤的举例说明,附图12是对环内执行全归约操作中第三个步骤的举例说明,经过三个步骤后,环上每个节点上得到了归约拆分后的数据。其中,附图12中的白色斜体字体标识的数据是对归约拆分操作得到的数据的举例说明。
步骤3.3、在该单向环内执行全收集操作。
在单向环内执行全收集操作分为三个步骤。例如,请参见附图13、附图14和附图15,附图13是对单向环内执行全收集操作的第一个步骤,即单向环内执行全归约操作的第四个步骤的举例说明;附图14是对单向环内执行全收集操作的第二个步骤,即单向环内执行全归约操作的第五个步骤的举例说明;附图15是对单向环内执行全收集操作的第三个步骤,即单向环内执行全归约操作的第六个步骤的举例说明。
通过进行环内全归约操作,完成了6个步骤的数据传播后,如附图15所示,每个节点上有1段汇总完成的数据。其中,环内全归约操作的步骤数量是2*(环上的节点数量减1),其中,环内归约拆分操作的步骤数量是环上的节点数量减1,环内全收集操作的步骤数量是环上的节点数量减1。例如,附图9是以环内包括4个节点为例说明,环内归约拆分操作包括3步,环内全收集操作包括3步,环内全归约操作总共6步。
在一些实施例中,参见附图16和附图17,附图16和附图17示出了一种在服务器内实现全归约的方法。附图16所示的同一种线型表示同一个双向环对应的链路,按照不同线型的高速链接,形成3个双向环(即6个单向环),环内采用环全归约的方法实现全归约。
采用上述方法时,存在以下缺点一至缺点四。
缺点一、需要的高速互联通道较多,8个节点互联需要24条高速链路,不适用于高速互联通道较少的节点。
缺点二、交叉互联不方便硬件布线。
缺点三、节点间互联通道不均衡不对称,增加实现编程的难度。
缺点四、两次环操作,总共需要7+7=14次数据的发起和同步开销,开销过大,而下述方法200、方法300和方法400示出的全归约方法中,只需要3+2+3=8次数据的发起和同步开销。
在一些实施例中,参见附图18,附图18示出了另一种实现全归约的方法,该方法包括以下步骤一至步骤四。
步骤一、如附图18中的(a)所示,将8个图形处理器(英语:Graphics ProcessingUnit,GPU)分为两个平面,GPU0至GPU3组成全互联的网格(mesh)平面,GPU4至GPU7组成全互联的mesh平面。
步骤二、平面内广播。
如附图18中的(b)所示,将数据分成4段,将GPU1、GPU2、GPU3将第1段发给GPU0汇总求和,此时GPU0具备了该平面上第1段数据的汇总结果。GPU0、GPU2、GPU3将第2段数据发给GPU1汇总求和,以此类推。此时GPU0、GPU1、GPU2、GPU3分别有了该平面上第1、2、3、4段数据的汇总结果。同时另一个平面也做相同的操作。
步骤三、两个平面互发数据。
如附图18中的(c)所示,第一个平面的GPU0和第二个平面的GPU4互发第1段数据在本平面的求和结果,并进行求和,因此,第一个平面的GPU0和第二个平面的GPU4具备了两个平面第1段数据的求和结果。同时,其他GPU有做相同的操作。此时,GPU0和GPU4有了第1段数据的最终结果,GPU1和GPU5有了第2段数据的最终结果,以此类推。
步骤四、平面内广播。
如附图18中的(c)所示,第一个平面的GPU0将第1段数据广播到该平面的GPU1、GPU2和GPU3。其他GPU以此类推。
采用上述方法时,存在以下缺点一至缺点四。
缺点一、同一平面内的节点要全互联,需要的高速互联通道较多,不适用于高速互联通道较少的节点。
缺点二、交叉互联不方便硬件布线。
缺点三、全归约的三个步骤中,每个步骤都没有用满所有链路。平面内数据同步时,平面间的链路空闲;平面间数据同步时,平面内的链路空闲。
缺点四、数据分的段数太少,总数据传输时间(纯数据传输时间)较长。设每节点数据量为Q,则第个阶段每条链路的传输数据量是Q/4,设链路带宽为B,则3个阶段总纯数据传输时间为t=3Q/(4B),而下述方法200、方法300和方法400示出的全归约方法中,总纯数据传输时间是t=2Q/(3B)。
下面介绍本申请实施例提供的系统架构。
参见附图19,本申请实施例提供了一种计算系统100。
计算系统100包括多个节点。计算系统100中的节点也称为通信节点或计算节点,或者根据场景的不同而具有其他的不同称谓。计算系统100中的节点用于执行计算任务。可选地,计算系统100中的节点是通过硬件实现的物理节点,或者,计算系统100中的节点是通过软件实现的虚拟节点。计算系统100中节点的类型包括多种情况,本实施例对计算系统100中节点的设备类型不做限定。以下通过情况一至情况三,对计算系统100中节点的具体类型举例说明。
情况一、节点为一个或多个处理器。
该处理器包括而不限于GPU、嵌入式神经网络处理器(neural-networkprocessing units,NPU)、通用中央处理器(central processing unit,CPU),或者,节点也可以是集成电路。例如,节点可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。节点可以是单核处理器,也可以是多核处理器。可选地,计算系统100中的每个节点的类型相同,例如,计算系统100中的每个节点均是NPU。可选地,计算系统100包括多种不同类型的节点。例如,计算系统100中的部分节点是NPU,另外一部分节点是GPU,再一部分节点是ASIC。可选地,在分布式训练的场景下,计算系统100中的节点是神经网络处理器,神经网络处理器俗称为AI芯片、加速芯片或加速卡,神经网络处理器利用算法硬件化的方式加快运算效率。
情况二、节点为独立的硬件设备。
例如,节点为主机、服务器、个人电脑或其他计算机一类的设备。
情况三、节点为软件。
可选地,节点是通过采用虚拟化技术实现的虚拟设备。例如,节点包括而不限于容器、虚拟机、pod中的任一种。又如,节点是一个或多个进程。
为了简明起见,本申请实施例后续在不至于引入理解困难的情况下用“节点+小写英文字母”的形式来简化表示一个具体的节点,这里的小写英文字母可以是节点的标识,如一个节点是节点a。例如,如附图19所示,计算系统100包括8个节点,这8个节点分别是节点a、节点b、节点c、节点d、节点e、节点f、节点g、节点h。
计算系统100可以通过单机实现,也可以通过多台机器实现,以下通过方式一和方式二分别举例说明。
方式一、通过单机实现计算系统100。
在方式一中,计算系统100中的多个节点设置在同一个硬件设备内。例如,系统架构100中的多个节点是同一个硬件设备的不同处理器。比如说,节点a、节点b、节点c、节点d、节点e、节点f、节点g、节点h这8个节点分别是同一个硬件设备中的8个处理器。又如,系统架构100中的多个节点是同一个硬件设备的多核处理器中的不同处理核。又如,系统架构100中的多个节点是同一个硬件设备的不同虚拟机、不同容器、不同进程或不同线程。
可选地,在方式一中,不同节点之间通过设备内部的通信方式通信。
例如,不同节点之间通过硬件设备内的系统总线相连,不同节点通过该系统总线通信。该系统总线包括而不限于串行计算机扩展总线标准(peripheral componentinterconnect express,简称:PCIe)总线、外设部件互连标准(peripheral componentinterconnect,简称:PCI)总线、紧凑型PCI(Compact PCI)总线、私有的高速链路(如NvLink)等等。在一种可能的实现中,采用NPU作为计算系统100中的节点,通过PCIE switch等方式将不同NPU互联,实现不同NPU组成计算系统100。
又如,不同节点与不同的CPU相连,计算系统100中不同CPU连接的节点之间传输的数据通过CPU交换,计算系统100中同一CPU连接的不同节点之间传输的数据通过PCIE交换机或其他类型的系统总线交换。
方式二、通过多台机器实现计算系统100。
在方式二中,计算系统100中的多个节点分别设置在多个硬件设备内,每个硬件设备对应于一个或多个节点。例如,系统架构100中的每个节点是一个硬件设备。计算系统100中的不同节点可以部署在同一地理区域或不同地理区域。计算系统100中的不同节点通过有线网络或无线网络相连。在一种可能的实现中,计算系统100中的每个节点接入至一个或多个网络设备,网络设备用于在计算系统100中的不同节点之间转发数据,其中,网络设备包括而不限于交换机、路由器、私有协议的网络交换设备等。计算系统100中任意两个节点通过网络设备实现互联。
计算系统100的网络拓扑结构为立方体。可选地,计算系统100的网络拓扑结构为一个立方体。或者,计算系统100的网络拓扑结构为多个立方体相连组成的结构。
所述立方体的顶点用于表示所述计算系统100中的节点。可选地,立方体的顶点和计算系统100中的节点是一一对应的。例如,计算系统100包括8个节点,立方体包括8个顶点,每个顶点表示计算系统100中的一个节点。
所述立方体的边也称为棱,所述立方体的边用于表示以边相连的两个节点之间的链路。例如,参见附图19,节点a和节点b之间的边表示节点a和节点b之间的链路。可选地,边表示高速链路,例如,节点是处理器,边表示不同处理器之间通过高速互联总线建立的链路。
立方体包括多个平面,每个平面包括多个节点。例如,一个立方体包括6个平面,6个平面中的每个平面包括四个节点。为了简明起见,本申请实施例后续在不至于引入理解困难的情况下用“平面+四个小写英文字母”的形式来简化表示一个具体的平面,这里的四个小写英文字母分别是平面包括的四个节点的标识。例如,参见附图19,6个平面分别是平面abcd、平面abef、平面adeh、平面dchg、平面bcgf、平面efgh。其中,平面abcd包括节点a、节点b、节点c和节点d这四个节点,平面abef包括节点a、节点b、节点e和节点f这四个节点。
计算系统100中的每个节点在立方体中处于多个平面上,每个节点分别和每个所在平面上的每个相邻节点建立链路。节点可以通过多条链路,并发地与多个平面内的相邻节点进行数据交换,从而实现多个平面的并发通信。例如,计算系统100的网络拓扑结构为一个立方体,每个节点在立方体中处于三个平面上,每个节点具有三条链路,三条链路中的每条链路用于连接节点和节点所在的一个平面的一个相邻节点,每个节点可以通过三条链路并发地与三个所在的平面内的相邻节点通信,如此,每个节点仅需要3条高速链路即可实现整个立方体6个平面的并发通信。例如,请参见附图19,节点a建立了链路ab、链路ad和链路ae这三条链路,节点a通过链路ab与平面abcd内的相邻节点b通信,节点a通过链路ad与平面adeh内的相邻节点d通信,节点a通过链路ae与平面abef内的相邻节点e通信。
从上述对网络拓扑结构的描述可见,计算系统100由于采用了立方体的网络拓扑结构,能够有效节省实现全归约操作所需建立的高速链路的数量。例如,在计算系统中的节点数量为8个的情况下,对附图19示出的计算系统100的网络拓扑结构与附图16和附图17所示的网络拓扑结构进行对比可见,附图16和附图17所示的网络拓扑结构总共需要建立24条高速链路,而附图19示出的网络拓扑结构中每个节点仅需要建立3条高速链路,计算系统100的8个节点总共需要建立12条高速链路,因此高速链路的数量能减少为附图16和附图17所示的链路数量的一半,对高速链路个数要求低,从而节省高速链路的成本。
参见附图20,附图20是对附图19所示的立方体拓扑展开至平面的示意图,从附图20可见,将计算系统100的网络拓扑结构展开至平面时,不存在交叉的链路。由于计算系统100的高速链路之间不存在交叉,保证硬件布线方便。
以上介绍了计算系统100的硬件架构,以下对计算系统100的软件架构进行介绍。
参见附图21,计算系统100中的每个节点部署有通信模块,通信模块是节点上运行的用于并行通信的软件,节点通过通信模块,能够同时并发地在6个方向(3条链路,每条链路2个方向)上进行数据的收发。
以上介绍了计算系统的系统架构,以下通过方法200、方法300和方法400,示例性介绍基于上文提供的系统架构进行数据同步的方法流程。换句话说,方法200、方法300和方法400描述的方法流程关于计算系统如何在立方体内实现全归约操作。方法200、方法300和方法400是基于同一个构思产生的发明。概括来讲,方法200、方法300和方法400描述的数据同步的整体流程均包括以下阶段一至阶段三这三个阶段。
阶段一、平面内的归约拆分操作。
具体地,计算系统中的每个节点将本节点上待同步的数据分成3的倍数段,分别同时在节点所在的3个平面内同时执行局部归约拆分操作。可选地,立方体上6个平面同时分别执行归约拆分操作。
阶段二、相对平面的数据全归约操作。
具体地,对阶段一的归约拆分操作完成的数据段,立方体中3对相对平面的对应顶点同时两两交换数据并汇总求和,完成相对平面的对应两个顶点间的局部全归约操作。在一种可能的实现中,阶段二中采用先在相对平面相对节点执行全收集操作,再在平面内选取的相邻节点执行归约拆分操作的方式。在另一种可能的实现中,阶段二中采用先在平面内选取的相邻节点执行全收集操作,再在相对平面相对节点执行全归约操作的方式。
阶段三、平面内全收集。
具体地,立方体上6个平面分别同时执行全收集操作。其中,在一种可能的实现中,每个节点将本节点汇总的数据广播至本平面上的其他节点,具体请参见下述方法300;在另一种可能的实现中,每个节点将本节点汇总的数据广播至本平面上的相邻节点,具体请参见下述方法400。
参见附图22,附图22是本申请实施例提供的一种计算系统中的数据同步方法200的流程图。
方法200由计算系统中的第一节点执行。第一节点是计算系统中的任一个节点。例如,第一节点是计算系统中的节点a、节点b、节点c、节点d、节点e、节点f、节点g或者节点h。
可选地,计算系统中第一节点之外的每个其他节点执行的步骤和第一节点相同,换句话说,方法200不仅应用在第一节点上,还应用在其他节点上,例如应用在计算系统中的所有节点上。
可选地,在第一节点执行方法200中的任一个步骤时,其他节点和第一节点并行地执行该步骤,换句话说,方法200由计算系统的多个节点并行执行,例如,方法200中的每个步骤由计算系统中的所有节点同时执行。例如,立方体的每个平面同时执行相同的步骤。
可选地,下述方法200、方法300和方法400中各个步骤涉及的操作,如全收集操作、归约拆分操作和全归约操作等针对的对象是有效的数据段。其中,有效的数据段是指上一个步骤操作完成产生的最终结果数据。有些节点上的一些数据段经过一个步骤的操作后,会产生中间结果数据,中间结果数据不是有效的数据段,不会被执行下一个步骤的操作。例如,请参见附图31,附图31所示的各个数据段中斜体白色字体的数据段表示有效数据段,附图31是对平面abcd内和平面efgh内执行归约拆分操作后的每个节点上分布的数据举例说明,节点a上的数据段Ra在经过平面abcd内的归约拆分操作后,产生了数据R1abc、数据R2ab、数据R3a和数据R4abcd,其中,数据R4abcd是有效数据段,会被执行下一个步骤中的全归约操作;数据R1abc、数据R2ab和数据R3a是中间结果数据,不会被执行下一个步骤的操作。
示例性地,方法200包括S201至S204。
S201、第一节点按照第一节点在立方体中所处的多个第一平面,对第一节点上待同步至计算系统的数据进行拆分,得到每个第一平面对应的数据段。
第一平面是指第一节点在立方体中所处的平面。第一平面的顶点包括第一节点。第一节点在立方体中同时处于多个平面上,换句说,第一平面的数量是多个,每个第一平面的顶点均包括第一节点。例如,请参见图19,节点a在立方体中位于平面abcd、平面abef和平面adeh,节点c在立方体中位于平面dchg、平面bcgf、平面abcd。在第一节点是节点a的情况下,第一节点所处的多个第一平面是指平面abcd、平面abef和平面adeh。在第一节点是节点c的情况下,第一节点所处的多个第一平面是指平面dchg、平面bcgf和平面abcd。
可选地,第一平面的数量是三个。例如,计算系统包括8个节点,这8个节点组成一个立方体,每个节点在立方体中会位于3个平面上,在这种情况下,第一平面的数量是三个。
第一节点上待同步的数据的具体含义包括多种情况。在一些实施例中,计算系统用于执行分布式计算任务,第一节点上待同步的数据是第一节点执行分布式计算任务中第一节点对应的子任务得到的结果。可选地,应用在AI领域的并行训练场景下,在模型训练的每次迭代过程中,会为整个系统加载一次批尺寸的训练数据,在一次批尺寸的训练数据中为每个节点分配一份训练数据,在这一场景下,第一节点上待同步的数据例如是第一节点根据分配给自己的一份训练数据计算的梯度值,通过将第一节点计算的梯度值同步至系统中的其他节点,以便得到不同节点计算的梯度值对应的平均梯度,将平均梯度应用于模型的权重中以获得新的权重。又如,在物理实验数据分析的场景下,第一节点上待同步的数据是根据物理实验数据计算出的分析结果。当然,以上列举的数据仅是示例,该计算系统也可以用于执行并行训练、物理实验数据分析之外的其他并行计算任务,第一节点上待同步的数据是通过执行其他并行计算任务中的子任务得到的结果,本实施例对待同步的数据的具体类型不做限定。
数据段是指数据中的一部分,数据包括至少一个数据段。数据段是按照节点所在的平面对数据拆分得到的,同一个节点在立方体中会处于多个平面,相应地,一个节点的数据会拆分为多个数据段。节点所在的每个平面对应于至少一个数据段,同一平面内的每个节点会对该平面对应的数据段执行归约拆分操作。为了简明起见,本申请实施例后续用“大写英文字母+小写英文字母”的形式表示具体的一个节点上的一个数据段,其中大写英文字母是一对位置相对的平面的标识,小写英文字母是节点的标识。例如,数据段Ra表示节点a上拆分的平面R对应的数据段,数据段Gb表示节点b上拆分的平面G对应的数据段。
可选地,第一节点根据多个第一平面的数量,对第一节点上待同步至计算系统的数据进行拆分,得到每个第一平面对应的数据段,数据段的数量为多个第一平面的数量的整数倍。例如,第一节点在立方体中位于三个第一平面,第一节点将数据拆分为3个数据段,每个第一平面对应一个数据段,或者,第一节点将数据拆分为3的倍数个数据段,如6个数据段或9个数据段,每个第一平面对应多个数据段。依次类推,计算系统中每个节点均执行拆分数据的步骤,使得每个节点上的数据均被分成3的倍数个数据段。
示意性地,请参考或附图19、附图23和附图26,立方体中包括6个平面,6个平面共包括三对位置相对的平面,一对位置相对的平面是平面abcd和平面efgh,另外一对位置相对的平面是平面adeh和平面bcgf,另外一对位置相对的平面是平面dchg和平面abef。为了简明起见,本申请实施例后续用“平面+大写英文字母”的形式表示具体的一对位置相对的平面,其中平面R表示平面abcd和平面efgh,平面G表示平面dchg和平面abef,平面B表示平面adeh和平面bcgf。此外,为了方便理解,附图23采用填充的三种图案标识立方体的6个平面(填充的图案标识仅为了理解方便,不是实际存在的操作步骤),其中相对的两个平面采用相同的图案标识。
例如,请参见附图26,立方体中每个节点位于3个平面上,每个节点的数据会被进行3等分。其中,节点a将节点a的数据拆分为数据段Ra、数据段Ga和数据段Ba;节点b将节点b的数据拆分为数据段Rb、数据段Gb和数据段Bb,依次类推。其中,节点a上的数据段Ra、节点b上的数据段Rb、节点c上的数据段Rc等8个数据段对应于平面R,节点a上的数据段Ga、节点b上的数据段Gb、节点c上的数据段Gc等8个数据段对应于平面G,节点a上的数据段Ba、节点b上的数据段Bb、节点c上的数据段Bc等8个数据段对应于平面B。应理解,附图26中填充的图案是对数据段和平面之间的对应关系的举例说明,填充的图案是为了理解方便,不是实际存在的操作步骤。
S202、第一节点分别与计算系统中位于每个第一平面的共面节点,对每个第一平面对应的数据段执行归约拆分操作,得到每个第一平面对应的第一结果数据。
步骤S202关于第一节点如何在平面内执行归约拆分操作。
可选地,步骤S202可以理解为局部归约拆分操作。例如,与上述附图16、附图17和附图18所示的方法涉及的归约拆分操作相区别,步骤S202描述的归约拆分操作是在计算系统中处于同一个平面内的节点的范围内执行归约拆分操作,而非在计算系统中的所有节点的范围内执行归约拆分操作。例如,在计算系统包括8个节点,每个平面包括4个节点的情况下,步骤S202描述的归约拆分操作是在同一个平面内的4个节点的范围内执行归约拆分操作,而非在8个节点的范围内执行归约拆分操作。
步骤S202中归约拆分操作的对象是步骤S201拆分得到的数据段。换句话说,步骤S202关于对同一个平面的每个节点的部分数据执行归约拆分操作。例如,每个节点将本地的数据拆分为3个数据段后,每个数据段是节点的数据的1/3,通过步骤S202会将同一个平面中四个节点上的数据的1/3进行归约拆分操作。
第一结果数据是指数据段经过归约拆分操作得到的结果。第一结果数据是第一平面上每个节点上的一个或多个子数据段的归约结果。例如,第一结果数据是第一节点具有的一个子数据段和每个共面节点具有的一个子数据段的归约结果。可选地,第一平面上包括四个节点,分别是第一节点和第一节点之外的三个共面节点,则第一结果数据是四个节点分别具有的子数据段的归约结果。例如,第一结果数据是四个子数据段的归约结果,四个子数据段中的每个子数据段分别来自第一平面上的一个节点。例如,请参见附图29,第一平面是平面abcd,第一节点是节点a,节点a得到的第一结果数据是R1abcd。R1abcd是子数据段R1a、子数据段R1b、子数据段R1c、子数据段R1d这四个子数据段的归约结果。其中,子数据段R1a来自节点a本地,子数据段R1b来自平面abcd上的节点b,子数据段R1c来自平面abcd上的节点c,子数据段R1d来自平面abcd上的节点d。
可选地,第一结果数据是第一平面上每个节点上同一位置的子数据段的归约结果。其中,同一位置的子数据段是指数据段中排序相同的子数据段。例如,同一位置的子数据段是节点a上的数据中的第一个子数据段、节点b上的数据中的第一个子数据段、节点c上的数据中的第一个子数据段、节点d上的数据中的第一个子数据段。可选地,同一位置的子数据段具有相同的标识,该标识用于表示子数据段在数据段中的排序,例如每个节点上数据中的第一个子数据段均称为R1段数据,每个节点上数据中的第二个子数据段均称为R2段数据,每个节点上数据中的第三个子数据段均称为R3段数据,以此类推。
可选地,归约拆分操作中的归约通过求和操作实现,第一结果数据是第一平面上的四个子数据段之和。例如,第一平面包括节点a、节点b、节点c和节点d,第一结果数据是节点a具有的子数据段1、节点b具有的子数据段1、节点c具有的子数据段1和节点d具有的子数据段1之和。
可选地,归约拆分操作中的归约通过求最大值操作实现,第一结果数据是第一平面上的四个子数据段中的最大值。例如,第一平面包括节点a、节点b、节点c和节点d,第一结果数据是节点a具有的子数据段2、节点b具有的子数据段2、节点c具有的子数据段2和节点d具有的子数据段2中的最大值。
共面节点是指和第一节点处于同一平面的节点,即位于第一平面上的节点。具体地,第一节点在立方体中处于多个第一平面上,每个第一平面上包括至少三个共面节点。例如,请参见附图19或附图23,节点a在立方体中位于平面abcd、平面abef和平面adeh,平面abcd中除了节点a之外还包括节点b、节点c和节点d,平面abef中除了节点a之外还包括节点b、节点e和节点f,平面adeh中除了节点a之外还包括节点d、节点e和节点h,在第一节点是节点a的情况下,每个第一平面的共面节点是指平面abcd中的节点b、节点c和节点d、平面abef中的节点b、节点e和节点f、平面adeh中的节点d、节点e和节点h。
可选地,共面节点包括第一平面上与第一节点相邻的节点或第一平面上与第一节点不相邻的节点中的至少一项。换句话说,共面节点可以指第一节点的相邻节点,也可以指与第一节点不相邻且共面的节点。其中,第一节点的相邻节点是指和第一节点位于同一条边的节点。从拓扑的角度来说,第一节点和相邻节点通过一跳链路相连。与第一节点不相邻且共面的节点例如是处于第一节点所在的对角线上的节点。例如,请参见附图19或附图23,对于平面abcd而言,节点a的共面节点包括节点b、节点c和节点d,其中节点b和节点d是对节点a的相邻节点的举例说明,节点c对节点a的不相邻且共面的节点的举例说明。
可选地,第一节点分别与计算系统中位于每个第一平面的共面节点,并行地对每个第一平面对应的数据段执行归约拆分操作。通过并行执行的方式,第一节点可以同时与多个第一平面的共面节点分别执行归约拆分操作。以第一节点是节点a为例,请参见附图23,节点a位于3个平面上,这3个平面分别是平面abcd、平面abef和平面adeh,节点a会同时分别与平面abcd、平面abef和平面adeh内的共面节点执行归约拆分操作,如此节点a实现了在节点a所在的3个平面内同时做局部归约拆分操作。
以上示出了第一节点在多个第一平面内执行归约拆分操作的过程。可选地,计算系统中的每个节点均采用和第一节点同样的方式,分别在各自所在的多个平面中的每个平面内并行地执行归约拆分操作,使得立方体中的每个平面同时对平面对应的数据段执行归约拆分操作。
在一种可能的实现中,多个第一平面在执行归约拆分操作时均按照逆时针的方向通信,或者,多个第一平面在执行归约拆分操作时均按照顺时针的方向通信。其中,逆时针的通信方向例如是使用右手法则拇指指向立方体外的情况,顺时针的通信方向例如是使用右手法则拇指指向立方体内的情况。例如,请参见附图24和附图25,附图24示出了采用逆时针的方向通信的情况。附图25示出了采用顺时针的方向通信的情况。在下面的实施例中,将以逆时针通信的情况为例做说明。由于方法200涉及多个平面的并发通信,多个平面通过统一采用顺时针或逆时针的方向通信,能够避免不同平面的通信产生冲突,保证每个链路在收发两个方向上的带宽都得到利用。
在一些实施例中,第一节点会根据第一平面和数据段之间的对应关系,和不同第一平面内的共面节点对不同的数据段执行归约操作。以第一节点是节点a为例,请参见附图23,节点a会根据平面abcd和数据段R之间的对应关系,与节点b、节点c、节点d对平面abcd对应的数据段(数据段R)执行归约拆分操作;节点a会根据平面abef和数据段G之间的对应关系,与节点b、节点e、节点f对平面abef对应的数据段(数据段G)执行归约拆分操作;节点a会根据平面adeh和数据段B之间的对应关系,与节点d、节点e、节点h对平面adeh对应的数据段(数据段B)执行归约拆分操作。例如,请参见附图23和附图26,同一平面的每个节点在执行平面内归约拆分操作时,只对和该平面相对应的数据段执行归约拆分操作,平面对应的数据段例如是附图示出的和平面填充了相同图案的数据段。其中,由于一个立方体包括8个节点,每个平面只包含了一半节点(4个节点),因此做完平面内归约拆分操作后,会汇总了一半节点的结果,后续会通过执行步骤S204,把两个位置相对的平面的数据合并在一起,从而完整地汇总求和了八个节点的数据。以一对位置相对的平面(平面R)是平面abcd和平面efgh为例,数据段按照平面划分如附图27所示,平面abcd内待执行归约拆分操作的数据段是节点a上的数据段Ra、节点b上的数据段Rb、节点c上的数据段Rc、节点d上的数据段Rd,平面efgh内待执行归约拆分操作的数据段是节点e上的数据段Re、节点f上的数据段Rf、节点c上的数据段Rg、节点d上的数据段Rh。
在一些实施例中,S202通过以下S2021至S2022实现。
S2021、第一节点根据计算系统位于每个第一平面的节点数量,对每个第一平面对应的数据段分别拆分,得到每个第一平面对应的多个子数据段,子数据段的数量为对应第一平面的节点数量的整数倍。
子数据段是指数据段中的一部分,一个数据段包括至少一个子数据段。子数据段是按照平面包含的节点数量对数据段拆分得到的,立方体中每个平面包括多个节点,相应地,一个数据段会拆分为多子数据段。例如,立方体中的一个平面包括4个节点,每个节点在执行平面内归约拆分操作时,会将平面对应的数据段按照平面环中节点的数量分为4等份。例如,请参见附图28,平面abcd上的节点a、节点b、节点c和节点d均会将平面abcd对应的数据段R拆分为4个子数据段,平面efgh上的节点e、节点f、节点g和节点h均会将平面efgh对应的数据段R拆分为4个子数据段,例如,节点a对数据段Ra进行拆分,得到子数据段R1a、子数据段R2a、子数据段R3a、子数据段R4a,节点b对数据段Rb进行拆分,得到子数据段R1b、子数据段R2b、子数据段R3b、子数据段R4b,依次类推。
S2022、第一节点分别与每个第一平面的共面节点,同步彼此得到的第一平面对应的子数据段。
在按照节点所在的3个平面将数据拆分为3个数据段,并按照平面中具有的4个节点,将每个数据段拆分为4个子数据段的情况下,第一节点在归约拆分操作的每一步交换数据段的4分之一(即节点上数据的12分之一)。例如,平面abcd选取节点d为归约拆分过程中起始数据传递的起始节点,平面efgh选取节点e为数据传递的起始节点,则经过3步的同步操作,平面abcd和平面efgh内归约拆分操作的结果(第一结果数据)如附图29所示。附图29中白色斜体字体的结果数据,表示已经汇总了本平面节点之和的结果数据,例如平面abcd对应的第一结果数据包括节点a上的结果数据R1abcd、节点b上的结果数据R4abcd、节点c上的结果数据R3abcd、节点d上的结果数据R2abcd。需要说明的一点是,平面内归约拆分操作的过程中,数据传递的起始节点是指在归约拆分的第一步发送了序号是1的子数据段的节点。例如,平面abcd选取节点d为起始节点,是指节点d在归约拆分的第一步发送的子数据段是子数据段R1d;平面efgh选取节点e为起始节点,是指节点e在归约拆分的第一步发送的子数据段是子数据段R1e。
为了简明起见,本申请实施例后续在不至于引入理解困难的情况下用“大写英文字母+数字+小写英文字母组合”的形式来简化表示具体的结果数据,这里的大写英文字母是一对位置相对的平面的标识,数字是子数据段的标识,小写英文字母组合中的小写英文字母是节点的标识,这一命名规则的含义是:结果数据是每个小写英文字母指代的节点上大写英文字母指代的数据段中数字指代的子数据段之和。例如,结果数据R1abcd表示子数据段R1a、子数据段R1b、子数据段R1c和子数据段R1d这四个子数据段之和,其中,子数据段R1a表示节点a上的平面R对应的数据段中的第一个子数据段,子数据段R1b表示节点b上的平面R对应的数据段中的第一个子数据段,子数据段R1c表示节点c上的平面R对应的数据段中的第一个子数据段,子数据段R1d表示节点d上的平面R对应的数据段中的第一个子数据段。又如,结果数据R3efgh表示子数据段R3e、子数据段R3f、子数据段R3g和子数据段R3h这四个子数据段之和,以此类推。
应理解,归约拆分操作选取的起始节点不同,子数据段汇总的位置会有不同的结果,附图29是可能结果中的一种示例。用○表示平面abcd上汇总的子数据段和节点位置,用×表示平面efgh上汇总的子数据段和节点位置,并将两个平面画在一起,用
Figure BDA0002504947860000201
表示两个平面汇总结果重叠的位置,则可能的结果如附图30所示。选取好传递的起始节点,使得第一结果数据是附图30中的(1)、(2)、(7)、(8)、(11)、(12)之一。下面仅以第一结果数据为附图30中的(2)所示为例,此时平面abcd和平面efgh这两个平面的数据分布如附图31所示。
以上介绍了平面abcd和平面efgh这一对平面R通过执行归约拆分操作以实现数据同步的过程,立方体中平面R之外的平面G和平面B也会同时做同样的数据同步过程,因此平面G和平面B上也会具有类似的结果。其中,由于平面内执行归约拆分操作的阶段中有6个平面同时在通信,因此,平面内执行归约拆分操作的阶段中所有链路的两个方向的带宽是同时使用的。
S203、第一节点分别与计算系统中位于每个第二平面的相对节点,对每个第一平面对应的第一结果数据执行全归约操作,得到每个第一平面对应的第二结果数据。
步骤S203关于第一节点如何实现相对平面的对应两个顶点之间的局部全归约操作。
第二平面是立方体中与第一平面位置相对的平面。第二平面的数量和第一平面的数量相等。可选地,第二平面的数量和第一平面的数量相等,每一个第二平面和对应的第一平面位置相对。例如,请参见附图23,节点a在立方体中位于平面abcd、平面abef和平面adeh,平面abcd和平面efgh位置相对,平面abef和平面dchg位置相对,平面adeh和平面bcfg位置相对。在第一节点是节点a的情况下,第二平面是指平面efgh、平面dchg或平面bcfg。
相对节点是指位于第二平面上的节点。可选地,相对节点是第二平面上与第一节点位置相对的节点,换句话说,相对节点和第一节点在立方体中位于同一条边上。例如,请参见附图19,对于平面abcd来说,节点a的相对节点是平面efgh上的节点e,节点b的相对节点是平面efgh上的节点f。
第二结果数据也称子数据段的汇总结果,第二结果数据包括第一平面上每个节点上的子数据段和第二平面上每个节点上的相应子数据段的归约结果,即一对位置相对的平面上每个节点上的子数据段的归约结果。可选地,第一平面包括四个节点,第二平面上包括四个节点,第二结果数据是八个节点分别具有的子数据段的归约结果,例如是八个子数据段的归约结果。可选地,第二结果数据包括一对位置相对的平面上每个节点上同一位置的子数据段的归约结果。
可选地,归约通过求和操作实现,第二结果数据是第一平面上的四个节点相应子数据段和第二平面上的四个节点相应子数据段之和。例如,第一平面包括节点a、节点b、节点c和节点d,第二平面包括节点e、节点f、节点g和节点h,第二结果数据是节点a具有的子数据段1、节点b具有的子数据段1、节点c具有的子数据段1、节点d具有的子数据段1、节点e具有的子数据段1、节点f具有的子数据段1、节点g具有的子数据段1和节点h具有的子数据段1这八个子数据段之和。
可选地,归约通过求最大值操作实现,第二结果数据是第一平面上的四个节点相应子数据段和第二平面上的四个节点相应子数据段中的最大值。例如,第一平面包括节点a、节点b、节点c和节点d,第二平面包括节点e、节点f、节点g和节点h,第二结果数据是节点a具有的子数据段2、节点b具有的子数据段2、节点c具有的子数据段2、节点d具有的子数据段2、节点e具有的子数据段2、节点f具有的子数据段2、节点g具有的子数据段2和节点h具有的子数据段2这八个子数据段中的最大值。
S204、第一节点分别与每个第一平面内的共面节点,对每个第一平面对应的第二结果数据执行全收集操作。
步骤S204关于第一节点如何实现平面内的全收集操作。第一节点分别在每个所在的第一平面内执行全收集操作后,会获得计算系统中数据的全归约结果,从而将计算系统中每个节点的数据均同步至了所有第一节点。
计算系统中数据的全归约结果为计算系统中每个节点上待同步的数据的归约结果,可以作为计算系统中所有节点上的数据的汇总结果。例如,在归约通过求和实现的情况下,计算系统的数据全归约结果是每个节点上待同步的数据之和。从立方体的角度来说,计算系统的数据全归约结果包括立方体中多对位置相对的平面中每一对位置相对的平面的全归约结果。例如,请参见附图32,第一节点是节点a,节点a获得的计算系统的数据全归约结果包括平面R的全归约结果、平面G的全归约结果和平面B的全归约结果。其中,平面R的全归约结果包括R1abcdefg、R2abcdefg、R3abcdefg和R4abcdefg;平面G的全归约结果包括G1abcdefg、G2abcdefg、G3abcdefg和G4abcdefg;平面B的全归约结果包括B1abcdefg、B2abcdefg、B3abcdefg和B4abcdefg。由此可见,节点a在执行方法200后,得到了立方体中所有节点(节点a、节点b、节点c、节点d、节点e、节点f、节点g这8个节点)上的数据的汇总结果。
可选地,计算系统中第一节点之外的其他每个节点执行与S204相同的步骤,在各自所在的每个平面的全收集操作,使得每个节点均获得计算系统中数据的全归约结果,从而将第一节点上的数据同步至计算系统的所有节点,从而实现了整个计算系统的数据同步。例如,请参见附图32,节点a、节点b、节点c、节点d、节点e、节点f、节点g这8个节点执行相同的步骤,8个节点均获得了平面R的全归约结果、平面G的全归约结果和平面B的全归约结果。
可选地,第一节点分别与每个第一平面内的共面节点,并行地对每个第一平面对应的第二结果数据执行全收集操作,从而实现多个第一平面内同时进行全收集操作。可选地,在第一节点执行S204的同时,计算系统中每个节点同时执行与S204同理的步骤,从而实现立方体中的6个平面分别同时执行全收集操作。
本实施例提供了一种基于立方体的网络拓扑结构实现全归约的方法,通过按照节点在立方体中所在的每个平面,将节点上的数据分成多个数据段,分别在节点所在的多个平面内执行归约拆分操作,对归约拆分操作得到的结果数据,执行相对平面的两个对应节点之间的全归约操作,在节点所在的多个平面内对全归约操作得到的结果数据执行全收集操作,能够显著减少实现数据发起和同步次数,因此显著减少了数据同步开销。
以下对方法200的技术效果进行具体地分析和描述。
一方面,由于每个节点通过三条链路即可分别在所在的三个平面内进行数据同步,或者分别在相对的三个平面内进行数据同步,因此每个节点建立三条链路即可实现全归约,减少了每个节点所需建立的链路数量,显著节省了计算系统中总共需要建立的链路数量,对实现全归约所需建立的链路的个数要求,节省了建立链路带来的成本。
另一方面,计算系统中拓扑展平至平面后的高速链路之间不存在交叉,因此硬件布线方便。
另一方面,在计算系统数据同步过程中,数据发起和同步是一大开销。而方法200能够显著减少实现全归约带来的数据发起和同步次数,因此显著减少了计算系统的数据同步开销。例如,在计算系统包括8个节点的情况下,方法200仅需8次数据发起和同步即可实现全归约,可见数据发起和同步的次数少,大约是附图16和附图17所示方式中的一半。具体地,采用附图16和附图17所示方式时,数据发起和同步次数是14次。而采用方法200时,数据发起和同步次数是8次或6次。
具体地,当采用下述方法300实现时,数据发起和同步次数是8次。其中,平面内执行归约拆分操作的过程(阶段一)数据发起和同步次数是3次。这3次对应于归约拆分操作的3个步骤。具体地,立方体的一个平面包括4个节点,这4个节点通过环的方式执行归约拆分操作时需要数据发起和同步4-1=3次,因此一个平面执行归约拆分操作时数据发起和同步的次数是3次,由于立方体的6个平面同时执行归约拆分操作,因此6个平面执行归约拆分操作的过程共需数据发起和同步3次。相对平面内对数据进行全归约操作(阶段二)数据发起和同步次数是2次。例如,相对平面的相对节点执行全收集操作产生一次数据发起和同步,同一平面的相邻节点执行归约拆分操作产生一次数据发起和同步。又如,同一平面的相邻节点执行全收集操作产生一次数据发起和同步,相对平面的相对节点执行全归约操作产生一次数据发起和同步。平面内全收集操作(阶段三)数据发起和同步次数是3次。具体地,立方体的一个平面包括4个节点,这4个节点通过环的方式交换彼此的数据操作时需要数据发起和同步4-1=3次。
当采用方法400实现时,数据发起和同步次数是6次。其中,阶段一共需数据发起和同步3次。阶段二共需数据发起和同步2次。阶段三共需数据发起和同步1次。
另一方面,方法200能够显著减少数据同步过程的数据传输时间。例如,每个节点上待同步的数据的数据量是Q,链路的单向带宽是B,方法200的数据传输时间是2Q/(3B),而附图18所示方式的数据传输时间是3Q/(4B)。具体地,由于数据被分为3(R、G、B)*4(一个平面组成的环中有4个节点)=12份,因此每次传输的数据量是Q/12,阶段一有3个步骤,阶段二有2个步骤,阶段三有3个步骤,因此总共有8个步骤,因此t=t1+t2+t3=8Q/(12B)=2Q/(3B),其中,t表示数据同步总共的数据传输时间,t1表示数据同步的阶段一的数据传输时间,t2表示数据同步的阶段二的数据传输时间,t3表示数据同步的阶段三的数据传输时间。
另一方面,方法200避免了出现空闲链路的情况,保证系统中所有链路的双向带宽的有效利用。
以下通过方法300,对方法200进行举例说明。在方法300中,阶段二中相对平面的数据全归约操作(对应于S203)通过先在相对平面相对节点执行全收集操作,再在平面内选取的相邻节点执行归约拆分操作的方式实现,具体参见S305和S306。阶段三中平面内全收集(对应于S204)通过环的方式实现,具体参见S307。应理解,方法300与方法200同理的步骤还请参见方法200,在方法300中不做赘述。
参见附图33,附图33为本申请实施例提供的一种计算系统中数据同步的方法300的流程图,方法300是对基于立方体的网络拓扑结构实现全归约操作总体流程的举例说明。示例性地,方法300包括S301至S307。
S301、将多个节点逻辑上连接形成立方体的网络拓扑结构。
步骤S301是对计算系统的网络组建过程的举例说明。例如,计算系统中具有8个节点,8个节点中的每个节点和其他3个节点分别建立链路,,以便通过建立的3条链路分别在所在的3个平面内通信,8个节点以及不同节点之间的链路会形成一个立方体的网络拓扑结构。例如,请参见附图19,节点a分别和节点b、节点d、节点e建立链路,通过链路ab、链路ad和链路ae这3条链路,节点a能够分别在平面abcd、平面abef和平面adeh这三个节点a所在的平面内通信,节点b、节点c至节点g这其余7个节点执行的步骤和节点a执行的步骤同理。
S302、将每个节点上待同步的数据分成3段,或者3的倍数段。
S303、将每个节点的数据段无重复地分配至其所在的三个平面(同一平面的4个节点为该平面分配的数据段的序号相同)。
步骤S302和步骤S303是对方法200中步骤S201的举例说明。具体地,由于每个节点同时位于立方体的3个平面上,因此每个节点按照所处的3个平面,会将待同步的数据拆分为3个数据段,或者3的倍数个数据段。每个节点拆分得到多个数据段后,会将每个数据段分配给一个所在的平面。
S304、立方体6个平面同时对各自所负责的数据段执行归约拆分操作。
步骤S304是对方法200中步骤S202的举例说明。
S305、3对位置相对的平面的12对相对节点,将完成归约拆分操作的数据段发送给对方(相当于两节点之间对已完成数据段执行全收集操作)。
步骤S305和步骤S306是对方法200中步骤S203的实现方式的举例说明。
以一对相对节点分别是第一节点和第二平面内第一节点的相对节点为例,在执行S305的过程中,第一节点分别与每个第二平面的相对节点,对每个第一平面对应的第一结果数据执行全收集操作,得到每个第一平面对应的第三结果数据。
可选地,第一平面上包括四个节点,第二平面上包括四个节点,则第三结果数据包括两份归约结果,每份归约结果分别来自一个平面上的四个节点。其中,一份归约结果是第一平面上四个子数据段的归约结果(即第一结果数据),另一份归约结果是第二平面上四个子数据段的归约结果。可选地,第三结果数据包括第一平面上每个节点上的同一位置的子数据段的归约结果(第一结果数据)和第二平面上每个节点上的另一位置的子数据段的归约结果。
可选地,归约通过求和操作实现,第三结果数据包括第一平面上的四个子数据段之和以及第二平面上的四个子数据段之和。例如,第一平面包括节点a、节点b、节点c和节点d,第二平面包括节点e、节点f、节点g和节点h,第三结果数据包括两个和值,一个和值是节点a具有的子数据段3、节点b具有的子数据段3、节点c具有的子数据段3、节点d具有的子数据段3之和,另一个和值是节点e具有的子数据段4、节点f具有的子数据段4、节点g具有的子数据段4和节点h具有的子数据段4这四个子数据段之和。
以上描述了特定的一个节点(第一节点)执行的步骤,与第一节点执行的步骤同理,立方体中第一节点之外的其他节点与其他节点的相对节点执行全收集操作。依次类推,立方体的每一对位置相对的平面中每一对相对节点之间对归约拆分操作得到的数据段执行全收集操作,从而实现立方体的12对相对节点之间的数据汇总。例如,请参考附图34,以附图34的平面R对应的平面abcd和平面efgh为例,节点a向节点e发送第一结果数据R4abcd,并从节点e接收第一结果数据R3efgh;节点e向节点a发送第一结果数据R3efgh,并从节点a接收第一结果数据R4abcd。互发汇总后,节点a和节点e获得了相同的第三结果数据,该第三结果数据是第一结果数据R3efgh和第一结果数据R4abcd。其他节点做类似的操作,最终平面abcd和平面efgh这两个平面的第三结果数据如附图35所示,附图35中的白色斜体字示出的结果数据是对第三结果数据的举例说明,例如节点c得到的第三结果数据是数据R1efgh和数据R2abcd,节点e得到的第三结果数据是数据R3efgh和数据R4abcd。
S306、在每个平面内,拥有相同数据段相对平面归约拆分结果的两对节点执行归约拆分操作。
其中,归约操作例如是求和操作,S306相当于2个节点的归约拆分操作,6个平面的12对节点同时操作。
以一对相邻的节点分别是第一节点和与第一节点相邻的节点为例,在执行S306的过程中,第一节点分别与每个第一平面上的第四节点,对每个第一平面对应的第三结果数据执行归约拆分操作,得到每个第一平面对应的第二结果数据。其中,第四节点是第一平面上与第一节点相邻的节点,例如第四节点是与第一节点处于同一条边的节点。
在一些实施例中,第一节点在一个第一平面上具有2个相邻节点,第一节点从2个相邻节点中选取第四节点,与选取的第四节点对第三结果数据执行归约拆分操作。第一节点如何选取第四节点包括多种方式,在一种可能的实现中,第一节点选取具有相同子数据段的第三结果数据的相邻节点,该具有相同子数据段的第三结果数据的相邻节点即为这里所说的第四节点。采用这种实现方式时,第四节点满足的约束条件例如是:第四节点得到的第三结果数据和所述第一节点得到的第三结果数据对应于相同的子数据段。举例来说,第一节点是节点a,节点a在平面abcd上具有2个相邻节点,分别是节点b和节点d。其中,节点a得到的第三结果数据是R3efgh和R4abcd,节点b得到的第三结果数据是R3abcd和R4efgh,节点d得到的第三结果数据是R1abcd和R2efgh。在这个例子中,节点a得到的第三结果数据对应的子数据段是R3和R4,节点b得到的第三结果数据对应的子数据段是R3和R4,节点d得到的第三结果数据对应的子数据段是R1和R2。在节点b和节点d这2个相邻节点中,节点b得到的第三结果数据对应的子数据段和节点a得到的第三结果数据对应的子数据段都是R3和R4,即,节点b得到的第三结果数据对应的子数据段和节点a得到的第三结果数据对应的子数据段是相同的,因此节点b满足约束条件。换句话说,对于节点a而言,节点b是第四节点,节点d不是第四节点。因此,节点a会选取节点b,节点a与节点b执行归约拆分操作。
以上描述了第一节点与一个第一平面上的第四节点执行归约拆分操作的流程,如上文介绍的,第一节点同时处于多个第一平面上,第一节点可以采用同理的方式,分别与每个第一平面上的第四节点执行归约拆分操作。例如,第一节点是节点a,节点a会分别与平面abcd上的第四节点、平面abef上的第四节点和平面adeh上的第四节点执行归约拆分操作,得到平面abcd的第二结果数据、平面abef的第二结果数据和平面adeh的第二结果数据。在一些实施例中,第一节点将第一平面对应的第三结果数据发送至第四节点,并从第四节点接收的第一平面对应的第三结果数据,第一节点对接收的第三结果数据和本地的第三结果数据进行归约操作,得到第一平面对应的第二结果数据。
在一些实施例中,归约拆分操作通过求和操作实现,每个平面内有2对相邻的节点互相收发相对平面对相同位置的子数据段的归约拆分操作结果并执行求和操作,6个平面的12对节点会同时执行操作。例如,在平面abcd内,节点b接收到节点a发来的第三结果数据R3efgh后,将第三结果数据R3efgh和本地的第三结果数据R3abcd进行求和,得到R3efgh和R3abcd的和值R3abcdefgh(第二结果数据),从而将子数据段R3对应的结果数据归约到节点b。节点a接收到节点b发来的第三结果数据R4abcd后,将第三结果数据R4abcd和本地的第三结果数据R4efgh进行求和,得到R4abcd和R4efgh的和值R4abcdefgh(第二结果数据),从而将子数据段R4对应的结果数据归约到节点a。
同理地,立方体中每个平面上每个节点均和一个相邻的节点执行归约拆分操作,从而实现整个立方体的12对相邻节点的归约拆分操作。例如,平面abcd上对第三结果数据执行归约操作的过程中,节点a和节点b相互归约,节点c和节点d相互归约;平面efgh上对第三结果数据执行归约操作的过程中,节点e和节点f相互归约,节点g和节点h相互归约。
例如,在平面abcd内,将子数据段R3对应的结果数据(R3abcdefgh)归约到节点b。将子数据段R4对应的结果数据(R4abcdefgh)归约到节点a。同理地,将子数据段R1对应的结果数据(R1abcdefgh)归约到节点d,将子数据段R2对应的结果数据(R2abcdefgh)归约到节点c,归约后数据的排列仍然和附图30中(2)的○的位置一致。在平面efgh内,将子数据段R3对应的结果数据(R3abcdefgh)归约到节点e,将子数据段R4对应的结果数据(R4abcdefgh)归约到节点f,将子数据段R1对应的结果数据(R1abcdefgh)归约到节点g,将子数据段R2对应的结果数据(R2abcdefgh)归约到节点h,归约后数据的排列仍然和附图30中(2)的×的位置一致。结果如附图37所示。
可选地,第一节点分别与每个第一平面的第四节点,并行地对每个第一平面对应的第三结果数据执行归约拆分操作。例如,节点a与平面abcd中的相邻节点执行归约拆分操作的同时,还与平面abef中的相邻节点执行归约拆分操作,并与平面adeh中的相邻节点执行归约拆分操作。可选地,每一对位置相对的平面中的每一对相邻的节点并行执行归约拆分操作。例如平面R、平面G、平面B这3对平面同时执行相同的操作,因此,数据段R、数据段G、数据段B这三种数据段都有类似的结果。此外,由于是6个平面都执行相同的操作,因此,在平面内相邻节点执行归约拆分操作的阶段,所有链路的双向带宽都得到有效利用。
S307、6个平面同时对各自所负责的数据段执行全收集操作。
步骤S307是对方法200中步骤S205的举例说明。以6个平面中一个平面上的一个节点是第一节点为例,在执行S307的过程中,第一节点分别通过每个第一平面对应的环形网络,将每个第一平面对应的第二结果数据发送至每个第一平面内的每个共面节点。第一平面对应的环形网络包括系统中位于第一平面上的每个节点,即第一节点和第一平面内的每个共面节点。第一节点接入了多个环形网络,每个环形网络对应于第一节点所处的一个第一平面。例如,第一节点是节点a,节点a在立方体中位于平面abcd、平面abef和平面adeh,节点a接入了平面abcd对应的环形网络、平面abef对应的环形网络和平面adeh对应的环形网络,其中,平面abcd对应的环形网络例如是节点a→节点d→节点c→节点b→节点a,平面abef对应的环形网络例如是节点a→节点b→节点f→节点e→节点a,平面adeh对应的环形网络例如是节点a→节点d→节点h→节点e→节点a。
可选地,S307描述的全收集操作通过由平面中的节点组成的环形网络实现。在一种可能的实现中,全收集操作包括多个步骤,在每个步骤中,第一节点向相邻节点发送得到的一个第二结果数据,使得第二结果数据会从环形网络中的上一个节点传输至下一个节点。例如,请参见附图38,节点a得到结果数据R4abcdefgh后,在全收集操作的第一个步骤中,节点a将结果数据R4abcdefgh发送至节点d,使得结果数据R4abcdefgh从节点a传送至节点d;在全收集操作的第二个步骤中,节点d将结果数据R4abcdefgh发送至节点c,使得结果数据R4abcdefgh从节点d传送至节点c;在全收集操作的第三个步骤中,节点c将结果数据R4abcdefgh发送至节点b,使得结果数据R4abcdefgh从节点c传送至节点b,经过三个步骤,平面abcd上的每个节点都得到了节点a的结果数据R4abcdefgh。依次类推,平面内每个节点将自己拥有的汇总完的子数据段(第二结果数据)通过环的方式传送到其他节点,经过3步可以将结果数据广播完,每个节点执行平面内全收集操作的过程请参考附图38。
可选地,立方体中每个平面都同时执行以上描述的平面内全收集操作的过程以实现数据同步,因此每个平面上都会得到类似的结果,最终的结果如附图32所示,每个节点上获得了每个平面上每个节点的数据归约结果,从而实现了整个立方体的全归约。其中,由于立方体的6个平面同时执行平面内全收集操作,因此,在平面内全收集操作的阶段,立方体的所有链路的两个方向的双向带宽都得到有效使用。
本实施例提供了一种基于立方体拓扑的全归约通信方法,能够显著减少实现全归约带来的数据发起和同步次数,因此显著减少了计算系统的数据同步开销,能够显著减少数据同步过程的数据传输时间,避免了出现空闲链路的情况,保证所有链路的双向带宽的有效利用。
以下通过方法400,对方法200进行举例说明。方法400和方法300的区别在于阶段二中相对平面的数据全归约操作(对应于S203)的实现方式和阶段三中平面内全收集(对应于S204)的实现方式不同。在方法400中,阶段二中通过先在平面内选取的相邻节点执行全收集操作,再在相对平面相对顶点执行全归约操作的方式实现,具体参见S405和S405。阶段三中平面内全收集通过平面内一对相邻的节点交换数据的方式实现,具体参见S407。应理解,方法400与方法200同理的步骤还请参见方法200,在方法400中不做赘述。
参见附图39,附图39为本申请实施例提供的一种计算系统中数据同步的方法400的流程图。方法400是对基于立方体的网络拓扑结构实现全归约操作总体流程的举例说明。示例性地,方法400包括S401至S407。
S401、将多个节点逻辑上连接形成立方体的网络拓扑结构。
步骤S401和方法300中步骤S301相同,也是对计算系统的网络组建过程的举例说明。
S402、将每个节点上待同步的数据分成3段,或者3的倍数段。
S403、将每个节点的数据段无重复地分配至其所在的三个平面(同一平面的4个节点为该平面分配的数据段的序号相同)。
步骤S402和步骤S403分别和方法300中步骤S302和步骤S303相同,也是对方法200中步骤S201的举例说明。
S404、立方体6个平面同时对各自所负责的数据段执行归约拆分操作。
方法400中执行S404后每个平面的数据分布和方法300中执行S304后每个平面的数据分布相同。例如,附图19所示的计算系统100在执行S304后,平面abcd的数据分布和平面efgh的数据分布会如附图31所示。
S405、平面内相邻的两个节点相互发送其归约拆分操作完成的数据段(相当于两节点间对已完成数据段执行全收集操作,6个平面的12对节点同时操作)。
步骤S405和步骤S406是对方法200中步骤S203的实现方式的举例说明。
以相邻的节点分别是第一节点和第二节点为例,在执行S405的过程中,第一节点分别与每个第一平面的第二节点,对每个第一平面对应的第一结果数据执行全收集操作,得到每个第一平面对应的第四结果数据。其中,第二节点是第一平面内与第一节点的相邻节点。例如,第一平面是平面abcd,第一节点是节点a,第二节点是节点b或节点d,或者,第一节点是节点c,第二节点是节点d或者节点b。需要说明的一点是,在同一个平面上,会选取2对相邻节点执行S405,这2对相邻节点中不存在重复的节点,也就是说,一对相邻节点中的2个节点和另一对相邻节点中的2个节点互不相同。例如,在平面abcd内,节点a作为第一节点,选择了节点b作为节点a对应的第二节点;那么节点c作为第一节点,在选择第二节点时,就不会也选择节点b,而是选择节点d作为节点c对应的第二节点。在这个例子下,平面abcd内,节点a和节点b互相发送归约拆分操作完成的数据段,节点c和节点d互相发送归约拆分操作完成的数据段。
可选地,第一平面上包括四个节点,则第四结果数据包括两份归约结果,这两份归约结果均来自第一平面上的四个节点,其中,一份归约结果是第一平面上四个同一位置的子数据段的归约结果(即第一结果数据),另一份归约结果是第一平面上四个另一位置的子数据段的归约结果。可选地,归约通过求和操作实现,第四结果数据包括第一平面上的四个子数据段之和以及第一平面上的另外四个子数据段之和。例如,第一平面包括节点a、节点b、节点c和节点d,第四结果数据包括两个和值,一个和值是节点a具有的子数据段3、节点b具有的子数据段3、节点c具有的子数据段3、节点d具有的子数据段3之和,另一个和值是节点a具有的子数据段4、节点b具有的子数据段4、节点c具有的子数据段4、节点d具有的子数据段4之和。
第一节点通过与第二节点执行全收集操作,实现了平面内一对相邻顶点之间的数据的全收集操作。依次类推,立方体的每个平面内的每一对相邻节点执行和第一节点相同的步骤,即,立方体的每个平面内的每两对相邻节点之间相互发送彼此执行归约拆分操作得到的数据段,其中,立方体的6个平面的12对相邻节点可以同时执行全收集操作。例如,请参见附图40,以平面R对应的数据为例,节点a和节点b针对子数据段R3和子数据段R4执行全收集操作,节点c和节点d针对子数据段R1和子数据段R2执行全收集操作,节点e和节点f针对子数据段R3和子数据段R4执行全收集操作,节点g和节点h针对子数据段R1和子数据段R2执行全收集操作。
在一些实施例中,平面内相邻节点之间的全收集操作通过一对相邻节点之间互相收发结果数据实现。例如,在第一节点和第二节点之间执行全收集操作的过程中,第一节点将本地的第一结果数据发送至第二节点,并接收第二节点发送的第一结果数据,第二节点将本地的第一结果数据发送至第一节点,并接收第一节点发送的第一结果数据,从而实现全收集操作。可选地,平面内相邻节点之间的全收集操作具体通过在一对相邻节点之间互相执行广播操作实现。例如,平面abcd内,节点b将子数据段R3对应的结果数据(R3abcd)广播到节点a,节点a将子数据段R4对应的结果数据(R4abcd)广播到节点b,节点d将子数据段R1对应的结果数据(R1abcd)广播到节点c,节点c将子数据段R2对应的结果数据(R2abcd)广播到节点d。平面efgh,节点a将子数据段R3对应的结果数据(R3efgh)广播到节点f,节点f将子数据段R4对应的结果数据(R4abcd)广播到节点g,节点g将子数据段R2对应的结果数据(R2efgh)广播到节点h,节点h将子数据段R2对应的结果数据(R2efgh)广播到节点g,结果如附图41所示,在平面abcd中,节点a和节点b均得到了R3abcd和R4abcd,节点c和节点d均得到了R1abcd和R2abcd。在平面efgh中,节点e和节点f均得到了R3efgh和R4efgh,节点g和节点h均得到了R1efgh和R2efgh。其中,结果数据R1abcd和R2abcd、结果数据R3abcd和R4abcd均是对平面abcd对应的第四结果数据的举例说明,结果数据R1efgh和R2efgh、结果数据R3efgh和R4efgh均是对平面efgh对应的第四结果数据的举例说明。
S406、3对相对平面的12对相对节点,将完成的数据段发送给对方归约。其中,归约例如是求和,S406相当于两个节点执行全归约操作。
以相对的节点分别是第一节点和第二平面内第一节点的相对节点为例,在执行S406的过程中,第一节点分别与每个第二平面的相对节点,对每个第一平面对应的第四结果数据执行全归约操作,得到每个第一平面对应的第二结果数据。同理地,立方体中每一对位置相对的平面中的每一对相对节点之间对彼此得到的第四结果数据执行全归约操作。立方体的每一对位置相对的平面中每一对相对节点之间通过执行全归约操作,能够实现每一对相对平面的每一对相对节点之间的数据汇总。例如,请参见附图42,对于平面abcd和平面efgh这一对平面而言,节点a与节点e执行全归约操作,节点d与节点h执行全归约操作,节点b与节点f执行全归约操作,节点c与节点g执行全归约操作。
可选地,S406中的全归约操作通过求和值实现。具体地,立方体的3对相对平面的12对相对节点将完成的数据段发送给对方并求和,从而实现全归约操作。以附图41中的平面R,即平面abcd和平面efgh为例,节点a向节点e发送子数据段R3对应的第四结果数据(R3abcd)和子数据段R4对应的第四结果数据(R4abcd);节点a从节点e接收子数据段R3对应的第四结果数据(R3efgh)和子数据段R4对应的第四结果数据(R4efgh),节点a对接收的第四结果数据(R3efgh)和本地的第四结果数据(R3abcd)求和,得到第二结果数据R3abcdefgh,对接收的第四结果数据(R4efgh)和本地的第四结果数据(R4abcd)求和,得到第二结果数据R4abcdefgh;节点e向节点a发送子数据段R3对应的第四结果数据(R3efgh)和子数据段R4对应的第四结果数据(R4efgh),并从节点a接收子数据段R3对应的第四结果数据(R3abcd)和子数据段R4对应的第四结果数据(R4abcd)。
节点e对接收的第四结果数据(R3abcd)和本地的第四结果数据(R3efgh)求和,得到第二结果数据R3abcdefgh,对接收的第四结果数据(R4abcd)和本地的第四结果数据(R4efgh)求和,得到第二结果数据R4abcdefgh。经过互发汇总求和后,节点a和节点e都有相同的第二结果数据R3abcdefgh和第二结果数据R4abcdefgh。其他节点做类似的操作,最终两个平面的结果如附图43所示。
结合S405的全收集操作和S406的全归约操作,第一节点通过先与相邻的第二节点执行全收集操作,再与相对的第三节点执行全归约操作,实现了相对平面内相对顶点之间的数据的全归约操作。
S407、6个平面同时对各自所负责的数据段执行全收集操作。
步骤S407是对方法200中步骤S205的举例说明。以6个平面中一个平面上的一个节点是第一节点为例,在执行S407的过程中,第一节点分别将每个第一平面对应的第二结果数据发送至每个第一平面内的第三节点。其中,第三节点是第一平面内第一节点的相邻节点。第三节点和第二节点不同。换句话说,第二节点和第三节点是第一节点的两个不同的相邻节点。例如,第一平面是平面abcd,第一节点是节点a,第二节点是节点b,第三节点是节点d。
在一些实施例中,第一节点在发送结果数据的同时,也会从第三节点接收第三节点执行全归约操作得到的结果数据。依次类推,平面内的每两对相邻节点之间收发彼此执行全归约操作得到的结果数据,实现了平面内全收集操作。
如附图44所示,在平面abcd中,节点b将子数据段R3对应的结果数据(R3abcdefgh)和子数据段R4对应的结果数据(R4abcdefgh)发送到节点c,并从节点c接收子数据段R1对应的结果数据(R1abcdefgh)和子数据段R2对应的结果数据(R2abcdefgh);节点c将子数据段R1对应的结果数据(R1abcdefgh)和子数据段R2对应的结果数据(R2abcdefgh)发送到节点b,并从节点b接收子数据段R3对应的结果数据(R3abcdefgh)和子数据段R4对应的结果数据(R4abcdefgh);节点a将子数据段R3对应的结果数据(R3abcdefgh)和子数据段R4对应的结果数据(R4abcdefgh)发送到节点d,并从节点d接收子数据段R1对应的结果数据(R1abcdefgh)和子数据段R2对应的结果数据(R2abcdefgh);节点d将子数据段R1对应的结果数据(R1abcdefgh)和子数据段R2对应的结果数据(R2abcdefgh)发送到节点a,并从节点a接收子数据段R3对应的结果数据(R3abcdefgh)和子数据段R4对应的结果数据(R4abcdefgh)。平面efgh内执行和平面abcd同理的操作,结果如附图45所示。
其中,由于立方体的所有平面都同时执行相同的操作,因此,在所有步骤中立方体的所有链路的双向带宽都得到有效利用,不存在空闲的链路。
本实施例提供了一种基于立方体拓扑的全归约通信方法,能够显著减少实现全归约带来的数据发起和同步次数,因此显著减少了计算系统的数据同步开销,能够显著减少数据同步过程的数据传输时间,避免了出现空闲链路的情况,保证所有链路的双向带宽有效利用。
以上介绍了本申请实施例的方法200、方法300或方法400,以下介绍本申请实施例的计算节点,应理解,该计算节点具有上述方法200、方法300或方法400中第一节点的任意功能。
附图46是本申请实施例提供的一种计算节点500的结构示意图,如附图46所示,计算节点500包括:拆分模块501,用于执行S201;归约拆分模块502,用于执行S202;全归约模块503,用于执行S203;全收集模块504,用于执行S204。
可选地,所述全归约模块503,用于执行S305和S306。
可选地,所述全收集模块504,用于执行S307。
可选地,所述全归约模块503,用于执行S405和S406。
可选地,所述全收集模块504,用于执行S407。
应理解,计算节点500对应于上述方法实施例中的第一节点,计算节点500中的各模块和上述其他操作和/或功能分别为了实现方法200、方法300或方法400中的第一节点所实施的各种步骤和方法,具体细节可参见上述方法200、方法300或方法400,为了简洁,在此不再赘述。
应理解,计算节点500在数据同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将计算节点500的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的计算节点500与上述方法200、方法300或方法400属于同一构思,其具体实现过程详见方法200、方法300或方法400,这里不再赘述。
与本申请提供的方法实施例以及虚拟装置实施例相对应,本申请实施例还提供了一种计算节点,下面对计算节点的硬件结构进行介绍。
计算节点600或计算节点800对应于上述方法200、方法300或方法400中的第一节点,计算节点600或计算节点800中的各硬件、模块和上述其他操作和/或功能分别为了实现方法实施例中第一节点所实施的各种步骤和方法,关于计算节点600或计算节点800如何在计算系统中数据同步的详细流程,具体细节可参见上述方法200、方法300或方法400,为了简洁,在此不再赘述。其中,方法200、方法300或方法400的各步骤通过计算节点600或计算节点800处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤,为避免重复,这里不再详细描述。
计算节点600或计算节点800对应于上述的计算节点500,计算节点500中的每个功能模块采用计算节点600或计算节点800的软件实现。换句话说,计算节点500包括的功能模块为计算节点600或计算节点800的处理器读取存储器中存储的程序代码后生成的。
参见附图47,附图47示出了本申请一个示例性实施例提供的计算节点600。例如,该计算节点600可以是主机、服务器或个人计算机等。该计算节点600可以由一般性的总线体系结构来实现。
计算节点600包括至少一个处理器601、通信总线602、存储器603以及至少一个通信接口604。
处理器601可以是一个通用中央处理器(central processing unit,CPU)、网络处理器(network processer,NP)、微处理器、或者可以是一个或多个用于实现本申请方案的集成电路,例如,专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
通信总线602用于在上述组件之间传送信息。通信总线602可以分为地址总线、数据总线、控制总线等。为便于表示,附图47中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器603可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其它类型的静态存储设备,也可以是随机存取存储器(random access memory,RAM)或者可存储信息和指令的其它类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only Memory,EEPROM)、只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其它磁存储设备,或者是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其它介质,但不限于此。存储器603可以是独立存在,并通过通信总线602与处理器601相连接。存储器603也可以和处理器601集成在一起。
通信接口604使用任何收发器一类的装置,用于与其它设备或通信网络通信。通信接口604包括有线通信接口,还可以包括无线通信接口。其中,有线通信接口例如可以为以太网接口。以太网接口可以是光接口,电接口或其组合。无线通信接口可以为无线局域网(wireless local area networks,WLAN)接口,蜂窝网络通信接口或其组合等。
在具体实现中,作为一种实施例,处理器601可以包括一个或多个CPU,如附图47中所示的CPU0和CPU1。
在具体实现中,作为一种实施例,计算节点600可以包括多个处理器,如附图47中所示的处理器601和处理器605。这些处理器中的每一个可以是一个单核处理器(single-CPU),也可以是一个多核处理器(multi-CPU)。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,计算节点600还可以包括输出设备606和输入设备607。输出设备606和处理器601通信,可以以多种方式来显示信息。例如,输出设备606可以是液晶显示器(liquid crystal display,LCD)、发光二级管(light emitting diode,LED)显示设备、阴极射线管(cathode ray tube,CRT)显示设备或投影仪(projector)等。输入设备607和处理器601通信,可以以多种方式接收用户的输入。例如,输入设备607可以是鼠标、键盘、触摸屏设备或传感设备等。
在一些实施例中,存储器603用于存储执行本申请方案的程序代码610,处理器601可以执行存储器603中存储的程序代码610。也即是,计算节点600可以通过处理器601以及存储器603中的程序代码610,来实现方法实施例提供的计算系统中数据同步的方法。
本申请实施例的计算节点600可对应于上述各个方法实施例中的第一节点,并且,该计算节点600中的处理器601、通信接口604等可以实现上述各个方法实施例中的第一节点所具有的功能和/或所实施的各种步骤和方法。为了简洁,在此不再赘述。
在一些实施例中,计算节点500中的拆分模块501、归约拆分模块502和全归约模块503相当于计算节点600中的处理器601。计算节点500中的全收集模块504相当于计算节点600中的通信接口604。
附图48为本申请实施例提供的一种计算节点800的结构示意图,计算节点800的形态例如是芯片。计算节点800包括神经网络处理器80。神经网络处理器80适于分布式训练任务中梯度值的计算任务以及模型参数的计算任务。例如,如果模型是神经网络,神经网络中各层的算法均可在如图48所示的神经网络处理器80中得以实现。
神经网络处理器作为协处理器挂载到主CPU(Host CPU)上,由Host CPU分配任务。NPU的核心部分为运算电路80,控制器804控制运算电路803提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路803内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路803是二维脉动阵列。运算电路803还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路803是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器802中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器801中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器808accumulator中。
向量计算单元808可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元808可以用于神经网络中非卷积/非FC层的网络计算,如池化(Pooling),批归一化(Batch Normalization),局部响应归一化(Local Response Normalization)等。
在一些实现中,向量计算单元808将经处理的输出的向量存储到统一缓存器806。例如,向量计算单元808可以将非线性函数应用到运算电路803的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元808生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路803的激活输入,例如用于在神经网络中的后续层中的使用。
在一些实施例中,上述各个实施例中子任务由运算电路803或向量计算单元808执行。例如,由运算电路803或向量计算单元808计算梯度值或根据所述梯度值计算模型参数。
统一存储器806用于存放输入数据以及输出数据,输入数据包括一个批尺寸的样本数据。输出数据包括梯度值和模型参数。
权重数据直接通过存储单元访问控制器805(Direct Memory AccessController,DMAC)将外部存储器中的输入数据搬运到输入存储器801和/或统一存储器806、将外部存储器中的权重数据存入权重存储器802,以及将统一存储器806中的数据存入外部存储器。
总线接口单元(Bus Interface Unit,BIU)810,用于通过总线实现主CPU、DMAC和取指存储器809之间进行交互。
与控制器804连接的取指存储器(instruction fetch buffer)809,用于存储控制器804使用的指令;
控制器804,用于调用指存储器809中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器806,输入存储器801,权重存储器802以及取指存储器809均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,简称DDR SDRAM)、高带宽存储器(High Bandwidth Memory,HBM)或其他可读可写的存储器。
可选地,方法200、方法300或方法400涉及的步骤是由神经网络处理器和主CPU共同配合完成的。
应理解,上述各种产品形态的计算节点,分别具有上述方法实施例中第一节点的任意功能,此处不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例中描述的各方法步骤和单元,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各实施例的步骤及组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和模块的具体工作过程,可以参见前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,该模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或模块的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
该作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以是两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
该集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例中方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。还应理解,尽管以下描述使用术语第一、第二等来描述各种元素,但这些元素不应受术语的限制。这些术语只是用于将一元素与另一元素区别分开。例如,在不脱离各种所述示例的范围的情况下,第一节点可以被称为第二节点,并且类似地,第二节点可以被称为第一节点。第一节点和第二节点都可以是节点,并且在某些情况下,可以是单独且不同的节点。
本申请中术语“至少一个”的含义是指一个或多个,本申请中术语“多个”的含义是指两个或两个以上,例如,多个第一平面是指两个或两个以上的第一平面。本文中术语“系统”和“网络”经常可互换使用。
还应理解,术语“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
以上描述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例中的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,该计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digitalvideo disc,DVD)、或者半导体介质(例如固态硬盘)等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上描述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (18)

1.一种计算系统中的数据同步方法,其特征在于,所述计算系统的网络拓扑结构为立方体,所述立方体的顶点用于表示所述计算系统中的节点,所述计算系统包括第一节点,所述方法包括:
按照所述第一节点在所述立方体中所处的多个第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段;
分别与所述计算系统中位于每个所述第一平面的共面节点,对每个所述第一平面对应的数据段执行归约拆分操作,得到每个所述第一平面对应的第一结果数据;
分别与所述计算系统中位于每个第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据,所述第二平面是所述立方体中与所述第一平面位置相对的平面;
分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作。
2.根据权利要求1所述的方法,其特征在于,所述分别与所述计算系统中位于每个第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据,包括:
分别与每个所述第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全收集操作,得到每个所述第一平面对应的第三结果数据;
分别与每个所述第一平面的第四节点,对每个所述第一平面对应的第三结果数据执行归约拆分操作,得到每个所述第一平面对应的第二结果数据,所述第四节点是所述第一平面上与所述第一节点相邻的节点,且所述第四节点得到的第三结果数据和所述第一节点得到的第三结果数据对应于相同的子数据段。
3.根据权利要求2所述的方法,其特征在于,所述分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作,包括:
分别通过每个所述第一平面对应的环形网络,将每个所述第一平面对应的第二结果数据发送至每个所述第一平面内的每个共面节点。
4.根据权利要求1所述的方法,其特征在于,所述分别与所述计算系统中位于每个第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据,包括:
分别与每个所述第一平面的第二节点,对每个所述第一平面对应的第一结果数据执行全收集操作,得到每个所述第一平面对应的第四结果数据,所述第二节点是所述第一平面上与所述第一节点相邻的节点;
分别与每个所述第二平面的相对节点,对每个所述第一平面对应的第四结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据。
5.根据权利要求4所述的方法,其特征在于,所述分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作,包括:
分别将每个所述第一平面对应的第二结果数据发送至每个所述第一平面内的第三节点,所述第三节点是所述第一平面上与所述第一节点相邻的节点,所述第三节点和所述第二节点不同。
6.根据权利要求1所述的方法,其特征在于,所述按照所述第一节点在所述立方体中所处的多个第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段,包括:
根据所述多个第一平面的数量,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段,所述数据段的数量为所述多个第一平面的数量的整数倍。
7.根据权利要求1所述的方法,其特征在于,所述分别与所述计算系统中位于每个所述第一平面的共面节点,对每个所述第一平面对应的数据段执行归约拆分操作,包括:
根据所述计算系统位于每个所述第一平面的节点数量,对每个所述第一平面对应的数据段分别拆分,得到每个所述第一平面对应的多个子数据段,所述子数据段的数量为对应第一平面的节点数量的整数倍;
分别与每个所述第一平面的共面节点,同步彼此得到的所述第一平面对应的子数据段。
8.根据权利要求1所述的方法,其特征在于,所述分别与所述计算系统中位于每个所述第一平面的共面节点,对每个所述第一平面对应的数据段执行归约拆分操作,包括:
分别与所述计算系统中位于每个所述第一平面的共面节点,并行地对每个所述第一平面对应的数据段执行归约拆分操作;
所述分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作,包括:
分别与每个所述第一平面内的共面节点,并行地对每个所述第一平面对应的第二结果数据执行全收集操作。
9.一种计算系统中的数据同步方法,其特征在于,所述计算系统的网络拓扑结构为立方体,所述立方体的顶点用于表示所述计算系统中的节点,所述计算系统包括第一节点,所述方法包括:
按照所述第一节点在所述立方体中所处的第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到所述第一平面对应的数据段;
与所述计算系统中位于所述第一平面的共面节点,对所述第一平面对应的数据段执行归约拆分操作,得到所述第一平面对应的第一结果数据;
与所述计算系统中位于第二平面的相对节点,对所述第一平面对应的第一结果数据执行全归约操作,得到所述第一平面对应的第二结果数据,所述第二平面是所述立方体中与所述第一平面位置相对的平面;
与所述第一平面内的共面节点,对所述第一平面对应的第二结果数据执行全收集操作。
10.一种计算节点,其特征在于,所述计算节点是计算系统中的第一节点,所述计算系统的网络拓扑结构为立方体,所述立方体的顶点用于表示所述计算系统中的节点,所述计算节点包括:
拆分模块,用于按照所述第一节点在所述立方体中所处的多个第一平面,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段;
归约拆分模块,用于分别与所述计算系统中位于每个所述第一平面的共面节点,对每个所述第一平面对应的数据段执行归约拆分操作,得到每个所述第一平面对应的第一结果数据;
全归约模块,用于分别与所述计算系统中位于每个第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据,所述第二平面是所述立方体中与所述第一平面位置相对的平面;
全收集模块,用于分别与每个所述第一平面内的共面节点,对每个所述第一平面对应的第二结果数据执行全收集操作。
11.根据权利要求10所述的计算节点,其特征在于,所述全归约模块,用于分别与每个所述第二平面的相对节点,对每个所述第一平面对应的第一结果数据执行全收集操作,得到每个所述第一平面对应的第三结果数据;分别与每个所述第一平面的第四节点,对每个所述第一平面对应的第三结果数据执行归约拆分操作,得到每个所述第一平面对应的第二结果数据,所述第四节点是所述第一平面上与所述第一节点相邻的节点,且所述第四节点得到的第三结果数据和所述第一节点得到的第三结果数据对应于相同的子数据段。
12.根据权利要求11所述的计算节点,其特征在于,所述全收集模块,用于分别通过每个所述第一平面对应的环形网络,将每个所述第一平面对应的第二结果数据发送至每个所述第一平面内的每个共面节点。
13.根据权利要求10所述的计算节点,其特征在于,所述全归约模块,用于分别与每个所述第一平面的第二节点,对每个所述第一平面对应的第一结果数据执行全收集操作,得到每个所述第一平面对应的第四结果数据,所述第二节点是所述第一平面上与所述第一节点相邻的节点;分别与每个所述第二平面的相对节点,对每个所述第一平面对应的第四结果数据执行全归约操作,得到每个所述第一平面对应的第二结果数据。
14.根据权利要求13所述的计算节点,其特征在于,所述全收集模块,用于分别将每个所述第一平面对应的第二结果数据发送至每个所述第一平面内的第三节点,所述第三节点是所述第一平面上与所述第一节点相邻的节点,所述第三节点和所述第二节点不同。
15.根据权利要求10所述的计算节点,其特征在于,所述拆分模块,用于根据所述多个第一平面的数量,对所述第一节点上待同步至所述计算系统的数据进行拆分,得到每个所述第一平面对应的数据段,所述数据段的数量为所述多个第一平面的数量的整数倍。
16.根据权利要求10所述的计算节点,其特征在于,所述归约拆分模块,用于根据所述计算系统位于每个所述第一平面的节点数量,对每个所述第一平面对应的数据段分别拆分,得到每个所述第一平面对应的多个子数据段,所述子数据段的数量为对应第一平面的节点数量的整数倍;分别与每个所述第一平面的共面节点,同步彼此得到的所述第一平面对应的子数据段。
17.根据权利要求10所述的计算节点,其特征在于,所述归约拆分模块,用于分别与所述计算系统中位于每个所述第一平面的共面节点,并行地对每个所述第一平面对应的数据段执行归约拆分操作;
所述全收集模块,用于分别与每个所述第一平面内的共面节点,并行地对每个所述第一平面对应的第二结果数据执行全收集操作。
18.一种计算节点,其特征在于,所述计算节点包括处理器,所述处理器用于执行指令,使得所述计算节点执行如权利要求1至权利要求9中任一项所述的方法。
CN202010443371.2A 2020-05-22 2020-05-22 计算系统中数据同步的方法及计算节点 Pending CN113703955A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010443371.2A CN113703955A (zh) 2020-05-22 2020-05-22 计算系统中数据同步的方法及计算节点

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010443371.2A CN113703955A (zh) 2020-05-22 2020-05-22 计算系统中数据同步的方法及计算节点

Publications (1)

Publication Number Publication Date
CN113703955A true CN113703955A (zh) 2021-11-26

Family

ID=78646354

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010443371.2A Pending CN113703955A (zh) 2020-05-22 2020-05-22 计算系统中数据同步的方法及计算节点

Country Status (1)

Country Link
CN (1) CN113703955A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185689A (zh) * 2022-02-14 2022-03-15 四川大学 一种医学人工智能与高性能计算资源调度系统及调度方法
CN117725019A (zh) * 2024-02-07 2024-03-19 北京壁仞科技开发有限公司 用于gpu集合通信的方法和计算系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1494688A (zh) * 2001-02-24 2004-05-05 �Ҵ���˾ 新颖的大规模并行超级计算机
CN104408584A (zh) * 2014-12-18 2015-03-11 中国农业银行股份有限公司 一种交易关联性的分析方法及系统
CN106062732A (zh) * 2015-02-06 2016-10-26 华为技术有限公司 数据处理系统、计算节点和数据处理的方法
CN106776014A (zh) * 2016-11-29 2017-05-31 科大讯飞股份有限公司 异构计算中的并行加速方法及系统
US20200051201A1 (en) * 2018-08-08 2020-02-13 International Business Machines Corporation Graphic processor unit topology-aware all-reduce operation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1494688A (zh) * 2001-02-24 2004-05-05 �Ҵ���˾ 新颖的大规模并行超级计算机
CN104408584A (zh) * 2014-12-18 2015-03-11 中国农业银行股份有限公司 一种交易关联性的分析方法及系统
CN106062732A (zh) * 2015-02-06 2016-10-26 华为技术有限公司 数据处理系统、计算节点和数据处理的方法
CN106776014A (zh) * 2016-11-29 2017-05-31 科大讯飞股份有限公司 异构计算中的并行加速方法及系统
US20200051201A1 (en) * 2018-08-08 2020-02-13 International Business Machines Corporation Graphic processor unit topology-aware all-reduce operation

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185689A (zh) * 2022-02-14 2022-03-15 四川大学 一种医学人工智能与高性能计算资源调度系统及调度方法
CN114185689B (zh) * 2022-02-14 2022-04-26 四川大学 一种医学人工智能与高性能计算资源调度系统及调度方法
CN117725019A (zh) * 2024-02-07 2024-03-19 北京壁仞科技开发有限公司 用于gpu集合通信的方法和计算系统

Similar Documents

Publication Publication Date Title
US20190325302A1 (en) Implementing parameter server in networking infrastructure for high-performance computing
US8638327B2 (en) Tiled projections for planar processing of round earth data
CN111630505B (zh) 深度学习加速器系统及其方法
WO2014094410A1 (zh) 颗粒流动仿真系统和方法
EP4071619A1 (en) Address generation method, related device and storage medium
CN110333946A (zh) 一种基于人工智能cpu数据处理系统及方法
CN113703955A (zh) 计算系统中数据同步的方法及计算节点
CN112686379B (zh) 集成电路装置、电子设备、板卡和计算方法
WO2020163327A1 (en) System-based ai processing interface framework
CN113364603B (zh) 环形网络的故障恢复方法及物理节点
Huang et al. IECA: An in-execution configuration CNN accelerator with 30.55 GOPS/mm² area efficiency
CN111079078B (zh) 面向结构网格稀疏矩阵的下三角方程并行求解方法
CN114330686A (zh) 一种可配置的卷积处理装置与卷积计算方法
CN111984833A (zh) 基于gpu的高性能图挖掘方法及系统
EP1583008A2 (en) Distributed CAD apparatus
CN108009099B (zh) 一种应用于K-Mean聚类算法中的加速方法及其装置
CN112950451A (zh) 一种基于GPU的极大k-truss发现算法
Lai et al. ProOnE: a general-purpose protocol onload engine for multi-and many-core architectures
EP3089027B1 (en) Simd processing module
US20230376562A1 (en) Integrated circuit apparatus for matrix multiplication operation, computing device, system, and method
CN113746873B (zh) 环形网络中的异常节点处理方法及相关设备
WO2023151216A1 (zh) 图数据处理的方法和芯片
WO2022135600A1 (zh) 计算神经网络的装置、板卡、方法及可读存储介质
WO2022135599A1 (zh) 融合分支结构的装置、板卡、方法及可读存储介质
CN111353125B (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