一种通信方法及装置与流程

文档序号:25603762发布日期:2021-06-25 12:57阅读:84来源:国知局
一种通信方法及装置与流程

1.本发明涉及并行计算技术领域,尤其涉及一种高效的通信方法及装置。


背景技术:

2.在大规模神经网络模型的训练中,多gpu并行计算是减少训练时间的常用方法。数据并行是gpu并行计算的一种方式,在该方式中,每个gpu都存储有整个神经网络模型的完整副本,各gpu分别使用训练样本集中的一部分样本来进行训练。对于训练过程中的每次迭代,gpu基于训练样本进行网络的前向传播,随后进行误差的反向传播,计算损失(loss)相对于网络参数的梯度。随后,gpu相互通信以获取其他gpu计算出的梯度,求出所有梯度的平均值,根据平均值来更新网络参数,进行下一次迭代。
3.gpu之间的通信机制会影响网络模型的训练速度。尤其当参与训练的gpu的数量较多,且网络模型的参数较多(有时甚至多达数十亿)时,gpu间的梯度更新过程会带来很大的时间开销,严重制约了网络模型的训练速度。
4.因此,需要提供一种高效的通信方法。


技术实现要素:

5.为此,本发明提供一种通信方法及装置,以力图解决或至少缓解上面存在的问题。
6.根据本发明的第一个方面,提供一种通信方法,用于多个计算单元通过物理通道进行数据更新,该方法包括:基于物理通道设置至少两个数据更新环路,数据更新环路将多个计算单元串联形成闭环,且上述至少两个数据更新环路所包括的物理通道各不相同;以及在至少两个数据更新环路上并行进行数据更新。
7.可选地,在根据本发明的通信方法中,在至少两个数据更新环路上并行进行数据更新的步骤,包括:将待更新的数据划分为数据组,每个数据组对应于一个数据更新环路;以及分别在各个数据更新环路上进行相应的数据组的更新。
8.可选地,在根据本发明的通信方法中,数据更新环路上更新的数据组的数据量根据该数据更新环路的带宽来确定,数据更新环路的带宽为该数据更新环路所包括的物理通道的带宽的最小值。
9.可选地,在根据本发明的通信方法中,数据更新环路上更新的数据组的数据量为待更新的数据总量与该数据更新环路的带宽占比的乘积,带宽占比为该数据更新环路的带宽占所有数据更新环路的带宽之和的比例。
10.可选地,在根据本发明的通信方法中,数据更新环路所包括的多个物理通道的带宽相同。
11.可选地,在根据本发明的通信方法中,在数据更新环路上进行相应的数据组的更新的步骤,包括:将数据组划分多个数据块,数据块的数量与计算单元的数量相同;分别在各个计算单元上进行数据块的值的循环累加,直至每个计算单元中均包括一个完整数据块,完整数据块的值为所有计算单元中相应数据块的值的和;采用各计算单元中的完整数
据块的值循环覆盖其他计算单元中相应数据块的值,以完成数据组的更新。
12.可选地,在根据本发明的通信方法中,分别在各个计算单元上进行数据块的值的循环累加的步骤,包括:在数据更新环路中进行多次数据传输,数据传输的次数为计算单元的数量减一;在每次数据传输中,每一个计算单元将自身的一个数据块的值发送至下一个计算单元,并接收上一个计算单元发来的数据块的值,将本地相应数据块的值更新为原数值与接收到的值的和,其中,各计算单元所发送的数据块各不相同。
13.可选地,在根据本发明的通信方法中,采用各计算单元中的完整数据块的值循环覆盖其他计算单元中相应数据块的值的步骤,包括:在数据更新环路中进行多次数据传输,数据传输的次数为计算单元的数量减一;在每次数据传输中,每一个计算单元将自身的一个完整数据块的值发送至下一个计算单元,并接收上一个计算单元发来的完整数据块的值,将本地相应数据块的值更新为接收到的值。
14.根据本发明的第二个方面,提供一种通信系统,包括多个计算单元,每个计算单元通过物理通道与多个其他计算单元相连,其中,通信系统中设置有至少两个数据更新环路,数据更新环路将上述多个计算单元串联形成闭环,且上述至少两个数据更新环路所包括的物理通道各不相同;上述至少两个数据更新环路适于并行进行多个计算单元之间的数据更新。
15.可选地,在根据本发明的通信系统中,数据更新环路所包括的多个物理通道的带宽相同。
16.根据本发明的第三个方面,提供一种计算设备,包括:上述通信系统;以及存储有程序指令的存储器;当所述程序指令被通信系统中的计算单元读取并执行时,使得计算设备执行上述通信方法。
17.根据本发明的第四个方面,提供一种存储有程序指令的可读存储介质,当程序指令被包括上述通信系统的计算设备读取并执行时,使得计算设备执行上述通信方法。
18.根据本发明的通信方案,基于各计算单元之间的物理通道设置至少两个数据更新环路,每个数据更新环路均将所有计算单元串联形成闭环。各个数据更新环路相互独立(即所包括的物理通道各不相同),可以在多个数据更新环路上并行地进行数据更新,每个环路用于更新待更新的数据的一部分,从而加快了多个计算单元之间的数据更新速度,提高了通信效率。
19.进一步地,在本发明的通信方案中,各数据更新环路所更新的数据量根据该数据更新环路的带宽来确定。数据更新环路的带宽越大,在该环路上更新的数据量越多。数据更新环路所更新的数据量与该环路的带宽相匹配,从而实现了带宽资源的最大化利用,进一步提高了通信效率。
20.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
21.为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面
旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
22.图1示出了根据本发明一个实施例的通信系统100的示意图;
23.图2示出了根据本发明一个实施例的通信方法200的流程图;
24.图3示出了根据本发明一个实施例的数据更新环路的示意图;
25.图4示出了根据本发明另一个实施例的数据更新环路的示意图;
26.图5示出了根据本发明又一个实施例的数据更新环路的示意图;
27.图6a~6d示出了根据本发明一个实施例的在各计算单元上进行的数据块的值的循环累加过程的示意图;
28.图7a~7d示出了根据本发明一个实施例的在各计算单元上进行的完整数据块的值的循环覆盖过程的示意图。
具体实施方式
29.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
30.图1示出了根据本发明一个实施例的通信系统100的示意图。如图1所示,通信系统100包括多个计算单元110,每个计算单元110通过物理通道120与多个其他计算单元相连。
31.应当指出,图1的通信系统100仅为一个示例,该系统包括8个计算单元110-1~110-8,每个计算单元110均通过6个物理通道120与其他计算单元连接。本领域技术人员可以理解,在实践中,通信系统可以包括任意数量的计算单元,每个计算单元可以通过任意数量的物理通道与其他计算单元相连,各计算单元所设有的物理通道的数量可以相同,也可以不同。本发明对通信系统所包括的计算单元的数量,以及通信系统中的物理通道的配置情况均不做限制。
32.计算单元110可以是任意具有计算能力的处理单元,其例如可以是任意型号的cpu(central processing unit,中央处理器)、gpu(graphics processing unit,图形处理器)等,但不限于此。
33.物理通道120为采用导线、电磁波等物理媒介而形成的能够传输信息的通道,其用于连接两个计算单元110,使二者能够按照预设的通信协议进行点对点通信。物理通道120可以是用于实现计算单元110互联的总线,例如nvlink总线、pci总线等,但不限于此。
34.需要说明的是,系统100中包括多个物理通道120,各物理通道120的带宽(即单位时间内传输的数据量,单位通常为bps或b/s)可以相同,也可以不同。根据一种实施例,为了便于控制,系统100中的各物理通道120的带宽相同。
35.在本发明的实施例中,通信系统100中的多个计算单元110可用于进行并行计算,共同完成同一个或同一组计算任务。例如,多个计算单元110可以以数据并行的方式并行训练机器学习模型。每个计算单元110处均存储有整个机器学习模型的完整副本,各计算单元110分别使用训练样本集中的一部分样本来进行训练。对于训练过程中的每次迭代,计算单
元110基于训练样本进行模型的前向传播,随后进行误差的反向传播,计算损失(loss)相对于模型参数的梯度。随后,各计算单元110通过物理通道120相互通信以获取其他计算单元计算出的梯度,求出所有梯度的平均值,根据平均值来更新模型参数,进行下一次迭代。
36.计算单元110之间的通信机制会影响机器学习模型的训练速度。尤其当系统100中的计算单元110的数量较多,且模型的参数较多(有时甚至多达数十亿)时,计算单元110之间的梯度更新过程会带来很大的开销,严重制约了模型的训练速度。针对该问题,本发明提供一种优化的通信方法200,以实现系统100中的各计算单元之间的高效数据更新。
37.基于本发明的通信方法200,在通信系统100中设置有至少两个数据更新环路,每个数据更新环路将系统100中的所有计算单元串联形成闭环,且各个数据更新环路所包括的物理通道各不相同。多个数据更新环路相互独立,可以在这多个数据更新环路上并行地进行多个计算单元之间的数据更新,每个环路用于更新待更新的数据的一部分,从而加快多个计算单元之间的数据更新速度,提高通信效率。
38.应当指出,尽管本发明的通信方法200基于机器学习模型的数据并行训练场景而提出,但是本领域技术人员可以理解,本发明的通信方法200可以应用于多个计算单元进行数据更新或同步的任意场景中,而不局限于上述数据并行训练的应用场景。
39.图2示出了根据本发明一个实施例的通信方法200的流程图。方法200在通信系统(例如前述通信系统100)中执行,用于多个计算单元通过物理通道进行数据更新。如图2所示,方法200始于步骤s210。
40.在步骤s210中,基于物理通道设置至少两个数据更新环路,数据更新环路将多个计算单元串联形成闭环,且上述至少两个数据更新环路所包括的物理通道各不相同。
41.步骤s210中设置了至少两个数据更新环路,每一个数据更新环路均串联了所有计算单元,且各数据更新环路所包括的物理通道各不相同。各个数据更新环路相互独立,可以独立、并行地进行数据更新,每个环路用于更新待更新的数据的一部分,从而加快了多个计算单元之间的数据更新速度,提高了通信效率。
42.应当指出,基于通信系统中现有的物理通道,数据更新环路的设置方式有多种,本发明对数据更新环路的具体设置情况不做限制,只要所设置的至少两个数据更新环路能够满足步骤s210中所指出的两个条件即可,即,每个数据更新环路均将所有多个计算单元串联形成闭环、且各个数据更新环路所包括的物理通道各不相同。
43.根据一种实施例,在每一个数据更新环路中,按照逆时针或顺时针的方向进行数据传输,即,每一个计算节点均从上一个计算节点接收数据,以及将自身的数据发送至下一个计算节点。这样,在一个数据更新环路中,每一个计算节点至少需要具有两个物理通道,相应地,在通信系统中,当各计算节点的物理通道数量相同时,可以设置的数据更新环路的最大数量为单个计算节点的物理通道的数量/2。
44.数据更新环路的带宽为该数据更新环路所包括的物理通道的带宽的最小值。当一个数据更新环路所包括的所有物理通道的带宽均相同时,该环路的带宽即为物理通道的带宽。
45.图3示出了基于图1所示的物理通道,所设置的数据更新环路的一个示意图。图3中设置了以下三个数据更新环路:
46.数据更新环路1:由物理通道1~8所形成的数据更新环路,在该环路中,计算单元
110-1~计算单元110-8依次串联形成闭环。
47.数据更新环路2:由物理通道9~16所形成的数据更新环路,在该环路中,计算单元110-1、计算单元110-4、计算单元110-6、计算单元110-3、计算单元110-5、计算单元110-8、计算单元110-2、计算单元110-7依次串联形成闭环。
48.数据更新环路3:由物理通道17~24所形成的数据更新环路,在该环路中,计算单元110-1~计算单元110-8依次串联形成闭环。
49.上述三个数据更新环路中,每一个环路均串联了所有八个计算单元,且各环路所包括的物理通道各不相同。当物理通道1~24的带宽均相同时,数据更新环路1~3的带宽也相同,均为物理通道的带宽。
50.考虑到数据更新环路1和数据更新环路3的物理通道虽然不同,但二者连接各计算单元的顺序是相同的,因此,根据一种实施例,可以将两个环路中相应位置的物理通道在逻辑上合并为一个物理通道,在逻辑上同时使用以进行数据传输。即,将数据更新环路1和数据更新环路3合并为一个数据更新环路,合并后的结果如图4所示。图4包括以下两个数据更新环路:
51.数据更新环路2:由物理通道9~16所形成的数据更新环路,与图3中相同。在该环路中,计算单元110-1、计算单元110-4、计算单元110-6、计算单元110-3、计算单元110-5、计算单元110-8、计算单元110-2、计算单元110-7依次串联形成闭环。
52.数据更新环路4:由合并后的物理通道1~8所形成的数据更新环路,在该环路中,计算单元110-1~计算单元110-8依次串联形成闭环。
53.由于图4中的物理通道1~8分别由图3中相应位置的两个物理通道经逻辑合并而来,因此,当图3中的物理通道1~24的带宽均相同,均为bw时,图4中的物理通道1~8的带宽均为2*bw,物理通道9~16的带宽仍为bw,即,图4中的物理通道1~8的带宽为物理通道9~16的带宽的两倍。相应地,数据更新环路2、数据更新环路4的带宽分别为bw、2*bw,数据更新环路4的带宽为数据更新环路2的带宽的两倍。
54.图3、图4示例性地示出了基于图1所示的物理通道所设置的数据更新环路的两个示例。本领域技术人员可以理解,基于图1所示的物理通道,数据更新环路的设置方式不止以上两种,给定物理通道,本领域技术人员可以自行设置合适的数据更新环路,本发明对数据更新环路的具体设置方式不做限制。
55.另外,应当指出,尽管在图3、图4的实施例中,多个数据更新环路用尽了通信系统中的所有物理通道,但本领域技术人员可以理解,在实践中,多个数据更新环路所使用的物理通道为通信系统所包括的所有物理通道的子集,而不必然用尽通信系统的所有物理通道。
56.在步骤s210中设置了至少两个数据更新环路后,执行步骤s220。在步骤s220中,在至少两个数据更新环路上并行进行数据更新。
57.需要说明的是,步骤s220中用于并行进行数据更新的数据更新环路的数量与步骤s210中设置的数据更新环路的数量可以相同,也可以不同。本领域技术人员可以理解,步骤s220中用于并行进行数据更新的数据更新环路的数量大于等于2,且小于等于步骤s210中所设置的数据更新环路的数量。
58.例如,在前述图3所示的实施例中,通过执行步骤s210,设置了三个数据更新环路
(即数据更新环路1~数据更新环路3)。在步骤s220中,可以在这三个数据更新环路上并行进行数据更新,也可以从中选择任意两个数据更新环路来并行进行数据更新。
59.又例如,在前述图4所示的实施例中,通过执行步骤s210,设置了两个数据更新环路(即数据更新环路2和数据更新环路4)。由于仅设置了两个数据更新环路,那么在步骤s220中,需要在这两个数据更新环路上并行进行数据更新。
60.步骤s220在至少两个数据环路上并行进行数据更新,每个环路用于更新待更新的数据的一部分,从而加快了多个计算单元之间的数据更新速度,提高了通信效率。
61.根据一种实施例,步骤s220进一步按照以下步骤s222、s224实施:
62.在步骤s222中,将待更新的数据划分为数据组,每个数据组对应于一个数据更新环路。
63.步骤s222中划分出的每个数据组均对应于一个数据更新环路,在后续步骤s224中,将由各个数据更新环路分别进行相应数据组的更新。
64.需要说明的是,步骤s222中划分出的各数据组的数据量可以相同,也可以不同,数据组的具体划分情况可以由本领域技术人员自行设置,本发明对此不做限制。
65.根据一种实施例,可以将待更新的数据划分为数据量相等的多个数据组。本领域技术人员可以理解,此处所说的“数据量相等”不一定表示各数据组的数据量严格相等,而是大致相等。例如,待更新的数据为a、b、

、l共12个参数,每个参数均为32位浮点数(float32),即各参数所占用的存储空间相同,均为32位(bit)。数据更新环路有3个,那么,将待更新的数据划分为数据量相等的3个数据组,每个数据组包括12/3=4个参数。
66.又例如,待更新的数据为a、b、

、k共11个参数,每个参数均为32位浮点数,数据更新环路有3个,那么,将待更新的数据划分为数据量相等的3个数据组,每个数据组包括个参数,其中,表示向上取整。在这种情况下,第一个数据组、第二个数据组均包括4个参数,第三个数据组包括剩余的3个参数。
67.根据另一种实施例,可以根据各数据更新环路的带宽来划分数据组,数据更新环路上更新的数据组的数据量根据该数据更新环路的带宽来确定。数据更新环路的带宽越大,在该环路上更新的数据量越多。数据更新环路所更新的数据量与该环路的带宽相匹配,从而实现了带宽资源的最大化利用,进一步提高了通信效率。
68.在一个实施例中,一个数据更新环路上更新的数据组的数据量为待更新的数据总量与该数据更新环路的带宽占比的乘积,其中,带宽占比为该数据更新环路的带宽占所有数据更新环路的带宽之和的比例。例如,在图4所示的两个数据更新环路中,数据更新环路2、数据更新环路4的带宽分别为bw、2*bw,则数据更新环路2的带宽占比为bw/(bw+2*bw)=1/3,数据更新环路4的带宽占比为2*bw/(bw+2*bw)=2/3。相应地,数据更新环路2所对应的数据组的数据量为待更新的数据总量的1/3,数据更新环路4所对应的数据组的数据量为待更新的数据总量的2/3。例如,待更新的数据为a、b、

、l共12个参数,每个参数均为32位浮点数,那么,数据更新环路2所对应的数据组包括4(即12*1/3)个参数,数据更新环路4所对应的数据组包括8(即12*2/3)个参数。
69.在步骤s222中确定了每个数据更新环路所对应的数据组后,执行步骤s224,分别在各个数据更新环路上进行相应数据组的更新。
70.各个数据更新环路相互独立地、并行地更新各自的数据组。根据一种实施例,单个
数据更新环路可以按照以下步骤s310~s330来进行相应的数据组的更新:
71.在步骤s310中,将数据组划分为多个数据块,数据块的数量与计算单元的数量相同。
72.根据一种实施例,将数据组划分为多个数据量相同的数据块。以图5所示的数据更新环路为例,该数据更新环路中包括计算单元1~4四个计算单元,该数据更新环路上更新的数据组中包括a、b、c、d四个参数,相应地,可以将这四个参数进一步划分为四个数据块,每个数据块包括一个参数,数据块的划分结果如图6a所示。
73.在图6a中,每一个计算单元均包括四个数据块,这四个数据块中相应存储有参数a、b、c、d的值,为了便于叙述,以数据块中存储的参数名来命名数据块,例如,存储有参数a的值的数据块为数据块a,存储有参数b的值的数据块为数据块b,以此类推。如图6a所示,每一个计算单元处均存储有数据块a~d的值,计算单元1中数据块a~d的值分别为a1~d1,计算单元2中的数据块a~d的值分别为a2~d2,以此类推。在后续步骤s320、s330中,需要在计算单元1~4之间进行数据更新,以使各计算单元均获取到其他计算单元的各数据块的值,即,使各计算单元中的数据块a~d的值分别为a1+a2+a3+a4、b1+b2+b3+b4、c1+c2+c3+c4、d1+d2+d3+d4。
74.在步骤s310划分出多个数据块后,执行步骤s320。
75.在步骤s320中,分别在各个计算单元上进行数据块的值的循环累加,直至每个计算单元中均包括一个完整数据块,完整数据块的值为所有计算单元中相应数据块的值的和。
76.根据一种实施例,步骤s320的循环累加过程包括:在数据更新环路中进行多次数据传输,数据传输的次数为计算单元的数量减一。在每次数据传输中,每一个计算单元将自身的一个数据块的值发送至下一个计算单元,并接收上一个计算单元发来的数据块的值,将本地相应数据块的值更新为原数值与接收到的值的和,其中,各计算单元所发送的数据块各不相同。然后,在下一次数据传输过程中,每一个计算单元将更新后的数据块的值发送至下一个计算单元。
77.图6a~6d示出了步骤s320的循环累加过程的一个示例。循环的方向为如图5中的箭头500所示的顺时针方向,即,在数据更新环路中,数据按照计算单元1

计算单元2

计算单元3

计算单元4

计算单元1的方向单向传输。
78.如图6a所示,在初始状态下,每个计算单元中仅存储有自身的数据块的值,尚未获取到其他计算单元的数据块的值。在图6a所示的初始状态下,进行数据更新环路中的第一次数据传输。
79.在第一次数据传输过程中:
80.计算单元1将数据块a的值a1发送至计算单元2,并接收计算单元4发来的数据块d的值d4,将本地数据块d的值更新为原数值d1与接收到的值d4的和,即d1+d4。
81.计算单元2将数据块b的值b2发送至计算单元3,并接收计算单元1发来的数据块a的值a1,将本地数据块a的值更新为原数值a2与接收到的值a1的和,即a1+a2。
82.计算单元3将数据块c的值c3发送至计算单元4,并接收计算单元2发来的数据块b的值b2,将本地数据块b的值更新为原数值b3与接收到的值b2的和,即b2+b3。
83.计算单元4将数据块d的值d4发送至计算单元1,并接收计算单元3发来的数据块c
的值c3,将本地数据块c的值更新为原数值c4与接收到的值c3的和,即c3+c4。
84.经过第一次数据传输,计算单元1的数据块d、计算单元2的数据块a、计算单元3的数据块b以及计算单元4的数据块c分别完成了一次累加,累加结果如图6b所示。
85.在图6b所示的状态下,进行数据更新环路中的第二次数据传输。
86.在第二次数据传输过程中:
87.计算单元1将数据块d的值d1+d4发送至计算单元2,并接收计算单元4发来的数据块c的值c3+c4,将本地数据块c的值更新为原数值c1与接收到的值c3+c4的和,即c1+c3+c4。
88.计算单元2将数据块a的值a1+a2发送至计算单元3,并接收计算单元1发来的数据块d的值d1+d4,将本地数据块d的值更新为原数值d2与接收到的值d1+d4的和,即d1+d2+d4。
89.计算单元3将数据块b的值b2+b3发送至计算单元4,并接收计算单元2发来的数据块a的值a1+a2,将本地数据块a的值更新为原数值a3与接收到的值a1+a2的和,即a1+a3+a3。
90.计算单元4将数据块c的值c3+c4发送至计算单元1,并接收计算单元3发来的数据块b的值b2+b3,将本地数据块b的值更新为原数值b4与接收到的值b2+b3的和,即b2+b3+b4。
91.经过第二次数据传输,计算单元1的数据块c、计算单元2的数据块d、计算单元3的数据块a以及计算单元4的数据块b分别完成了一次累加,累加结果如图6c所示。
92.在图6c所示的状态下,进行数据更新环路中的第三次数据传输。
93.在第三次数据传输过程中:
94.计算单元1将数据块c的值c1+c3+c4发送至计算单元2,并接收计算单元4发来的数据块b的值b2+b3+b4,将本地数据块b的值更新为原数值b1与接收到的值b2+b3+b4的和,即b1+b2+b3+b4。这时,计算单元1中的数据块b为完整数据块,其包括了所有计算单元1~4的参数b的值b1~b4。
95.计算单元2将数据块d的值d1+d2+d4发送至计算单元3,并接收计算单元1发来的数据块c的值c1+c3+c4,将本地数据块c的值更新为原数值c2与接收到的值c1+c3+c4的和,即c1+c2+c3+c4。这时,计算单元2中的数据块c为完整数据块。
96.计算单元3将数据块a的值a1+a3+a3发送至计算单元4,并接收计算单元2发来的数据块d的值d1+d2+d4,将本地数据块d的值更新为原数值d3与接收到的值d1+d2+d4的和,即d1+d2+d3+d4。这时,计算单元3中的数据块d为完整数据块。
97.计算单元4将数据块b的值b2+b3+b4发送至计算单元1,并接收计算单元3发来的数据块a的值a1+a3+a3,将本地数据块a的值更新为原数值a4与接收到的值a1+a3+a3的和,即a1+a3+a3+a4。这时,计算单元4中的数据块a为完整数据块。
98.经过第三次数据传输,计算单元1的数据块b、计算单元2的数据块c、计算单元3的数据块d以及计算单元4的数据块a分别完成了一次累加,累加结果如图6d所示。如图6d所示,经过第三次累加,计算单元1~4中分别包括一个完整数据块,完整数据块为计算单元1的数据块b、计算单元2的数据块c、计算单元3的数据块d以及计算单元4的数据块a。
99.经过步骤s320的循环累加过程,使数据更新环路中的每个计算单元均包括一个完整数据块后,执行步骤s330。
100.在步骤s330中,采用各计算单元中的完整数据块的值循环覆盖其他计算单元中相应数据块的值,以完成数据组的更新。
101.根据一种实施例,步骤s330的循环覆盖过程包括:在数据更新环路中进行多次数
据传输,数据传输的次数为计算单元的数量减一。在每次数据传输中,每一个计算单元将自身的一个完整数据块的值发送至下一个计算单元,并接收上一个计算单元发来的完整数据块的值,将本地相应数据块的值更新为接收到的值。然后,在下一次数据传输过程中,每一个计算单元将更新后的数据块的值发送至下一个计算单元。
102.图7a~7d示出了步骤s330的循环覆盖过程的一个示例。循环的方向为如图5中的箭头500所示的顺时针方向,即,在数据更新环路中,数据按照计算单元1

计算单元2

计算单元3

计算单元4

计算单元1的方向单向传输。
103.如图7a所示,在初始状态下,每个计算单元中有且仅有一个完整数据块,完整数据块为计算单元1的数据块b、计算单元2的数据块c、计算单元3的数据块d以及计算单元4的数据块a。在图7a所示的初始状态下,进行数据更新环路中的第一次数据传输。
104.在第一次数据传输过程中:
105.计算单元1将自身的完整数据块b的值b1+b2+b3+b4发送至计算单元2,并接收计算单元4发来的完整数据块a的值a1+a3+a3+a4,将本地数据块a的值更新为接收到的值a1+a3+a3+a4。
106.计算单元2将自身的完整数据块c的值c1+c2+c3+c4发送至计算单元3,并接收计算单元1发来的完整数据块b的值b1+b2+b3+b4,将本地数据块b的值更新为接收到的值b1+b2+b3+b4。
107.计算单元3将自身的完整数据块d的值d1+d2+d3+d4发送至计算单元4,并接收计算单元2发来的完整数据块c的值c1+c2+c3+c4,将本地数据块c的值更新为接收到的值c1+c2+c3+c4。
108.计算单元4将自身的完整数据块a的值a1+a3+a3+a4发送至计算单元1,并接收计算单元3发来的完整数据块d的值d1+d2+d3+d4,将本地数据块d的值更新为接收到的值d1+d2+d3+d4。
109.经过第一次数据传输,计算单元1的数据块a、计算单元2的数据块b、计算单元3的数据块c以及计算单元4的数据块d分别完成了一次覆盖,覆盖结果如图7b所示。经过本次覆盖后,计算单元1的数据块a、计算单元2的数据块b、计算单元3的数据块c以及计算单元4的数据块d均变为完整数据块。
110.在图7b所示的状态下,进行数据更新环路中的第二次数据传输。
111.在第二次数据传输过程中:
112.计算单元1将完整数据块a的值a1+a3+a3+a4发送至计算单元2,并接收计算单元4发来的完整数据块d的值d1+d2+d3+d4,将本地数据块d的值更新为接收到的值d1+d2+d3+d4。
113.计算单元2将完整数据块b的值b1+b2+b3+b4发送至计算单元3,并接收计算单元1发来的完整数据块a的值a1+a3+a3+a4,将本地数据块a的值更新为接收到的值a1+a3+a3+a4。
114.计算单元3将完整数据块c的值c1+c2+c3+c4发送至计算单元4,并接收计算单元2发来的完整数据块b的值b1+b2+b3+b4,将本地数据块b的值更新为接收到的值b1+b2+b3+b4。
115.计算单元4将完整数据块d的值d1+d2+d3+d4发送至计算单元1,并接收计算单元3
发来的完整数据块c的值c1+c2+c3+c4,将本地数据块c的值更新为接收到的值c1+c2+c3+c4。
116.经过第二次数据传输,计算单元1的数据块d、计算单元2的数据块a、计算单元3的数据块b、计算单元4的数据块c分别完成了一次覆盖,覆盖结果如图7c所示。经过本次覆盖后,计算单元1的数据块d、计算单元2的数据块a、计算单元3的数据块b、计算单元4的数据块c均变为完整数据块。
117.在图7c所示的状态下,进行数据更新环路中的第三次数据传输。
118.在第三次数据传输中:
119.计算单元1将完整数据块d的值d1+d2+d3+d4发送至计算单元2,并接收计算单元4发来的完整数据块c的值c1+c2+c3+c4,将本地数据块c的值更新为接收到的值c1+c2+c3+c4。
120.计算单元2将完整数据块a的值a1+a3+a3+a4发送至计算单元3,并接收计算单元1发来的完整数据块d的值d1+d2+d3+d4,将本地数据块d的值更新为接收到的值d1+d2+d3+d4。
121.计算单元3将完整数据块b的值b1+b2+b3+b4发送至计算单元4,并接收计算单元2发来的完整数据块a的值a1+a3+a3+a4,将本地数据块a的值更新为接收到的值a1+a3+a3+a4。
122.计算单元4将完整数据块c的值c1+c2+c3+c4发送至计算单元1,并接收计算单元3发来的完整数据块b的值b1+b2+b3+b4,将本地数据块b的值更新为接收到的值b1+b2+b3+b4。
123.经过第三次数据传输,计算单元1的数据块c、计算单元2的数据块d、计算单元3的数据块a、计算单元4的数据块b分别完成了一次覆盖,覆盖结果如图7d所示。经过本次覆盖后,计算单元1的数据块c、计算单元2的数据块d、计算单元3的数据块a、计算单元4的数据块b均变为完整数据块。
124.经过步骤s330的循环覆盖过程,数据更新环路中的所有计算单元中的数据块均为完整数据块,该数据更新环路的数据更新过程结束。
125.步骤s310~s330介绍了单个数据更新环路上的数据更新过程。在本发明的一个实施例中,每个数据更新环路均按照步骤s310~s330来并行地进行数据更新,从而完成所有待更新的数据的更新。
126.基于本发明的通信方法200,基于各计算单元之间的物理通道设置多个数据更新环路,每个数据更新环路均将所有计算单元依次串联形成闭环。多个数据更新环路相互独立(即所包括的物理通道各不相同),可以在这多个数据更新环路上并行地进行数据更新,每个环路用于更新待更新的数据的一部分,从而加快了多个计算单元之间的数据更新速度,提高了通信效率。
127.例如,在通信系统100中仅设置一个数据更新环路的原始情况下,待更新的数据量为s,完成数据更新的耗时为t0。
128.基于本发明的通信方法200,通过设置多个数据更新环路来并行地进行数据更新,各数据更新环路的带宽分别为b1,b2,

,bn,其中,n为数据更新环路的数量。若每个数据更新环路上更新的数据量相同,则每个环上可以更新s/n的数据量,整个数据更新过程的耗时
为带宽最小的环路的耗时。当所有数据更新环路的带宽相同时,数据更新过程的耗时最短,为t0/n,如果有两个环(即n=2),则数据更新过程的耗时为t0/2,也就是原始耗时的1/2。
129.进一步地,基于本发明的通信方法200,各数据更新环路所更新的数据量根据该数据更新环路的带宽来确定。数据更新环路的带宽越大,在该环路上更新的数据量越多,这样可以实现带宽资源的最大化利用,保证每个环路上的数据更新耗时大致相等,进一步提高通信效率。例如,设置两个数据更新环路,环路1的带宽为环路2的两倍,即b1=2*b2,则在环路1、环路2上分别传输s*2/3、s*1/3的数据。这种效果相当于有三个带宽相同的环路同时传输等量(s*1/3)的数据,数据更新耗时为原始耗时的1/3,即t0/3。
130.本发明的通信系统100可以部署于计算设备中,使得计算设备能够高效地执行并行计算任务。计算设备例如可以是服务器、工作站等服务计算设备,也可以是桌面计算机、笔记本计算机等个人配置的计算机,还可以是手机、平板电脑、多媒体播放设备等移动终端,或者智能音箱、智能门禁、智能车载设备等物联网设备,但不限于此。
131.根据一种实施例,计算设备包括本发明的通信系统100和存储有程序指令的存储器,该程序指令可以被通信系统100中的各个计算单元读取。当通信系统中的各个计算单元读取并执行该程序指令时,使得通信系统100中形成至少两个数据更新环路,并且在至少两个数据更新环路上并行地进行数据更新,从而使得计算设备执行本发明的通信方法200,实现各个计算单元之间的高效数据更新。进一步地,基于各个计算单元之间的高效数据更新,计算设备可以通过各个计算单元来高效地执行并行计算任务。
132.本发明的通信方法200可以通过程序指令来实现。根据一种实施例,用于实现本发明的通信方法200的程序指令存储于可读存储介质中。存储有程序指令的可读存储介质可以通过i/o接口耦接至计算设备,该计算设备中包括本发明的通信系统100,并且可以读取与其耦接的可读存储介质中的用于实现本发明的通信方法200的程序指令。当该程序指令被计算设备读取时,使得计算设备执行本发明的通信方法200,实现通信系统中的各个计算单元之间的高效数据更新,从而使计算设备能够高效地执行并行计算任务。
133.这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、u盘、软盘、cd-rom或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
134.在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的通信方法。
135.以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
136.在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类
系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
137.在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
138.类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
139.本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
140.本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
141.此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
142.此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
143.如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
144.尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,
本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1