CN101330341B - 一种栅障同步方法及*** - Google Patents

一种栅障同步方法及*** Download PDF

Info

Publication number
CN101330341B
CN101330341B CN200810117592XA CN200810117592A CN101330341B CN 101330341 B CN101330341 B CN 101330341B CN 200810117592X A CN200810117592X A CN 200810117592XA CN 200810117592 A CN200810117592 A CN 200810117592A CN 101330341 B CN101330341 B CN 101330341B
Authority
CN
China
Prior art keywords
barrier
grid barrier
node
grid
bag
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.)
Expired - Fee Related
Application number
CN200810117592XA
Other languages
English (en)
Other versions
CN101330341A (zh
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.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
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 Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN200810117592XA priority Critical patent/CN101330341B/zh
Publication of CN101330341A publication Critical patent/CN101330341A/zh
Application granted granted Critical
Publication of CN101330341B publication Critical patent/CN101330341B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种栅障同步方法及***。该方法包括:配置中间节点的子端口配置寄存器和父端口配置寄存器,以及根节点的子端口配置寄存器,以确定一棵栅障树中节点间互连关系;叶子节点在到达栅障同步点后,向其父节点发送栅障规约包;中间节点接收到其所有的叶子节点发送的栅障规约包后,向其父节点发送栅障规约包;根节点在接收到其所有子节点发送的栅障规约包后,向其子节点发送栅障分发包;中间节点接收到栅障分发包后,向其子节点发送栅障分发包;叶子节点在接收到栅障分发包后,继续执行子任务代码。本发明能够节省硬件逻辑资源,并能减少栅障同步操作占用的带宽。

Description

一种栅障同步方法及***
技术领域
本发明涉及机群***互连网络领域,一种栅障同步方法及***。
背景技术
机群***是由一组计算机***(节点)通过高性能网络或局域网互连而形成的具有单一***映像的高可用、高性能、高可扩展性的计算机集群***。运行在机群***上的并行程序将其计算任务分割成若干并行的子任务,并分配给每个计算节点执行。根据并行程序算法需求,在某些子任务间存在保序关系,因此需要进行同步处理。
栅障(Barrier)是同步机制的一种,被广泛应用于机群***。Barrier操作是并行程序的同步点,并行程序要等待所有参与其中的计算节点都到达这个同步点后,才能执行后续操作。共同完成一个计算任务的所有计算节点,通过某种拓扑网络,互连形成一棵在逻辑上有根的Barrier树。当Barrier树中的计算节点到达Barrier同步点后就停止执行其他操作,直到它被通知Barrier树中的所有计算节点都已到达同步点,Barrier同步完成,计算节点才能够继续处理其它任务。Barrier同步完成的时间取决于Barrier树中最后一个达到Barrier同步点的计算节点,Barrier同步的延时定义为从最后一个计算节点达到Barrier同步点到Barrier树中所有计算节点都被通知到Barrier同步完成所需的时间。在接收到Barrier完成通知前,Barrier树中所有提前到达Barrier同步点的计算节点都处在空闲等待状态,降低了并行***的性能,因此降低Barrier同步延时对提高并行***的性能有重要作用。
Barrier操作可完全采用软件实现,这样实现Barrier的好处是不需要额外的硬件开销,成本低,但延时最长。Barrier操作也可采用专用的网络在硬件上实现,这样可以获得最低的延时,但固化的Barrier网络灵活性差同时需要额外的网络布线,导致成本最高。在数据网络中嵌入对Barrier的支持是一种的高性价比的折中方案。在基于交换机的互连网络中,将Barrier实现在数据网络中,交换机节点作为Barrier树的根节点和中间节点,计算节点作为Barrier树的叶子节点,Barrier数据包与普通数据包分时共享链路带宽。这种实现方式在提供低延时的同时又有很好的灵活性,也有相对较低的硬件开销。
Barrier操作分为两个阶段,第一阶段是同步到达通知过程,到达Barrier同步点的计算节点向父节点交换机发送到达通知;当中间节点交换机收到所有子节点到达通知后,中间节点交换机向父节点发送到达通知。在Barrier树中子节点向父节点层层往上递交Barrier到达通知的过程也被称为Combine过程,对应发送的通知到达数据包称为Barrier规约包(也称为Combine包)。第二阶段是同步完成通知过程,Barrier树根节点交换机在接收到所有子节点Barrier到达通知后,向所有子节点发送Barrier完成通知;中间节点交换机在接收到父节点的Barrier完成通知后向所有子节点发送Barrier完成通知。在Barrier树中父节点向子节点层层往下分发Barrier完成通知的过程也被称为Distribute过程,对应发送的通知完成数据包称为Barrier分发包(也称为Distribute包)。由于不同计算节点到达Barrier同步点具有异步性,所以对于同一棵Barrier树可能存在两次Barrier操作的混杂,这就需要通过一位序号来区分连续的两次Barrier操作。
发明内容
为了解决上述的技术问题,提供了一种Barrier同步***及方法,其目的在于,在能够保证Barrier机制的鲁棒性同时,节省逻辑资源,并减少Barrier同步操作占用的数据网络带宽。
本发明提供了一种Barrier同步方法,包括:
步骤1,配置中间节点的子端口配置寄存器和父端口配置寄存器,以及根节点的子端口配置寄存器,以确定一棵Barrier树中节点间互连关系;中间节点和根节点均为交换机节点;
步骤2,叶子节点在到达Barrier同步点后,向其父节点发送Barrier规约包;叶子节点为计算节点;
步骤3,中间节点接收到其所有的子节点发送的Barrier规约包后向其父节点发送Barrier规约包;根节点在接收到其所有子节点发送的Barrier规约包后,向其子节点发送Barrier分发包;
步骤4,中间节点接收到Barrier分发包后,向其子节点发送Barrier分发包;叶子节点接收到Barrier分发包后继续执行子任务代码。
步骤2中,叶子节点还启动第一超时计数器,若第一超时计数器超过第一预设时间仍未收到Barrier分发包,则叶子节点向其父节点重发Barrier规约包,重置并启动第一超时计数器;步骤4中,叶子节点收到Barrier分发包后,关闭第一超时计数器,并更新Barrier操作序号。
步骤3中,中间节点还启动第二超时计数器,若第二超时计数器超过第二预设时间仍未收到Barrier分发包,则中间节点向其父节点重发Barrier规约包,重置并启动第二超时计数器;步骤4中,中间节点收到Barrier分发包后,关闭第二超时计数器,并更新Barrier操作序号。
Barrier规约包和Barrier分发包中均包含Barrier操作序号、Barrier包种类和Barrier组号;所述Barrier包种类用于区分Barrier规约包和Barrier分发包,Barrier组号用于标识Barrier规约包和Barrier分发包所属的Barrier组;Barrier操作序号用于区分连续的两次Barrier操作。
中间节点和根节点均包括一Barrier模块;Barrier模块包括Barrier管理子模块、Barrier控制模块、信息重组模块和Barrier调度模块;
Barrier管理子模块,用于接收来自管理模块的配置信息并将配置信息写入Barrier组配置寄存器;
Barrier控制模块,用于中间节点在接收到所有子节点发送的Barrier规约包后,将Barrier规约包发送至其父节点;若所述父节点为根节点,则其在接收到所有子节点发送的Barrier规约包后,将Barrier分发包发送至其子节点;若所述父节点为中间节点,则其在接收到所有子节点发送的Barrier规约包后,将Barrier规约包发送至其父节点;
信息重组模块,用于读取Barrier规约包和Barrier分发包并将其转换为Barrier事件传递给Barrier控制模块;
Barrier调度模块,用于调度多个Barrier组同时对发送端口的请求;
Barrier控制模块,依据接收到的Barrier事件进行处理。
当该Barrier事件为接收到与当前Barrier操作具有不同序号的Barrier规约包时,Barrier控制模块重发包含上一次Barrier操作序号的Barrier分发包;
当该Barrier事件为接收到与当前Barrier操作具有相同序号的Barrier规约包时,Barrier控制模块记录发送Barrier规约包的子节点;当根节点接收到所有子节点发送的Barrier规约包,根节点的Barrier控制模块改变Barrier操作序号,进入到下一次Barrier同步操作;
当该Barrier事件为接收到与当前Barrier操作具有相同序号的Barrier分发包时,中间节点的Barrier控制模块向其子节点下发Barrier分发包,并改变Barrier操作序号,进入到下一次Barrier同步操作;
当该Barrier事件为接收到与当前Barrier操作具有不同序号的Barrier分发包时,中间节点的Barrier控制模块不做任何操作。
本发明提供了一种Barrier同步***,包括叶子节点、中间节点和根节点,中间节点和根节点均为交换机节点,叶子节点为计算节点,中间节点还用于配置其子端口配置寄存器和父端口配置寄存器,根节点还用于配置其子端口配置寄存器,以确定一棵Barrier树中节点间互连关系;
根节点,用于在接收到其所有子节点发送的Barrier规约包后,向其子节点发送Barrier分发包;
叶子节点,用于在到达Barrier同步点后,向其父节点发送Barrier规约包;该叶子节点接收到Barrier分发包后继续执行子任务代码;
中间节点,用于接收到其所有的子节点发送的Barrier规约包后向其父节点发送Barrier规约包;中间节点接收到Barrier分发包后,向其子节点发送Barrier分发包。
叶子节点还包括第一超时计数器,用于在发送Barrier规约包后进行计数,在第一超时计数器超过第一预设时间仍未收到Barrier分发包时,叶子节点向其父节点重发Barrier规约包,重置并启动第一超时计数器;
叶子节点,还用于在收到Barrier分发包后,关闭第一超时计数器,并更新Barrier操作序号。
中间节点还包括第二超时计数器,用于在发送Barrier规约包后进行计数,在第二超时计数器超过第二预设时间仍未收到Barrier分发包时,中间节点向其父节点重发Barrier规约包,重置并启动第二超时计数器;
中间节点,还用于在收到Barrier分发包后关闭第二超时计数器,并更新Barrier操作序号。
Barrier规约包和Barrier分发包中均包含Barrier操作序号、Barrier包种类和Barrier组号;所述Barrier包种类用于区分Barrier规约包和Barrier分发包,Barrier组号用于标识Barrier规约包和Barrier分发包所属的Barrier组;Barrier操作序号用于区分连续的两次Barrier操作。
中间节点和根节点均包括一Barrier模块;Barrier模块包括Barrier管理子模块、Barrier控制模块、信息重组模块和Barrier调度模块;
Barrier管理子模块,用于接收来自管理模块的配置信息并将配置信息写入Barrier组配置寄存器;
Barrier控制模块,用于中间节点在接收到所有子节点发送的Barrier规约包后,将Barrier规约包发送至其父节点;若所述父节点为根节点,则其在接收到所有子节点发送的Barrier规约包后,将Barrier分发包发送至其子节点;若所述父节点为中间节点,则其在接收到所有子节点发送的Barrier规约包后,将Barrier规约包发送至其父节点;
信息重组模块,用于读取Barrier规约包和Barrier分发包并将其转换为Barrier事件传递给Barrier控制模块;
Barrier调度模块,用于调度多个Barrier组同时对发送端口的请求;
Barrier控制模块,依据接收到的Barrier事件进行处理。
当该Barrier事件为接收到与当前Barrier操作具有不同序号的Barrier规约包时,Barrier控制模块重发包含上一次Barrier操作序号的Barrier分发包;
当该Barrier事件为接收到与当前Barrier操作具有相同序号的Barrier规约包时,Barrier控制模块记录发送Barrier规约包的子节点;当根节点接收到所有子节点发送的Barrier规约包,根节点的Barrier控制模块改变Barrier操作序号,进入到下一次Barrier同步操作;
当该Barrier事件为接收到与当前Barrier操作具有相同序号的Barrier分发包时,中间节点的Barrier控制模块向其子节点下发Barrier分发包,并改变Barrier操作序号,进入到下一次Barrier同步操作;
当该Barrier事件为接收到与当前Barrier操作具有不同序号的Barrier分发包时,中间节点的Barrier控制模块不做任何操作。
本发明提出了一种简单、高效、可靠的Barrier同步***和方法,相比于传统的ACK可靠性机制,在能够保证Barrier机制的鲁棒性同时,节省逻辑资源,并减少Barrier同步操作占用的数据网络带宽。本发明只使用两种Barrier包实现可靠的Barrier操作,只在Barrier树的叶子节点和中间节点各需要一个超时计数器,控制状态机只需两个状态,同时不需要接收缓冲区,简化了逻辑,节省了硬件开销。
附图说明
图1是本发明Barrier同步方法及***的实施例中Barrier树形结构示意图;
图2是本发明Barrier同步方法的实施例中计算节点Barrier操作流程图;
图3是本发明Barrier同步方法的实施例中交换机节点Barrier操作流程图;
图4是本发明Barrier同步方法的实施例中Combine包出错恢复流程图;
图5是本发明Barrier同步方法的实施例中Distribute包出错恢复流程图;
图6是本发明Barrier同步***的实施例中Barrier模块与其它模块接口;
图7是图6中Barrier模块结构框图;
图8是本发明Barrier同步***的实施例中Barrier树结构信息配置寄存器示意图;
图9是本发明Barrier同步***的实施例中Barrier数据包格式;
图10是本发明Barrier同步***的实施例中Barrier操作状态机。
具体实施方式
本发明旨在降低Barrier操作时延,减少硬件实现Barrier开销。Barrier同步操作出错会给***正确性带来严重后果,所以在降低Barrier操作延时的同时也必须保证Barrier操作的可靠性。Barrier同步机制要能够保证由于链路不稳定引起的Barrier包丢失或出错异常情况下的Barrier操作的正确性。引入数据包确认和重传协议可达到此目的。设计可靠的Barrier需要考虑以下几个方面:一、可靠性协议要易于硬件实现,用尽可能少的逻辑资源实现对可靠性的支持;二、可靠性协议要尽可能少地影响Barrier执行效率;三、可靠性协议要尽可能避免占用过多的链路带宽。在并行***中可能存在多棵Barrier树,用于同时执行可以并行的任务。每个节点可能参与到一棵或多棵Barrier树中,为了保证灵活性,Barrier树的组织结构应该能够被动态配置。
在基于交换机的网络中,将交换机作为Barrier树形算法的根节点和中间节点,将计算节点作为Barrier树的叶子节点,Barrier同步的过程如图1所示。在图1中,计算节点P0、P1、P2、P3、P4、P5和交换机节点S0、S1、S2构成了一棵Barrier树,S2为树根。在本方法中存在两类Barrier数据包:Barrier规约包(Combine包)和Barrier分发包(Distribute包),它们通过Barrier包中的Type域来区分。在Combine阶段,计算节点P0、P1、P2、P3、P4、P5到达Barrier同步点后向各自的父节点发送Combine包,中间节点S0在接收到子节点P0、P1、P2的Combine包后向根节点S2发送Combine包,中间节点S 1在接收到子节点P3、P4的Combine包后向根节点S2发送Combine包。在根节点S2接收到子节点S0、S1、P5的Combine包后,说明所有处在这棵Barrier树中的计算都已近到达了Barrier同步点,Barrier同步进入到Distribute阶段。在Distribute阶段,根节点向子节点S0、S1、P5发送Distribute包;S0在接收到父节点S2的Distribute包后,向子节点P0、P1、P2发送Distribute包;S1在接收到父节点S2的Distribute包后,向子节点P3、P4发送Distribute包。当所有计算节点都接收到Distribute包,这次Barrier同步完成。对于由于链路不稳定导致Barrier包出错或丢失,本发明提出了一种高效的可靠性解决方案来保证Barrier操作能够正确执行。
本发明中,首先需要对Barrier树进行配置,通过配置交换机的子端口配置寄存器和父端口配置寄存器,确定一棵Barrier树中节点间互连关系。Barrier配置寄存器的组织如图8所示。在一个交换芯片中可能存在多个Barrier组,与交换机端口相连的每个节点可能处于其中一个或多个Barrier组中。每个Barrier组都有单独的一组配置寄存器,交换机的每个端口在所有Barrier组配置寄存器中都有相应的映射,如果端口i在Barrier组j中的映射位为1,表示端口i属于该Barrier组j,否则表示端口i没有参加到Barrier组j中。Barrier组配置寄存器还记录Root标识和父节点端口号。如果Root标识位为1,表示交换机作为Barrier树的根节点,这时父节点端口号寄存器中的内容没有意义。如果Root标识位为0,表示交换机作为Barrier树的中间节点,父节点端口号寄存器中记录了父节点所连端口的端口号。图8中Barrier组配置寄存器中的内容表示:交换机作为Barrier组0的中间节点,父节点端口号ParentPort为8,子节点端口号Port 0、Port 2、Port n-2为0、2、n-2;交换机作为Barrier组1的根节点,子节点端口号Port 1、Port2、Port n-2、Port n-1为1、2、n-2、n-1。n为端口总数。
计算节点作为Barrier树中的叶子节点,只需要简单地遵循如下规则即可:计算节点在到达Barrier同步点后,向交换机节点发送Combine数据包,同时重置并启动超时计数器,如果计数器计数超过设定的阈值后仍未收到Distribute数据包,就重发Combine数据包。计算节点在接收到来自父节点的Distribute包后关闭超时计数器,继续执行其它子任务代码。该实施例以计算节点i为例,说明计算节点的barrier执行过程如图2所示,包括:
步骤201,计算节点i执行子任务代码;
步骤202,计算节点i到达Barrier同步点;
步骤203,计算节点i向父节点发送Combine包,重置并启动超时计数器;
步骤204,判断是否接收到来自父节点的Distribute包,如果是,执行步骤206,否则执行步骤205;
步骤205,判断计数器是否超时,如果是,执行步骤203,否则执行步骤204;
步骤206,完成当前Barrier操作,更新Barrier序号,关闭超时计数器,并重新执行步骤201。
交换机节点作为Barrier树中的中间节点和根节点。在交换芯片中,Barrier同步的功能主要由Barrier模块完成,Barrier模块与其它模块的接口如图6所示。管理模块向Barrier模块写入Barrier树配置信息。在一个交换机节点中,参与到同一棵Barrier树中的所有端口共同构成一个Barrier组。不同的Barrier组通过Barrier组号来标识。对于每个交换机,任意一个通信端口可以参与到若干个Barrier组中。
交换机的接收端口模块在接收到Barrier数据包后将Barrier信息写入Barrier接收缓冲区,Barrier模块从Barrier接收缓冲区中读取Barrier信息。特别需要说明的是本方法中接收缓冲区并不是必须的,接收端口模块可以直接把Barrier信息发送到Barrier模块,这并不影响Barrier操作的正确性,同时能够达到进一步简化设计资源的目的。
Barrier包格式如图9所示,接收端口模块写入Barrier接收缓冲区的Barrier信息包括操作序号(Seq)、Barrier包种类(Type)和Barrier组号(BarrierGroup ID)。操作序号(Seq)用于区分连续的两次Barrier操作,Barrier包种类(Type)用于区分Combine包和Distribute包,Barrier组号(Barrier GroupID)用于标识Barrier包所属的Barrier组。Barrier模块从Barrier接收缓冲区读取Barrier信息,根据当前Barrier同步进行的状态向相应的发送端口模块发出Combine包或Distribute包发送请求。
Barrier模块内部包括Barrier管理子模块、信息重组模块、Barrier控制模块和Barrier调度模块,如图7所示。
Barrier管理子模块用于接收来自管理模块的Barrier配置信息并将配置信息写入Barrier组配置寄存器。
信息重组模块从Barrier接收缓冲区中读取Barrier信息并将其转换为Barrier事件传递给Barrier控制模块。共有4类Barrier事件:接收到一个与当前Barrier操作具有相同序号的Combine包,接收到一个与当前Barrier操作具有不同序号的Combine包,接收到一个与当前Barrier操作具有相同序号的Distribute包,接收到一个与当前Barrier操作具有不同序号的Distribute包。每一个接收端口对应一个信息重组模块,由于每个端口可能参与到任意一个Barrier组中,所以信息重组模块和所有的Barrier控制模块都有信号连接。
Barrier控制模块是整个Barrier操作控制的核心,每个Barrier组对应一个Barrier控制模块。Barrier同步的操作状态由Barrier状态寄存器记录,初始化时,Barrier状态寄存器中装载着Barrier组配置寄存器中的子端口信息。如果某个端口属于Barrier组,则该端口在状态寄存器中对应的位被初始化为1,否则初始化为0。Barrier控制模块的状态机如图10所示,Barrier控制模块在接收到Combine事件通知后,首先检查Combine事件序号与当前Barrier操作序号是否相同。如果不同,那么说明该端口所连接的节点没有收到上一次完成的Barrier操作分发的Distribute包,Barrier控制模块向该节点重发与包含上一次Barrier操作序号的Distribute包。如果接收到的Combine包序号与当前Barrier操作序号相同,那么检查状态寄存器中该端口对应的位是否为1,如果为1就把该位置为0,如果该位为0,那么不作任何操作。对于根节点交换机,当Barrier操作状态寄存器所有位全为0时,表明这次Barrier同步完成了,Barrier控制模块通知Barrier组中所有子端口启动Distribute包发送,改变Barrier操作序号,进入到下一次Barrier同步操作。对于中间节点交换机,当Barrier操作状态寄存器所有位全为0时,表明本级节点Barrier同步完成,交换机向父端口发送Combine包,启动Distribute等待超时计数器,交换机等待父端口发送的Distribute包。在等待父端口Distribute包的过程中,如果计数器超时,那么就向父端口重发Combine包,然后复位超时计数器重新计数。当交换机接收到父端口发送的Distribute包后,检查Distribute包序号与当前Barrier操作序号是否相同,如果序号不同则不进行任何操作,如果序号相同,那么说明所有Barrier树中的计算节点都已经到达了Barrier同步点,交换机向所有子节点发送Distribute包,关闭超时计数器,改变Barrier操作序号,进入到下一次Barrier同步操作。
由于可能有多个Barrier组同时向一个发送端口请求发送Barrier包,所以每个发送端口都需要有一个Barrier包发送调度模块来调度可能同时出现的多个请求。由于Barrier包发送是稀疏事件,所以调度模块只需要采用节省硬件资源的固定优先级调度策略即可。
交换机节点Barrier执行过程如图3所示,包括:
步骤301,等待子节点Combine数据包;
步骤302,接收到子节点i的Combine包;
步骤303,判断接收到的Combine包序号是否与当前Barrier操作序号相同,如果是,执行步骤305,否则执行步骤304;
步骤304,向子节点i重发包含上次Barrier操作序号的Distribute包,继续等待子节点Combine数据包;
步骤305,判断是否接收到所有子节点Combine包,如果是,执行步骤306,否则继续判断是否接收到所有子节点Combine包;
步骤306,判断本级节点是否为根节点,如果是,执行步骤307,否则执行步骤308;
步骤307,向所有子节点发送Distribute包,改变Barrier操作序号,进入到下一次Barrier同步;
步骤308,向父节点发送Combine包,重置并启动超时计数器;
步骤309,判断是否接收到父节点Distribute包,如果是,执行步骤311,否则执行步骤310;
步骤310,判断计数器是否超时,如果是,执行步骤308,否则执行步骤309;
步骤311,关闭超时计数器,向所有子节点发送Distribute包,改变Barrier操作序号,进入到下一次Barrier操作。
Barrier操作可能出现的可靠性问题有以下两种:一、Combine包丢失或出错;二、Distribute包丢失或出错。第一种错误的恢复流程如图4所示,如果子节点i向父节点发送的Combine包丢失或出错,那么父节点由于没有收到子节点i的Combine信息而无法完成Barrier同步,从而父节点不会向子节点i发送Distribute包。子节点i由于没有收到Distribute包,最终计数器超时,子节点i向父节点重发Combine包。在父节点接收到子节点重发的Combine后,进入到正常的Barrier同步操作。具体包括:
步骤401,判断子节点i发送的Combine包丢失或出错,如果是,执行步骤403,否则执行步骤402;
步骤402,进入到正常的Barrier同步操作;
步骤403,父节点由于没有接收到子节点i的Combine信息而无法完成Barrier同步,父节点不会向子节点发送Distribute包;
步骤404,子节点i没有接收到Distribute包,计数器超时,子节点i向父节点重发Combine包,并执行步骤401。
第二种错误的恢复流程如图5所示,当Barrier同步完成以后,父节点向所有子节点分发Distribute包,改变Barrier操作序号,进入到下一次Barrier操作。如果发向子节点i的Distribute包丢失或出错,那么子节点i中的计数器最终会因为没有收到Distribute包而超时,子节点i向父节点重发包含上次Barrier操作序号的Combine包。父节点在接收到子节点i发送的与当前Barrier操作序号不同的Combine包后,向子节点i重发包含上一次Barrier操作序号的Distribute包。子节点i在接收到重发的Distribute包后进入到正常的Barrier同步操作。具体包括:
步骤501,Barrier同步完成,父节点向所有子节点发送Distribute包,改变Barrier操作序号,进入到下一次Barrier操作;
步骤502,判断发向子节点i的Distribute包丢失或出错,如果是,执行步骤504,否则执行步骤503;
步骤503,子节点i进入到正常的下一次Barrier同步操作;
步骤504,子节点i没有接收Distribute包,最终计数器超时,子节点i向父节点重发Combine包;
步骤505,父节点接收到来自子节点i的Combine包的序号与当前Barrier操作序号不同,父节点向子节点i重发包含上次Barrier操作序号的Distribute包,并执行步骤502。
为了保证Barrier操作的可靠性,在Barrier树形算法的叶子节点和中间节点都引入了超时重传机制,超时计数器计数超过设定的阈值后,子节点就向父节点重传Combine包。为了保证Barrier执行效率,在Barrier包出错后要尽快重传Combine包,需要计数器超时阈值尽可能低;为了防止在等待其它计算节点到达Barrier同步点的过程中,因过多地重发Combine包而造成链路带宽浪费,需要计数器超时阈值尽可能高。为了解决这对矛盾,可以动态调整超时计数器的阈值。首先根据当前链路的状态设置一个初始超时阈值,链路出错率越低,那么初始阈值越高;反之,初始阈值越低。每次计数器超时后,都增加超时计数器超时的阈值。本发明提出的可靠Barrier同步实现方案在理想情况下不会给链路带来额外的数据量。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。

Claims (11)

1.一种栅障同步方法,其特征在于,包括:
步骤1,配置中间节点的子端口配置寄存器和父端口配置寄存器,以及根节点的子端口配置寄存器,以确定一棵栅障树中节点间互连关系;中间节点和根节点均为交换机节点;
步骤2,叶子节点在到达栅障同步点后,向其父节点发送栅障规约包;叶子节点为计算节点;
步骤3,中间节点接收到其所有的子节点发送的栅障规约包后,向其父节点发送栅障规约包;根节点在接收到其所有子节点发送的栅障规约包后,向其子节点发送栅障分发包;
步骤4,中间节点接收到栅障分发包后,向其子节点发送栅障分发包;叶子节点在接收到栅障分发包后,继续执行子任务代码。
2.如权利要求1所述的栅障同步方法,其特征在于,步骤2中,叶子节点还启动第一超时计数器,若第一超时计数器超过第一预设时间仍未收到栅障分发包,则叶子节点向其父节点重发栅障规约包,重置并启动第一超时计数器;步骤4中,叶子节点收到栅障分发包后,关闭第一超时计数器,并更新栅障操作序号。
3.如权利要求1所述的栅障同步方法,其特征在于,步骤3中,中间节点还启动第二超时计数器,若第二超时计数器超过第二预设时间仍未收到栅障分发包,则中间节点向其父节点重发栅障规约包,重置并启动第二超时计数器;步骤4中,中间节点收到栅障分发包后,关闭第二超时计数器,并更新栅障操作序号。
4.如权利要求1所述的栅障同步方法,其特征在于,栅障规约包和栅障分发包中均包含栅障操作序号、栅障包种类和栅障组号;所述栅障包种类用于区分栅障规约包和栅障分发包,栅障组号用于标识栅障规约包和栅障分发包所属的栅障组;栅障操作序号用于区分连续的两次栅障操作。
5.如权利要求4所述的栅障同步方法,其特征在于,中间节点和根节点均包括一栅障模块;栅障模块包括栅障管理子模块、栅障控制模块、信息重组模块和栅障调度模块; 
栅障管理子模块接收来自管理模块的配置信息并将配置信息写入栅障组配置寄存器;
在中间节点在接收到所有子节点发送的栅障规约包后,栅障控制模块将栅障规约包发送至其父节点;若所述父节点为根节点,则其在接收到所有子节点发送的栅障规约包后,将栅障分发包发送至其子节点;若所述父节点为中间节点,则其在接收到所有子节点发送的栅障规约包后,将栅障规约包发送至其父节点;
信息重组模块读取栅障规约包和栅障分发包并将其转换为栅障事件传递给栅障控制模块;
栅障调度模块调度多个栅障组同时对发送端口的请求;
栅障控制模块依据接收到的栅障事件进行处理;
当该栅障事件为接收到与当前栅障操作具有不同序号的栅障规约包时,栅障控制模块重发包含上一次栅障操作序号的栅障分发包;
当该栅障事件为接收到与当前栅障操作具有相同序号的栅障规约包时,栅障控制模块记录发送栅障规约包的子节点;当根节点接收到所有子节点发送的栅障规约包,根节点的栅障控制模块改变栅障操作序号,进入到下一次栅障同步操作;
当该栅障事件为接收到与当前栅障操作具有相同序号的栅障分发包时,中间节点的栅障控制模块向其子节点下发栅障分发包,并改变栅障操作序号,进入到下一次栅障同步操作;
当该栅障事件为接收到与当前栅障操作具有不同序号的栅障分发包时,中间节点的栅障控制模块不做任何操作。
6.一种栅障同步***,包括叶子节点、中间节点和根节点,中间节点和根节点均为交换机节点,叶子节点为计算节点,其特征在于,中间节点还用于配置其子端口配置寄存器和父端口配置寄存器,根节点还用于配置其子端口配置寄存器,以确定一棵栅障树中节点间互连关系;
根节点,用于在接收到其所有子节点发送的栅障规约包后,向其子节点发送栅障分发包;
叶子节点,用于在到达栅障同步点后,向其父节点发送栅障规约包;该叶子节点接收到栅障分发包后继续执行子任务代码; 
中间节点,用于中间节点接收到其所有的子节点发送的栅障规约包后向该中间节点的父节点发送栅障规约包;中间节点接收到栅障分发包后,向其子节点发送栅障分发包。
7.如权利要求6所述的栅障同步***,其特征在于,叶子节点还包括第一超时计数器,用于在发送栅障规约包后进行计数,在第一超时计数器超过第一预设时间仍未收到栅障分发包时,叶子节点向其父节点重发栅障规约包,重置并启动第一超时计数器;
叶子节点,还用于在收到栅障分发包后,关闭第一超时计数器,并更新栅障操作序号。
8.如权利要求6所述的栅障同步***,其特征在于,中间节点还包括第二超时计数器,用于在发送栅障规约包后进行计数,在第二超时计数器超过第二预设时间仍未收到栅障分发包时,中间节点向其父节点重发栅障规约包,重置并启动第二超时计数器;
中间节点,还用于在收到栅障分发包后关闭第二超时计数器,并更新栅障操作序号。
9.如权利要求6所述的栅障同步***,其特征在于,栅障规约包和栅障分发包中均包含栅障操作序号、栅障包种类和栅障组号;所述栅障包种类用于区分栅障规约包和栅障分发包,栅障组号用于标识栅障规约包和栅障分发包所属的栅障组;栅障操作序号用于区分连续的两次栅障操作。
10.如权利要求9所述的栅障同步***,其特征在于,中间节点和根节点均包括一栅障模块;栅障模块包括栅障管理子模块、栅障控制模块、信息重组模块和栅障调度模块;
栅障管理子模块,用于接收来自管理模块的配置信息并将配置信息写入栅障组配置寄存器;
栅障控制模块,用于中间节点在接收到所有子节点发送的栅障规约包后,将栅障规约包发送至其父节点;若所述父节点为根节点,则其在接收到所有子节点发送的栅障规约包后,将栅障分发包发送至其子节点;若所述父节点为中间节点,则其在接收到所有子节点发送的栅障规约包后,将栅障规约包发送至其父节点;
信息重组模块,用于读取栅障规约包和栅障分发包并将其转换为栅障事件 传递给栅障控制模块;
栅障调度模块,用于调度多个栅障组同时对发送端口的请求;
栅障控制模块,依据接收到的栅障事件进行处理。
11.如权利要求10所述的栅障同步***,其特征在于,
当该栅障事件为接收到与当前栅障操作具有不同序号的栅障规约包时,栅障控制模块重发包含上一次栅障操作序号的栅障分发包;
当该栅障事件为接收到与当前栅障操作具有相同序号的栅障规约包时,栅障控制模块记录发送栅障规约包的子节点;当根节点接收到所有子节点发送的栅障规约包,根节点的栅障控制模块改变栅障操作序号,进入到下一次栅障同步操作;
当该栅障事件为接收到与当前栅障操作具有相同序号的栅障分发包时,中间节点的栅障控制模块向其子节点下发栅障分发包,并改变栅障操作序号,进入到下一次栅障同步操作;
当该栅障事件为接收到与当前栅障操作具有不同序号的栅障分发包时,中间节点的栅障控制模块不做任何操作。 
CN200810117592XA 2008-08-01 2008-08-01 一种栅障同步方法及*** Expired - Fee Related CN101330341B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200810117592XA CN101330341B (zh) 2008-08-01 2008-08-01 一种栅障同步方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200810117592XA CN101330341B (zh) 2008-08-01 2008-08-01 一种栅障同步方法及***

Publications (2)

Publication Number Publication Date
CN101330341A CN101330341A (zh) 2008-12-24
CN101330341B true CN101330341B (zh) 2012-02-15

Family

ID=40205963

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200810117592XA Expired - Fee Related CN101330341B (zh) 2008-08-01 2008-08-01 一种栅障同步方法及***

Country Status (1)

Country Link
CN (1) CN101330341B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108366019A (zh) * 2018-02-11 2018-08-03 乐鑫信息科技(上海)有限公司 一种mesh网络内广播传输方法

Also Published As

Publication number Publication date
CN101330341A (zh) 2008-12-24

Similar Documents

Publication Publication Date Title
Boden et al. Myrinet: A gigabit-per-second local area network
US4907232A (en) Fault-tolerant parallel processing system
JP3640187B2 (ja) マルチプロセッサシステムの障害処理方法、マルチプロセッサシステム及びノード
CN101383712B (zh) 一种片上网络的路由节点微结构
CN1050723C (zh) 分组交换***和其中确认接收的方法
Von Bochmann Concepts for distributed systems design
CN100583819C (zh) 用于分组交换控制的集成电路和方法
JP2006502642A (ja) トランザクションを確立するための集積回路および方法
CN105024942B (zh) 一种动态流量监控方法
CN102185833B (zh) 一种基于fpga的fc i/o并行处理方法
EP2634981B1 (en) Cell based data transfer with dynamic multi-path routing in a full mesh network without central control
CN106452563A (zh) 基于通信卫星的无人机数据链通用接入***
CN102932444A (zh) 金融实时交易***中的负载均衡模块
US9319310B2 (en) Distributed switchless interconnect
CN102412990B (zh) 具有集中管理和实时传输功能遥感卫星原始数据记录***
WO2011058640A1 (ja) 並列計算用の通信方法、情報処理装置およびプログラム
CN104243536A (zh) 一种高速列车控制网络半实物仿真***
Sun et al. Republic: Data multicast meets hybrid rack-level interconnections in data center
Green An introduction to network architectures and protocols
CN101330341B (zh) 一种栅障同步方法及***
CN108234308B (zh) 一种分布式设备内部通信***及方法
CN101127677A (zh) 一种基于胖树拓扑的屏障操作网络***、装置及方法
CN117278486A (zh) 一种可靠udp组播的fpga硬件加速***及方法
CN113179228B (zh) 一种提高交换机堆叠可靠性的方法、装置、设备及介质
RU175049U9 (ru) УСТРОЙСТВО КОММУНИКАЦИОННЫХ ИНТЕРФЕЙСОВ SpaceWire

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120215