本发明专利技术公开了一种并行计算机系统中基于接收方滑动窗口的数据传输方法,目的是保证现有并行计算机系统设计中基于乱序和不可靠网络的RDMA传输数据的完整正确性。技术方案是先在发送节点和接收节点间建立连接,在接收节点设置接收窗口,接收窗口只记录接收RDMA报文的编号,不对进入接收窗口的RDMA报文进行缓存;发送节点向接收节点发送RDMA报文并响应接收节点发回的重传请求报文,同时接收节点接收报文编号位于接收窗口之内的RDMA报文,并将RDMA报文中的数据写入接收节点的内存中;发送节点收到了接收节点发送的RDMA完成响应报文,发送节点结束本次RDMA传输。本发明专利技术相比于现有方法能够减少硬件资源开销,降低重传开销,提高传输的效率。
【技术实现步骤摘要】
并行计算机系统中基于接收方滑动窗口的数据传输方法
本专利技术涉及并行计算机系统中,在两个计算节点之间进行内存数据搬移的方法,特别是基于乱序和不可靠网络实现计算节点间基于接收方滑动窗口的数据传输方法。
技术介绍
并行计算机系统通常是由多个计算节点(简记为节点)和互连网络组成,节点由处理器、网络接口和内存组成,节点通过网络接口进行数据的发送接收,节点间通过互连网络进行通信。并行计算机系统中,一种基本的通信模式是在两个节点(记为发送节点和接收节点)间的内存中进行数据拷贝,也就是发送节点将本节点内存区域中的数据写入到接收节点的指定内存区域中,这种通信模式通常称为远程直接内存访问(RemoteDirectMemoryAccess,RDMA)。RDMA通信需要依赖并行计算机的互连网络完成,一般来说,一次RDMA传输的数据量很大,在互连网络上进行数据传输时,需要将一次RDMA传输拆分成多个报文,各个报文独立地由发送节点传输到接收节点。互连网络中,为了提高网络的传输性能,在两个节点间可以设计多条路径,设计路由算法在发送节点和接收节点间的多条路径中选择某一条路径进行报文传输。路由算法考虑的因素一般包括:路径负载平衡、死锁避免、路径延迟等。由于多条路径的存在,发送节点向接收节点发出的多个报文,到达接收节点的顺序可能与发送节点发出的顺序不一致,也就是存在乱序传输的特点。大规模并行计算机系统中,互连网络的规模通常很大,在实现上,难以保证互连网络的可靠性,例如,网络中的某条通路可能会断开。不可靠的互连网络造成的结果是发送节点向接收节点传输的报文,不一定能够最终到达接收节点。从节点上运行的软件看来,RDMA传输的数据应该是正确完整的。如何基于乱序和不可靠网络实现快速正确的RDMA传输是并行计算机系统设计中的重要问题之一。目前现有的RDMA传输方法主要有两类:1基于发送节点滑动窗口的RDMA传输方法采用这种方法的主要是美国Cray公司并行计算机系统,发送节点将已经发出、但还未收到响应的报文保存在一个缓冲区中,称为发送滑动窗口,发送滑动窗口的大小代表在没有收到接收节点确认信息的情况下发送节点最多可以发送的报文个数,一般根据设计需要设置发送滑动窗口的大小。采用基于发送节点滑动窗口的RDMA传输方法进行一次RDMA数据传输流程如下:发送节点向接收节点发送报文,同时将该报文保存在发送滑动窗口中,启动硬件上的超时计数器,如果发送滑动窗口中的报文超时还未收到接收节点返回的响应报文,则发送节点将重新向接收节点发送该报文;接收节点接收到报文后,向报文的发送节点返回表明已经接收成功的响应报文;发送节点一旦接收到响应报文,就将响应报文所对应的发送报文从发送滑动窗口中移除;如果发送节点的发送滑动窗口满,则发送节点暂停向接收节点发送报文,直到有报文从发送滑动窗口中移除后再恢复报文的发送;发送节点将一次RDMA传输的所有报文发送完成,并且收齐了所有的响应报文后,一次RDMA传输操作完成。这类方法存在如下缺点:1)由于接收节点需要为每个报文向发送节点返回响应报文,因而网络中响应报文的数量很多,容易引起网络拥塞;2)发送滑动窗口需要设置存储空间对每一个发送报文进行缓存,只有收到接收节点确认信息时才将报文从发送滑动窗口中移除,消耗芯片上的存储器资源,因而硬件开销比较大。2基于接收方计数器的方法采用这种方法的主要是天河系列计算机系统,采用基于接收方计数器的方法进行一次RDMA数据传输流程如下:发送节点向接收节点进行RDMA传输时,首先告知接收节点本次RDMA传输中所包含的报文总数,然后才进行报文的传输;接收节点对收到的报文进行计数,当计数器达到报文总数时,接收节点向发送节点返回响应报文,告知发送节点所有的报文都收齐;在接收节点上,为报文计数器设置超时机制,当计数器的值超过一定时间还未收齐报文时,将通知发送节点重新发送本次RDMA传输的报文。这类方法存在的缺点是,当接收节点的计数器超时后,要求发送节点将此次RDMA传输的所有报文全部重发,重发的报文中可能大部分已经被接收节点成功接收到,因此,当发送失败需要重传时此类方法重传开销大、易引起网络拥塞、传输效率低。
技术实现思路
本专利技术要解决的技术问题是:现有并行计算机系统设计中基于乱序和不可靠网络的RDMA传输过程中需要保证传输数据的完整正确性,同时要保证数据传输性能较好,而现有方法存在易引起网络拥塞、硬件开销大和重传开销大的问题。为了解决上述技术问题,本专利技术提出一种基于接收方滑动窗口的快速数据传输方法,该方法能够相比于现有方法减少硬件资源开销,降低重传开销,提高传输的效率。具体技术方案为:1)因为网络中每次RDMA传输的数据大小不固定,记系统支持的一次RDMA传输的最大数据量为X字节(X为自然数,X的取值和系统设计相关),一次RDMA传输的实际数据量为Y字节(Y为自然数,Y≤X),一个RDMA报文的数据大小为P字节(P为自然数,和硬件实现中的RDMA报文格式有关,一般为512),一次RDMA数据传输最多被划分成M个RDMA报文,(表示上取整),实际一次RDMA数据传输被划分成N个RDMA报文,依照RDMA报文中所传输数据在内存中的相对位置,将发送节点发出的RDMA报文进行编号,则报文的编号范围为0~N-1。记一次RDMA传输的数据在发送节点内存中的基地址为Addr_Send,在接收节点内存中的基地址为Addr_Recv,则此次RDMA传输第k(k为整数,0≤k≤N-1)个RDMA报文的数据在发送节点内存中的地址为Addr_Send+k*P,并相应地存储到接收节点中地址为Addr_Recv+k*P的内存中。发送节点将一次RDMA传输分解为N个RDMA报文独立的进行传输,依次将发送节点内存中的数据传输到接收节点对应的内存区间中。发送节点从内存中取出数据,封装成如图2所示的RDMA报文。RDMA报文包括四个域:报文类型TYPE(3位)、报文编号PIDX(位)、尾标志位TAIL(1位)、数据DATA(8*Y位),本专利技术中涉及到的报文类型有6种:RDMA报文、RDMA完成响应报文、单报文重传请求报文、区间重传请求报文、连接请求报文、连接响应报文。其中,RDMA报文是数据报文,另外5种是控制报文,与现有技术中的控制报文格式一样,因此,RDMA报文中,报文类型占据3位;一次RDMA数据传输最多被划分成M个RDMA报文,因此,报文编号占据位;每个RDMA报文中的数据为Y字节,即8*Y位。发送节点从内存中取出数据,将数据封装成N个RDMA报文,每个RDMA报文封装方法如下:将报文类型域置为RDMA报文,报文编号填入PIDX域,TAIL域初始值为0,如果报文编号等于N-1,则将TAIL置1,将内存中取出的数据填入数据域。2)接收节点中设置接收滑动窗口(简记为接收窗口),接收节点设置R(R为正整数,设计时根据系统规模和资源限制设置R的大小,一般为256~512)个接收窗口,一次RDMA传输占用一个接收窗口,在网络中可能同时会有多个RDMA传输,占用多个接收窗口,因此,在接收节点设置有指针变量W_Ptr,通过W_Ptr访问R个接收窗口中任意一个接收窗口的信息,本专利技术只涉及一次RDMA传输过程中的改进,因此,对接收窗口的数量R不作探讨。接本文档来自技高网...
【技术保护点】
一种并行计算机系统中基于接收方滑动窗口的数据传输方法,其特征在于包括以下步骤:第一步,在发送节点和接收节点间建立连接,具体过程如下:1.1发送节点向接收节点发送连接请求报文,通过连接请求报文,接收节点为发送节点分配好此次远程直接内存访问传输即RDMA传输的接收窗口,接收窗口初始状态置WBASE为0,WVEC为全0,W_Tail为0;接收节点设置R个接收窗口,R为正整数,一次RDMA传输占用一个接收窗口,在接收节点设置有指针变量W_Ptr,通过W_Ptr访问R个接收窗口中任意一个接收窗口的信息,接收窗口的大小代表在接收窗口没有滑动时接收节点最多可以接收的RDMA报文个数,记一个接收窗口的大小为W位,W为正整数,每个接收窗口中的信息包括:窗口基地址索引号WBASE,占位,M为一次RDMA数据传输最多被划分成的RDMA报文的个数,WBASE表示接收窗口接收的RDMA报文编号从WBASE开始,接收窗口可以接收报文的报文编号范围为[WBASE,WBASE+W‑1],若收到的报文编号落在接收窗口之外,则接收节点一律将其丢弃;窗口接收向量WVEC,占W位,WVEC向量从左至右计算位索引号,索引号的范围为0~W‑1,WVEC对应接收窗口中W个RDMA报文的接收状态;WVEC第m位的状态代表报文编号为WBASE+m的RDMA报文的接收状态,m为整数,0≤m≤W‑1,若第m位为0,表明接收节点没有接收到报文编号为WBASE+m的RDMA报文,若第m位为1,表明接收节点已经接收到报文编号为WBASE+m的RDMA报文;标志位W_Tail,占1位,W_Tail值为1时表明接收窗口已经接收到此次RDMA传输的最后一个RDMA报文;记LOC(VEC)表示向量WVEC从左边开始、连续为1的位数,接收的报文编号刚好是滑动窗口的基地址WBASE,且该RDMA报文不是此次RDMA传输的尾报文时,接收窗口向右滑动LOC(VEC)位,接收节点更新WBASE的值为WBASE+LOC(VEC),WVEC更新为WBASE<<LOC(VEC),其中<<为计算机中的左移运算符;1.2接收节点向发送节点返回接收窗口在接收节点的指针W_Ptr;第二步,发送节点执行2.1步,向接收节点发送RDMA报文并响应接收节点发回的重传请求报文,同时接收节点执行2.2步,接收报文编号位于接收窗口之内的RDMA报文,并将RDMA报文中的数据写入接收节点的内存中;2.1发送节点向接收节点发送RDMA报文并响应接收节点发回的重传请求报文:2.1.1发送节点从内存中取出数据,将数据拆分并封装成N个RDMA报文,N为自然数,N<M;2.1.2如果发送节点没有收到重传请求报文,发送节点向接收节点发送报文编号为i的RDMA报文,转2.1.3;如果发送节点收到了接收节点发回的重传请求报文,重传请求报文中携带着报文编号PIDX,则接收节点对重传请求报文做出响应,向接收节点重新发送RDMA报文,如果是单报文重传请求报文即要求发送节点重新发送报文编号PIDX的RDMA报文,则执行2.1.2.1,如果是区间重传请求报文即要求发送节点重传报文编号范围为[PIDX,N‑1]的所有RDMA报文,则执行2.1.2.2;2.1.2.1发送节点获取重传请求报文中的报文编号PIDX,从发送节点内存中重新取出报文编号PIDX的RDMA报文的数据,封装成RDMA报文,发送给接收节点;转2.1.3;2.1.2.2发送节点取出重传请求报文中的报文编号PIDX,从发送节点内存中重新取出报文编号PIDX的RDMA报文的数据,封装成RDMA报文,发送给接收节点;i置为PIDX,转2.1.3;2.1.3i增1,若i<N‑1,表明此次RDMA传输的报文还没有发送完,转2.1.2;若i=N‑1,表明要发送的是本次RDMA传输的最后一个RDMA报文,将此报文的尾标志位TAIL置1,转2.1.2;否则,i>N‑1,表明发送节点已经将此次RDMA传输的所有RDMA报文发送完毕,转2.1.4;2.1.4若发送节点收到了接收节点发送的RDMA完成响应报文,转第三步;若发送节点收到了单报文重传请求报文,发送节点获取重传请求报文中的报文编号PIDX,从发送节点内存中地址为Addr_Send+PIDX*P的数据,封装成RDMA报文,发送给接收节点,转2.1.4,所述Addr_Send为此次RDMA传输的数据在发送节点内存中的基地址,P为一个RDMA报文的数据大小;若发送节点收到区间重传请求报文,转2.1.2.2;否则,发送节点停止发送RDMA报文,转2.1.4;2.2接收节点接收报文编号位于接收窗口之内即编号为WBASE~WBASE+W‑1的RDMA报文,并将RDMA报文中的数据写入接收节点的内存中,记接收节点收到的报文编号...
【技术特征摘要】
1.一种并行计算机系统中基于接收方滑动窗口的数据传输方法,其特征在于包括以下步骤:第一步,在发送节点和接收节点间建立连接,具体过程如下:1.1发送节点向接收节点发送连接请求报文,通过连接请求报文,接收节点为发送节点分配好此次远程直接内存访问传输即RDMA传输的接收窗口,接收窗口初始状态置WBASE为0,WVEC为全0,W_Tail为0;接收节点设置R个接收窗口,R为正整数,一次RDMA传输占用一个接收窗口,在接收节点设置有指针变量W_Ptr,通过W_Ptr访问R个接收窗口中任意一个接收窗口的信息,接收窗口的大小代表在接收窗口没有滑动时接收节点最多可以接收的RDMA报文个数,记一个接收窗口的大小为W位,W为正整数,每个接收窗口中的信息包括:窗口基地址索引号WBASE,占位,M为一次RDMA数据传输最多被划分成的RDMA报文的个数,WBASE表示接收窗口接收的RDMA报文编号从WBASE开始,接收窗口可以接收报文的报文编号范围为[WBASE,WBASE+W-1],若收到的报文编号落在接收窗口之外,则接收节点一律将其丢弃;窗口接收向量WVEC,占W位,WVEC向量从左至右计算位索引号,索引号的范围为0~W-1,WVEC对应接收窗口中W个RDMA报文的接收状态;WVEC第m位的状态代表报文编号为WBASE+m的RDMA报文的接收状态,m为整数,0≤m≤W-1,若第m位为0,表明接收节点没有接收到报文编号为WBASE+m的RDMA报文,若第m位为1,表明接收节点已经接收到报文编号为WBASE+m的RDMA报文;标志位W_Tail,占1位,W_Tail值为1时表明接收窗口已经接收到此次RDMA传输的最后一个RDMA报文;记LOC(VEC)表示向量WVEC从左边开始、连续为1的位数,接收的报文编号刚好是滑动窗口的基地址WBASE,且该RDMA报文不是此次RDMA传输的尾报文时,接收窗口向右滑动LOC(VEC)位,接收节点更新WBASE的值为WBASE+LOC(VEC),WVEC更新为WBASE<<LOC(VEC),其中<<为计算机中的左移运算符;1.2接收节点向发送节点返回接收窗口在接收节点的指针W_Ptr;第二步,发送节点执行2.1步,向接收节点发送RDMA报文并响应接收节点发回的重传请求报文,同时接收节点执行2.2步,接收报文编号位于接收窗口之内的RDMA报文,并将RDMA报文中的数据写入接收节点的内存中;2.1发送节点向接收节点发送RDMA报文并响应接收节点发回的重传请求报文:2.1.1发送节点从内存中取出数据,将数据拆分并封装成N个RDMA报文,N为自然数,N<M;2.1.2如果发送节点没有收到重传请求报文,发送节点向接收节点发送报文编号为i的RDMA报文,转2.1.3;如果发送节点收到了接收节点发回的重传请求报文,重传请求报文中携带着报文编号PIDX,则接收节点对重传请求报文做出响应,向接收节点重新发送RDMA报文,如果是单报文重传请求报文即要求发送节点重新发送报文编号PIDX的RDMA报文,则执行2.1.2.1,如果是区间重传请求报文即要求发送节点重传报文编号范围为[PIDX,N-1]的所有RDMA报文,则执行2.1.2.2;2.1.2.1发送节点获取重传请求报文中的报文编号PIDX,从发送节点内存中重新取出报文编号PIDX的RDMA报文的数据,封装成RDMA报文,发送给接收节点;转2.1.3;2.1.2.2发送节点取出重传请求报文中的报文编号PIDX,从发送节点内存中重新取出报文编号PIDX的RDMA报文的数据,封装成RDMA报文,发送给接收节点;i置为PIDX,转2.1.3;2.1.3i增1,若i<N-1,表明此次RDMA传输的报文还没有发送完,转2.1.2;若i=N-1,表明要发送的是本次RDMA传输的最后一个RDMA报文,将此报文的尾标志位TAIL置1,转2.1.2;否则,i>N-1,表明发送节点已经将此次RDMA传输的所有RDMA报文发送完毕,转2.1.4;2.1.4若发送节点收到了接收节点发送的RDMA完成响应报文,转第三步;若发送节点收到了单报文重传请求报文,发送节点获取重传请求报文中的报文编号PIDX,从发送节点内存中地址为Addr_Send+PIDX*P的数据,封装成RDMA报文,发送给接收节点,转2.1.4,所述Addr_Send为此次RDMA传输的数据在发送节点内存中的基地址,P为一个RDMA报文的数据大小;若发送...
【专利技术属性】
技术研发人员:王绍刚,陆平静,徐炜遐,庞征斌,王克非,张峻,夏军,董德尊,赖明澈,戴艺,齐星云,罗章,常俊胜,徐金波,黎渊,张建民,王桂彬,
申请(专利权)人:中国人民解放军国防科学技术大学,
类型:发明
国别省市:湖南;43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。