消息传输方法和消息传输装置

文档序号:1956587 发布日期:2021-12-10 浏览:22次 >En<

阅读说明:本技术 消息传输方法和消息传输装置 (Message transmission method and message transmission device ) 是由 林钦亮 王巧灵 于 2020-06-09 设计创作,主要内容包括:本申请提供了一种消息传输方法和消息传输装置,应用于包括N个计算节点和交换机的网内计算网络,有利于减少交换机的缓存需求,减少消息发送中断,从而提升网内计算的性能。该方法包括:N个计算节点中的第一计算节点通过交换机向该N个计算节点中的第二计算节点发送第一消息,该第一消息的标识为第一标识;第一计算节点接收来自该交换机的第二消息,该第二消息的标识为该第一标识,该第二消息是该N个计算节点所发送的标识为该第一标识的消息的聚合结果;第一计算节点基于该第二消息,通过该交换机向该第二计算节点发送第三消息,该第三消息为该第一计算节点下一个待发送的消息。(The application provides a message transmission method and a message transmission device, which are applied to an in-network computing network comprising N computing nodes and a switch, and are beneficial to reducing the cache demand of the switch and reducing message sending interruption, thereby improving the in-network computing performance. The method comprises the following steps: a first computing node in the N computing nodes sends a first message to a second computing node in the N computing nodes through a switch, wherein the identifier of the first message is a first identifier; the first computing node receives a second message from the switch, wherein the identifier of the second message is the first identifier, and the second message is an aggregation result of the messages which are sent by the N computing nodes and are identified as the first identifier; and the first computing node sends a third message to the second computing node through the switch based on the second message, wherein the third message is a message to be sent next by the first computing node.)

消息传输方法和消息传输装置

技术领域

本申请涉及分布式计算领域,更具体地,涉及一种消息传输方法和消息传输装置。

背景技术

越来越多的网络应用依赖于大规模计算,例如,人工智能、物联网和云计算等等。而想要实现大规模计算,依靠单个节点是不可行的,唯有分布式计算,能够通过多个节点协同处理,节约整体计算时间,提高计算效率,从而实现高性能计算。

由于分布式计算涉及多个计算节点,当分布式应用涉及大量数据传输时,网络传输成为了性能瓶颈。以人工智能(artificial intelligence,AI)分布式训练为例,模型训练的时候,计算节点需要对输入数据进行大量重复的训练计算(百万级、甚至更多次数的迭代计算),而每次训练计算涉及的数据传输量高达500M(不同的训练模型数据量不同),这会导致模型训练过程中的网络通信时间远远超过了实际训练时间。由此看来,通过压缩网络传输时间,将分布式计算的部分计算过程转移至网络设备(例如,路由器或者交换机等)来完成,可以给分布式计算带来性能提升。这种方式称为网内计算。

在目前的网内计算方案中,消息的确认时间过长,导致交换机的缓存需求较大,消息发送容易中断。

发明内容

本申请提供一种消息传输方法和消息传输装置,有利于减少交换机的缓存需求,减少消息发送中断,从而提升网内计算的性能。

第一方面,提供了一种消息传输方法,应用于包括N个计算节点和交换机的网内计算网络,所述方法包括:所述N个计算节点中的第一计算节点通过所述交换机向所述N个计算节点中的第二计算节点发送第一消息,所述第一消息的标识为第一标识;所述第一计算节点接收来自所述交换机的第二消息,所述第二消息的标识为第一标识,所述第二消息是所述N个计算节点所发送的标识为第一标识的消息的聚合结果;所述第一计算节点基于所述第二消息,通过所述交换机向所述第二计算节点发送第三消息,所述第三消息为所述第一计算节点下一个待发送的消息。

“所述第一计算节点基于所述第二消息,通过所述交换机向所述第二计算节点发送第三消息”也可以替换为:“所述第一计算节点在接收到来自所述交换机的第二消息之后,通过所述交换机向所述第二计算节点发送第三消息”。换句话说,该第一计算节点接收到该第二消息,就可以发送第三消息了,该第二消息用于触发第三消息的发送。

本申请实施例的消息传输方法,通过将交换机返回的第二消息作为第一计算节点发送的第一消息的ACK,无需第二计算节点再向第一计算节点返回ACK进行确认,降低了消息的确认时延,从而减少了交换机的缓存需求,使得消息的发送更加平滑,减少发送中断。此外,本申请的发送及确认机制简单、高效且易部署。

应理解,该第一计算节点为发送端(或者称为发送节点),该第二计算节点为接收端(或者称为接收节点)。交换机分别接收上述N个计算节点中的各个计算节点发送的消息,将其放入缓冲区。直到收到全部N个计算节点发送的标识为第一标识的消息,交换机基于这些消息进行聚合计算,并向各个计算节点发送聚合结果(即下面的第二消息)。交换机计算完了标识为第一标识的所有消息之后,清理缓存,第一计算节点才会发送下一个待发送的消息。第一计算节点未收到标识为第一标识的第一消息的ACK,该第一计算节点不会发送下一个待发送的消息,交换机就不会清理缓存,交换机需要收到全部N个计算节点发送的相同标识的消息,才可以进行聚合计算,否则交换机就等待接收。

本申请实施例可以适用于基于消息通信的网内计算网络,例如,基于多点接口(multi point interface,MPI)和英伟达集合多GPU通信库(nvidia collective multi-GPU communication library,NCCL)等主流传输协议的网内计算网络。

结合第一方面,在第一方面的某些实现方式中,在所述N个计算节点中的第一计算节点通过所述交换机向所述N个计算节点中的第二计算节点发送第一消息之前,所述方法还包括:所述第一计算节点设置滑动发送窗口,所述滑动发送窗口用于标识所述第一计算节点的待发送消息;在所述第一计算节点接收来自所述交换机的第二消息之后,所述方法还包括:所述第一计算节点将所述滑动发送窗口向前移动第一长度,所述第一长度等于所述第一消息的长度。

应理解,示例性地,上述第一标识为整数i,该第三消息的标识为i+j,j等于上述滑动发送窗口的长度,j为正整数。

结合第一方面,在第一方面的某些实现方式中,所述滑动发送窗口的长度小于或等于所述交换机的缓冲区大小。这样,才会避免交换机的缓冲区溢出。

结合第一方面,在第一方面的某些实现方式中,所述N个计算节点形成一个环网。

第二方面,提供了一种消息传输装置,用于执行上述第一方面中任一种可能的实现方式中的方法。具体地,该装置包括用于执行上述第一方面中任一种可能的实现方式中的方法的单元。

第三方面,提供了另一种消息传输装置,包括处理器,该处理器与存储器耦合,可用于执行存储器中的指令,以实现上述第一方面中任一种可能实现方式中的方法。可选地,该装置还包括存储器。可选地,该装置还包括通信接口,处理器与通信接口耦合。

在一种实现方式中,该消息传输装置为计算节点。当该消息传输装置为计算节点时,通信接口可以是收发器,或,输入/输出接口。

在另一种实现方式中,该消息传输装置为配置于计算节点中的芯片。当该消息传输装置为配置于计算节点中的芯片时,通信接口可以是输入/输出接口。

第四方面,提供了一种处理器,包括:输入电路、输出电路和处理电路。处理电路用于通过输入电路接收信号,并通过输出电路发射信号,使得处理器执行上述第一方面中任一种可能实现方式中的方法。

在具体实现过程中,上述处理器可以为芯片,输入电路可以为输入管脚,输出电路可以为输出管脚,处理电路可以为晶体管、门电路、触发器和各种逻辑电路等。输入电路所接收的输入的信号可以是由例如但不限于接收器接收并输入的,输出电路所输出的信号可以是例如但不限于输出给发射器并由发射器发射的,且输入电路和输出电路可以是同一电路,该电路在不同的时刻分别用作输入电路和输出电路。本申请实施例对处理器及各种电路的具体实现方式不做限定。

第五方面,提供了一种处理装置,包括处理器和存储器。该处理器用于读取存储器中存储的指令,并可通过接收器接收信号,通过发射器发射信号,以执行上述第一方面中任一种可能实现方式中的方法。

可选地,处理器为一个或多个,存储器为一个或多个。

可选地,存储器可以与处理器集成在一起,或者存储器与处理器分离设置。

在具体实现过程中,存储器可以为非瞬时性(non-transitory)存储器,例如只读存储器(read only memory,ROM),其可以与处理器集成在同一块芯片上,也可以分别设置在不同的芯片上,本申请实施例对存储器的类型以及存储器与处理器的设置方式不做限定。

应理解,相关的数据交互过程例如发送指示信息可以为从处理器输出指示信息的过程,接收能力信息可以为处理器接收输入能力信息的过程。具体地,处理输出的数据可以输出给发射器,处理器接收的输入数据可以来自接收器。其中,发射器和接收器可以统称为收发器。

上述第五方面中的处理装置可以是一个芯片,该处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于该处理器之外,独立存在。

第六方面,提供了一种计算机程序产品,计算机程序产品包括:计算机程序(也可以称为代码,或指令),当计算机程序被运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。

第七方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序(也可以称为代码,或指令)当其在计算机上运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。

第八方面,提供了一种消息传输系统,包括前述计算节点。

附图说明

图1是本申请实施例的系统架构的示意图。

图2是本申请实施例的另一系统架构的示意图。

图3是本申请实施例的消息传输方法的示意性流程图。

图4是本申请实施例的滑动发送窗口的示意图。

图5是本申请实施例的消息传输装置的示意性框图。

图6是本申请实施例的另一消息传输装置的示意性框图。

具体实施方式

下面将结合附图,对本申请中的技术方案进行描述。

越来越多的网络应用依赖于大规模计算,例如,人工智能、物联网和云计算等等。而想要实现大规模计算,依靠单个节点是不可行的,唯有分布式计算,能够通过多个节点协同处理,节约整体计算时间,提高计算效率,从而实现高性能计算。分布式计算是指利用多个计算节点(例如服务器、工作站)为某个应用提供协同计算。

由于分布式计算涉及多个计算节点,当分布式应用涉及大量数据传输时,网络传输成为了性能瓶颈。以人工智能(artificial intelligence,AI)分布式训练为例,模型训练的时候,计算节点需要对输入数据进行大量重复的训练计算(百万级、甚至更多次数的迭代计算),而每次训练计算涉及的数据传输量高达500M(不同的训练模型数据量不同),这会导致模型训练过程中的网络通信时间远远超过了实际训练时间,有些模型的网络通信时间甚至占整个模型训练时间的90%以上。由此看来,通过压缩网络传输时间,将分布式计算的部分计算过程转移至网络设备(例如,路由器或者交换机等)来完成,可以给分布式计算带来性能提升。上述部分计算例如可以是加、减、取最小值、取最大值等,此处不作限制。

上面这种计算方式就称为网内计算(in-net computing)。网内计算能够充分利用网络计算资源,实现分布式计算的提速。具体而言,网内计算可以为分布式计算节点分摊部分关键计算,还可以为分布式计算节点提供聚合计算,使得多份数据聚合为一,从而压缩网络带宽占用,加快网络传输。

网内计算场景中的交换机可以称为网内计算交换机。网内计算交换机除了具备传统的交换机功能之外,还带有一定的可编程能力和缓存能力,可以缓存数据,并且进行计算(例如,加法、减法)。本申请涉及网内计算场景,为便于描述,后续将网内计算交换机简称为“交换机”。

目前网内计算的场景主要包括:AI分布式训练、MapReduce、分布式数据库等等。而面向聚合计算(data reduction)的网内计算是其中一个重要的应用场景,其特点在于对数据流进行聚合计算,从而达到数据压缩、减少网络传输量的作用。聚合计算的原理是对多个计算节点发来的多份数据进行聚合计算,并只输出一份聚合后的数据。

图1示出了本申请实施例的系统架构100的示意图。该系统架构100包括参数服务器(parameter server,PS)110、交换机120、计算节点130、计算节点140以及计算节点150。

在非网内计算的场景中,计算节点130、计算节点140、计算节点150可以分别通过交换机120向参数服务器110发送训练结果,参数服务器110用于存放训练结果,将每次迭代中计算节点训练好的结果进行聚合并重新下发到计算节点。具体而言,在每次的训练迭代过程中(AI训练任务一般会涉及多达十万甚至百万级别的训练迭代,包括下列步骤:

1、各个计算节点分别把训练好的模型结果(后续简称为训练结果,例如包括参数和梯度等)发送到参数服务器110;

2、参数服务器110接收各个计算节点分别发送的训练结果,并对这些训练结果进行聚合计算(例如,对参数和梯度进行相加取均值),并由此更新AI模型;

3、参数服务器将更新好的模型参数下发到所有计算节点中。

由此可以看到,图1中的计算节点130、计算节点140、计算节点150在每个训练迭代后,各自会将其训练后的结果发送给参数服务器,假设每个计算节点的训练结果的数据量为n,则参数服务器接收到的总数据量是3n。

而在网内计算的场景中,上述交换机120为网内计算交换机,上述三个计算节点发送训练结果给参数服务器110的过程中,交换机120在数据经过自己时,对这些数据进行聚合计算,于是,后续参数服务器110收到的数据是交换机120聚合完成后的结果。示例性地,在图1中,计算节点130发送的参数依次是1、2、3…,计算节点140发送的参数依次是4、5、6…,计算节点150发送的参数依次是7、8、9…,于是交换机120向参数服务器110发送的是上述结果的均值:4、5、6…。由此可以看到,交换机120将原来的三份数据压缩成了一份,这在大规模AI训练的场景(可能包括上百甚至上千个计算节点)中,可以极大地压缩数据传输量,提升网络传输效率,提高训练总体性能。

图2示出了本申请实施例的另一系统架构200的示意图。该系统架构200包括交换机210、计算节点220、计算节点230以及计算节点240。在该系统架构200中,信息通过环(ring)的形式进行传输,如图2中的箭头所示,即计算节点220—>计算节点230—>计算节点240—>计算节点220。在一个计算节点通过交换机210向另一个计算节点发送报文的过程中,交换机210会拦截所有计算节点的报文并进行聚合计算,然后返回聚合结果至全部的计算节点,计算节点之间依然保持基于环的一对一通信。

下面结合图1详细介绍面向聚合计算的网内计算的基本流程,主要包括下列步骤:

1、计算节点130、计算节点140以及计算节点150同步通过交换机120向参数服务器110发送带有待计算数据的报文(后续简称为数据报文),该报文用索引(index)值编号;

2、交换机120接收数据报文,将收到的数据报文存放在交换机的缓冲区,并对index值相同的数据报文中的参数进行聚合计算;

3、当计算完所有计算节点发送来的某个index值的全部数据报文后,交换机120将该index值的数据报文的聚合结果以报文的形式广播给全部计算节点。

需要注意的是,通过对每个计算节点发送的数据报文进行index编号,交换机120在做聚合计算的时候可以区分多个不同的计算节点发来的数据报文,将来自不同计算节点、但是index值相同的数据报文进行聚合计算。另外,交换机120需要缓冲区来缓存数据,即在聚合计算之前,交换机120可以将部分计算节点发来的数据报文先在缓冲区缓存起来,然后等待其他计算节点发送了index值相同的数据报文,直到接收完全部计算节点发送的index值相同的数据报文之后,交换机120才可以进行聚合计算。

上述流程同样适用于图2所示的系统架构200,此处不再赘述。

因为缓冲区的容量有限,缓冲区需要重复利用,在计算完成后,交换机可以对缓冲区中已计算的数据报文进行清理。交换机一般按照先进先出的方式清理缓存。

综上所述,网内计算的具有如下特点:

1、交换机对各个计算节点发送的index值相同的数据报文进行聚合计算,计算完全部计算节点发来的同一index值的数据报文之后,交换机才会将聚合结果发送出去,否则丢包;

2、交换机需要在缓冲区缓存所收到的数据报文,采用先进先出的形式,当聚合完成并收到新的数据报文时,交换机可以清空最旧的缓存报文,以用于缓存下一个新收到的数据报文;

3、各个计算节点分别具有各自的发送窗口,用于指示待发送的数据报文,发送窗口大小受限于交换机的缓冲区大小,即各个计算节点的发送窗口的大小不得超过交换机的缓冲区的大小,否则会导致交换机的缓冲区溢出。

示例性地,以上述图1为例,假设计算节点130和计算节点140发送的“1”和“4”已经到达交换机120,那么交换机120会一直等待计算节点150发送“7”,直到收到“7”之后,交换机120才会进行聚合计算,并发送聚合结果“4”给参数服务器110。而由于交换机120的缓存有限,如果计算节点150一直没有发送数据,那么计算节点130和计算节点140应当在交换机的缓冲区溢出之前停止发送其他数据,例如,计算节点130不能继续发送“2”和“3”,计算节点140不能继续发送“5”和“6”。因此,对于每个计算节点而言,该计算节点应当采用一个小于或等于交换机的缓冲区的大小的发送窗口,也就是说,每收到参数服务器110作为接收端发送的一个确认消息(acknowledgement,ACK),该计算节点就把自身的发送窗口向前滑动,直到当发送窗口的可发送内容为空时,停止发送。

在网内计算网络中,从主机侧通信协议的角度上看,可以分为两种:基于可靠连接协议的通信方式和基于不可靠连接协议的通信方式。

在基于不可靠连接协议的通信方式中,主机侧采用无连接协议(例如UDP协议)来实现一对多的通信,主机侧只负责丢包重传等简单的流控,而不执行其他复杂的流控动作,例如拥塞控制。因此,这种通信方式并不主流,一般只在研究中使用。

在基于可靠连接协议的通信方式中,主机侧采用一对一有连接的通信协议,例如,传输控制协议(transmission control protocol,TCP)协议、可靠的远程直接内存访问(remote direct memory access,RDMA)协议等。示例性地,在图1中,计算节点130、计算节点140以及计算节点150分别与参数服务器110建立一对一通信。而交换机120在中途将数据拦截下来进行聚合计算,并在计算完成后将聚合结果放到报文中发送给参数服务器110(即目的主机)。这样看来,主机侧部署容易,可以直接对原生的应用场景(例如AI分布式训练场景中的tensorflow)作简单的修改。在当前以及将来的网内计算场景中,高性能的RDMA网卡已是主流,能够利用硬件高速处理数据流报文,因此,基于可靠连接协议的通信方式也成为网内计算的主要通信方式。

当前高性能网络的信息传输基本上都是基于消息(message)的传输,即发送/接收的内容都是封装在一个消息中。如果采用RDMA网卡,则RDMA网卡会对消息进行自动切包(由硬件进行)发送,而接收方网卡会对报文自动组装成一个消息(由硬件进行),并送往主机内存。因此,采用基于消息的传输方式将是网内计算网络的主流。

当前的网内计算缺少适用于网内计算网络传输特点的消息确认方式。已有的信息确认方式分为两种:基于用户数据报协议(user datagram protocol,UDP)消息的发送和确认方式,以及基于RDMA消息的发送和确认方式。

其中,基于UDP消息的发送和确认方式无法支持RDMA协议(即以消息为发送单元)。而在基于RDMA消息的发送和确认的方案中,如上所述,计算节点可以按发送窗口进行滑动从而发送消息,当收到ACK(即接收端对收到的报文回复确认报文)时,发送窗口向前滑动。简单来说,当节点A发送一个报文之后,该报文会从节点A途经网络到达节点B,然后节点B回复ACK,ACK从节点B途经网络到达节点A,整个过程耗时一个往返时间(round-trip time,RTT)。由此可以看到,节点A发送完一个报文,需要RTT时间才能确认完毕。

可是,在网内计算的过程中,正如前文网内计算的特点中所提到的,交换机的缓冲区清理是发生在处理完一条消息(即聚合完成同一index值的数据报文)时,也就是说,计算节点不发送新的消息,交换机就不会清理缓存(因为交换机需要收到全部计算节点的相同index的数据报文,才可以进行聚合计算,否则交换机就等待接收),因此,计算节点越早收到ACK,该计算节点就可以越早发送新的报文,交换机就可以越早清理缓存,提早清理缓存意味着该交换机可以更早的留出缓冲区资源接收新的报文,可以更好的利用缓存资源,减少缓存空间需求。

在现有的方案中,一个计算节点发送的数据报文需要一个RTT时间才能得到确认,加大了交换机的缓存需求,由于交换机的缓冲区大小有限,而由于确认时间较长,缓冲区内缓存的报文不能被及时清理,导致作为发送端的计算节点的发送窗口无法滑动,使得发送容易发送中断,发送不平滑。

有鉴于此,本申请实施例提供了一种新的消息传输方法和消息传输装置,能够缩短消息的确认时间,有利于减少交换机的缓存需求,减少消息发送中断,从而提升网内计算的性能。

在介绍本申请实施例提供的方法之前,先做出以下几点说明。

第一,在本申请实施例中,“预先获取”可以通过在设备(例如,包括计算节点)中预先保存相应的代码、表格或其他可用于指示相关信息的方式来实现,本申请对于其具体的实现方式不做限定。

第二,在下文示出的实施例中,各术语及英文缩略语,如滑动发送窗口、聚合计算等,均为方便描述而给出的示例性举例,不应对本申请构成任何限定。本申请并不排除在已有或未来的协议中定义其它能够实现相同或相似功能的术语的可能。

第三,在下文示出的实施例中第一、第二以及各种数字编号仅为描述方便进行的区分,并不用来限制本申请实施例的范围。例如,区分不同的消息、区分不同的长度等。

第四,“至少一个”是指一个或者多个,“至少两个”和“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b和c中的至少一项(个),可以表示:a,或b,或c,或a和b,或a和c,或b和c,或a、b和c,其中a,b,c可以是单个,也可以是多个。

下面结合附图详细说明本申请提供的消息传输方法。图3示出了本申请实施例提供的消息传输方法300的示意性流程图。该方法可以应用于包括N个计算节点和交换机的网内计算网络中,例如图1所示的系统架构100、或者,图2所示的系统架构200,本申请实施例对此不作限定。该方法300可以由该N个计算节点中的任一计算节点执行,例如,由上述系统架构100或系统架构200中的任一计算节点执行,下面称为第一计算节点。方法300具体包括下列步骤:

S310,第一计算节点通过交换机向N个计算节点中的第二计算节点发送第一消息,该第一消息的标识为第一标识,该第一标识可以为数值、字母、或者其他字符,本申请实施例对此不作限定。示例性地,该第一标识可以为i,i为整数。

应理解,该第一计算节点为发送端(或者称为发送节点),该第二计算节点为接收端(或者称为接收节点)。上述第一标识为i即表示消息的index值为i。

示例性地,在图1所示的系统架构100中,该第一计算节点可以是计算节点130、计算节点140、计算节点150中的任一个,该第二计算节点可以是参数服务器110。

示例性地,在图2所示的系统架构200中,该第一计算节点可以是计算节点220,该第二计算节点可以是计算节点230;或者,该第一计算节点可以是计算节点230,该第二计算节点可以是计算节点240;或者,该第一计算节点可以是计算节点240,该第二计算节点可以是计算节点220。

应理解,N个计算节点中的其他计算节点所执行的步骤与第一计算节点相同,即其他计算节点会通过交换机发送标识为第一标识的消息,后续不再一一列举。

交换机分别接收上述N个计算节点中的各个计算节点发送的消息,将其放入缓冲区。直到收到全部N个计算节点发送的标识为第一标识的消息,交换机基于这些消息进行聚合计算,并向各个计算节点发送聚合结果(即下面的第二消息)。

S320,该第一计算节点接收来自该交换机的第二消息,该第二消息的标识为第一标识,该第二消息是该N个计算节点所发送的标识为第一标识的消息的聚合结果。

示例性地,在图1所示的系统架构100中,计算节点130发送的消息对应的参数依次是1(标识为i)、2(标识为i+1)、3(标识为i+2),计算节点140发送的消息对应的参数依次是4(标识为i)、5(标识为i+1)、6(标识为i+2),计算节点150发送的消息对应的参数依次是7(标识为i)、8(标识为i+1)、9(标识为i+2),于是交换机120返回的第二消息依次为:4(标识为i)、5(标识为i+1)、6(标识为i+2)。

应理解,交换机计算完了标识为第一标识的所有消息之后,清理缓存,第一计算节点才会发送下一个待发送的消息。第一计算节点未收到标识为第一标识的第一消息的ACK,该第一计算节点不会发送下一个待发送的消息,交换机就不会清理缓存,交换机需要收到全部N个计算节点发送的相同标识的消息,才可以进行聚合计算,否则交换机就等待接收。

可选地,该第二消息是该交换机发送给所有计算节点(即上述N个计算节点)的。示例性地,交换机可以通过广播的方式向该N个计算节点发送该第二消息;或者,交换机可以分别向上述N个计算节点中的每个计算节点发送第二消息,其中,每个第二消息的头部(header)的信息可以为与该第二消息对应的计算节点的互联网协议(internet protocol,IP)地址,发送给每个计算节点的第二消息的消息体是相同的。

S330,该第一计算节点基于该第二消息,通过该交换机向该第二计算节点发送第三消息,该第三消息为该第一计算节点下一个待发送的消息。换句话说,该第一计算节点接收到该第二消息,就可以发送第三消息了,该第二消息用于触发第三消息的发送。

本申请实施例将来自交换机的标识为第一标识的第二消息作为标识为第一标识的第一消息的ACK。第一计算节点接收到上述第二消息,表示交换机已经完成了聚合计算,无需再缓存来自各个计算节点的标识为第一标识的消息,因此,该第一计算节点可以在收到上述第二消息之后,发送下一个待发送的消息。

本申请实施例的消息传输方法,通过将交换机返回的第二消息作为第一计算节点发送的第一消息的ACK,无需第二计算节点再向第一计算节点返回ACK进行确认,降低了消息的确认时延,从而减少了交换机的缓存需求,使得消息的发送更加平滑,减少发送中断。此外,本申请的发送及确认机制简单、高效且易部署。

本申请实施例可以适用于基于消息通信的网内计算网络,例如,基于多点接口(multi point interface,MPI)和英伟达集合多GPU通信库(nvidia collective multi-GPU communication library,NCCL)等主流传输协议的网内计算网络。

作为一个可选的实施例,在N个计算节点中的第一计算节点通过该交换机向该N个计算节点中的第二计算节点发送第一消息之前,该方法还包括:第一计算节点设置滑动发送窗口,该滑动发送窗口用于标识该第一计算节点的待发送消息;在该第一计算节点接收来自该交换机的第二消息之后,该方法还包括:该第一计算节点将该滑动发送窗口向前移动第一长度,该第一长度等于该第一消息的长度。

应理解,该滑动发送窗口的长度小于或等于该交换机的缓冲区大小。示例性地,上述第一标识为i,则该第三消息的标识为i+j,j等于上述滑动发送窗口的长度,j为整数。

图4示出了本申请实施例的滑动发送窗口的示意图,如图4所示,滑动发送窗口的长度等于3,第一计算节点依次通过交换机发送消息i(上述第一消息)、消息i+1、消息i+2,交换机将消息i缓存在缓冲区的存储0中,将消息i+1缓存在缓冲区的存储1中,将消息i+2缓存在缓冲区的存储2中。若第一计算节点未收到交换机返回的聚合结果(上述第二消息,即为消息i的ACK),无法滑动窗口,该第一计算节点会暂停消息的发送。若第一计算节点收到了交换机返回的上述第二消息,该第一计算节点将窗口滑动一段距离,新的滑动发送窗口指示消息i+1、消息i+2、消息i+3。由于消息i+1、消息i+2已经发送,该第一计算节点的下一个待发送的消息为消息i+3。该第一计算节点可以继续发送消息i+3(上述第三消息)。此时,交换机已经完成了存储0的清理,交换机可以将接收到的消息i+3缓存在存储0中。

作为一个可选的实施例,该N个计算节点形成一个环网。应理解,环网可以是图2所示的系统架构200,此处不再赘述。

应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

上文中结合图1至图4,详细描述了根据本申请实施例的消息传输方法,下面将结合图5至图6,详细描述根据本申请实施例的消息传输装置。

图5示出了本申请实施例提供的消息传输装置500,该装置500包括:发送单元510和接收单元520。

其中,该发送单元510用于通过所述交换机向所述N个计算节点中的第二计算节点发送第一消息,所述第一消息的标识为第一标识;该接收单元520用于接收来自所述交换机的第二消息,所述第二消息的标识为第一标识,所述第二消息是所述N个计算节点所发送的标识为第一标识的消息的聚合结果;发送单元510还用于:通过所述交换机向所述第二计算节点发送第三消息,所述第三消息为所述第一计算节点下一个待发送的消息。

可选地,所述装置还包括:处理单元,用于在通过所述交换机向所述N个计算节点中的第二计算节点发送第一消息之前,设置滑动发送窗口,所述滑动发送窗口用于标识所述装置的待发送消息;所述处理单元还用于:在接收来自所述交换机的第二消息之后,将所述滑动发送窗口向前移动第一长度,所述第一长度等于所述第一消息的长度。

可选地,所述滑动发送窗口的长度小于或等于所述交换机的缓冲区大小。

可选地,所述N个计算节点形成一个环网。

应理解,这里的装置500以功能单元的形式体现。这里的术语“单元”可以指应用特有集成电路(application specific integrated circuit,ASIC)、电子电路、用于执行一个或多个软件或固件程序的处理器(例如共享处理器、专有处理器或组处理器等)和存储器、合并逻辑电路和/或其它支持所描述的功能的合适组件。在一个可选例子中,本领域技术人员可以理解,装置500可以具体为上述实施例中的计算节点,或者,上述实施例中计算节点的功能可以集成在装置500中,装置500可以用于执行上述方法实施例中与计算节点对应的各个流程和/或步骤,为避免重复,在此不再赘述。

上述装置500具有实现上述方法中计算节点执行的相应步骤的功能;上述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。例如,上述获取单元510可以为通信接口,例如收发接口。

在本申请的实施例,图5中的装置500也可以是芯片或者芯片系统,例如:片上系统(system on chip,SoC)。对应的,获取单元510可以是该芯片的收发电路,在此不做限定。

图6示出了本申请实施例提供的另一消息传输装置600。该装置600包括处理器610、收发器620和存储器630。其中,处理器610、收发器620和存储器630通过内部连接通路互相通信,该存储器630用于存储指令,该处理器610用于执行该存储器630存储的指令,以控制该收发器620发送信号和/或接收信号。

其中,该收发器620用于:通过所述交换机向所述N个计算节点中的第二计算节点发送第一消息,所述第一消息的标识为第一标识;接收来自所述交换机的第二消息,所述第二消息的标识为第一标识,所述第二消息是所述N个计算节点所发送的标识为第一标识的消息的聚合结果;以及,通过所述交换机向所述第二计算节点发送第三消息,所述第三消息为所述第一计算节点下一个待发送的消息。

可选地,该处理器610用于:在通过所述交换机向所述N个计算节点中的第二计算节点发送第一消息之前,设置滑动发送窗口,所述滑动发送窗口用于标识所述装置的待发送消息;在接收来自所述交换机的第二消息之后,将所述滑动发送窗口向前移动第一长度,所述第一长度等于所述第一消息的长度。

可选地,所述滑动发送窗口的长度小于或等于所述交换机的缓冲区大小。

可选地,所述N个计算节点形成一个环网。

应理解,装置600可以具体为上述实施例中的计算节点,或者,上述实施例中计算节点的功能可以集成在装置600中,装置600可以用于执行上述方法实施例中与计算节点对应的各个步骤和/或流程。可选地,该存储器640可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。该处理器620可以用于执行存储器中存储的指令,并且该处理器执行该指令时,该处理器可以执行上述方法实施例中与计算节点对应的各个步骤和/或流程。

应理解,在本申请实施例中,该处理器可以是中央处理单元(Central ProcessingUnit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器执行存储器中的指令,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

17页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:通信方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类