一种栅障同步方法及系统的制作方法

文档序号:7696004阅读:770来源:国知局
专利名称:一种栅障同步方法及系统的制作方法
技术领域
本发明涉及机群系统互连网络领域, 一种栅障同步方法及系统。
技术背景机群系统是由一组计算机系统(节点)通过高性能网络或局域网互连而 形成的具有单一系统映像的高可用、高性能、高可扩展性的计算机集群系统。 运行在机群系统上的并行程序将其计算任务分割成若干并行的子任务,并分 配给每个计算节点执行。根据并行程序算法需求,在某些子任务间存在保序 关系,因此需要进行同步处理。栅障(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包 禾中类禾B 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规约包的子节点;当根节点接 收到所有子节点发送的Bairier规约包,根节点的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、 Pl、 P2、 P3、 P4、 P5和交换机节点S0、 Sl、 S2 构成了 一棵Barrier树,S2为树根。在本方法中存在两类Barrier数据包Barrier 规约包(Combine包)和Barrier分发包(Distribute包),它们通过Barrier 包中的Type域来区分。在Combine阶段,计算节点P0、 Pl、 P2、 P3、 P4、 P5到达Barrier同步点后向各自的父节点发送Combine包,中间节点SO在接 收到子节点P0、 Pl、 P2的Combine包后向根节点S2发送Combine包,中 间节点SI在接收到子节点P3、P4的Combine包后向根节点S2发送Combine 包。在根节点S2接收到子节点S0、 Sl、 P5的Combine包后,说明所有处在 这棵Barrier树中的计算都已近到达了 Barrier同步点,Barrier同步进入到 Distribute阶段。在Distribute阶段,根节点向子节点S0、 Sl 、 P5发送Distribute 包;SO在接收到父节点S2的Distribute包后,向子节点P0、 Pl、 P2发送 Distribute包;Sl在接收到父节点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标识位为l,表 示交换机作为Barrier树的根节点,这时父节点端口号寄存器中的内容没有意 义。如果Root标识位为O,表示交换机作为Barrier树的中间节点,父节点端口号寄存器中记录了父节点所连端口的端口号。图8中Barrier组配置寄存 器中的内容表示交换机作为Barrier组0的中间节点,父节点端口号Parent Port为8,子节点端口号PortO、 Port 2、 Portn-2为0、 2、 n-2;交换机作为 Barrier组1的根节点,子节点端口号Portl、 Port2、 Portn-2、 Portn-1为1、 2、 n-2、 n-l。 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组号(Barrier Group ID)。操作序号(Seq)用于区分连续的两次Barrier操作,Barrier包种 类(Type)用于区分Combine包和Distribute包,Barrier组号(Barrier Group ID )用于标识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,否则初始化为O。 Barrier控制模块的状态机如图10所示,Barrier控制模 块在接收到Combine事件通知后,首先检査Combine事件序号与当前Barrier 操作序号是否相同。如果不同,那么说明该端口所连接的节点没有收到上一 次完成的Barrier操作分发的Distribute包,Barrier控制模块向该节点重发与 包含上一次Barrier操作序号的Distribute包。如果接收到的Combine包序号 与当前Barrier操作序号相同,那么检査状态寄存器中该端口对应的位是否为1,如果为1就把该位置为0,如果该位为O,那么不作任何操作。对于根节点交换机,当Barrier操作状态寄存器所有位全为O时,表明这次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操作序号,进 入至lj下-一次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同步实现方 案在理想情况下不会给链路带来额外的数据量。本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条 件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限 于以上的说明,而是由权利要求书的范围来确定的。1权利要求
1.一种栅障同步方法,其特征在于,包括步骤1,配置中间节点的子端口配置寄存器和父端口配置寄存器,以及根节点的子端口配置寄存器,以确定一棵栅障树中节点间互连关系;中间节点和根节点均为交换机节点;步骤2,叶子节点在到达栅障同步点后,向其父节点发送栅障规约包;叶子节点为计算节点;步骤3,中间节点接收到其所有的子节点发送的栅障规约包后,向其父节点发送栅障规约包;根节点在接收到其所有子节点发送的栅障规约包后,向其子节点发送栅障分发包;步骤4,中间节点接收到栅障分发包后,向其子节点发送栅障分发包;叶子节点在接收到栅障分发包后,继续执行子任务代码。
2. 如权利要求1所述的栅障同步方法,其特征在于,步骤2中,叶子节 点还启动第一超时计数器,若第一超时计数器超过第一预设时间仍未收到栅 障分发包,则叶子节点向其父节点重发栅障规约包,重置并启动第一超时计 数器;步骤4中,叶子节点收到栅障分发包后,关闭第一超时计数器,并更 新栅障操作序号。
3. 如权利要求1所述的栅障同步方法,其特征在于,步骤3中,中间节 点还启动第二超时计数器,若第二超时计数器超过第二预设时间仍未收到栅 障分发包,则中间节点向其父节点重发栅障规约包,重置并启动第二超时计 数器;步骤4中,中间节点收到栅障分发包后,关闭第二超时计数器,并更 新栅障操作序号。
4. 如权利要求1所述的栅障同步方法,其特征在于,栅障规约包和栅障 分发包中均包含栅障操作序号、栅障包种类和栅障组号;所述栅障包种类用 于区分栅障规约包和栅障分发包,栅障组号用于标识栅障规约包和栅障分发 包所属的栅障组;栅障操作序号用于区分连续的两次栅障操作。
5. 如权利要求4所述的栅障同步方法,其特征在于,中间节点和根节点 均包括一栅障模块;栅障模块包括栅障管理子模块、栅障控制模块、信息重 组模块和栅障调度模块;栅障管理子模块,用于接收来自管理模块的配置信息并将配置信息写入栅障组配置寄存器;栅障控制模块,用于中间节点在接收到所有子节点发送的栅障规约包后,将栅障规约包发送至其父节点;若所述父节点为根节点,则其在接收到所有 子节点发送的栅障规约包后,将栅障分发包发送至其子节点;若所述父节点 为中间节点,则其在接收到所有子节点发送的栅障规约包后,将栅障规约包 发送至其父节点;信息重组模块,用于读取栅障规约包和栅障分发包并将其转换为栅障事 件传递给栅障控制模块;栅障调度模块,用于调度多个栅障组同时对发送端口的请求; 栅障控制模块,依据接收到的栅障事件进行处理。
6. 如权利要求5所述的栅障同步方法,其特征在于,当该栅障事件为接收到与当前栅障操作具有不同序号的栅障规约包时, 栅障控制模块重发包含上一次栅障操作序号的栅障分发包;当该栅障事件为接收到与当前栅障操作具有相同序号的栅障规约包时, 栅障控制模块记录发送栅障规约包的子节点;当根节点接收到所有子节点发 送的栅障规约包,根节点的栅障控制模块改变栅障操作序号,进入到下一次 栅障同步操作;当该栅障事件为接收到与当前栅障操作具有相同序号的栅障分发包时, 中间节点的栅障控制模块向其子节点下发栅障分发包,并改变栅障操作序号, 进入到下一次栅障同步操作;当该栅障事件为接收到与当前栅障操作具有不同序号的栅障分发包时, 中间节点的栅障控制模块不做任何操作。
7. —种栅障同步系统,包括叶子节点、中间节点和根节点,中间节点和 根节点均为交换机节点,叶子节点为计算节点,其特征在于,中间节点还用 于配置其子端口配置寄存器和父端口配置寄存器,根节点还用于配置其子端 口配置寄存器,以确定一棵栅障树中节点间互连关系;根节点,用于在接收到其所有子节点发送的栅障规约包后,向其子节点 发送栅障分发包;叶子节点,用于在到达栅障同步点后,向其父节点发送栅障规约包;该叶子节点接收到栅障分发包后继续执行子任务代码;中间节点,用于中间节点接收到其所有的子节点发送的栅障规约包后向该中间节点的父节点发送栅障规约包;中间节点接收到栅障分发包后,向其 子节点发送栅障分发包。
8. 如权利要求7所述的栅障同步系统,其特征在于,叶子节点还包括第 一超时计数器,用于在发送栅障规约包后进行计数,在第一超时计数器超过 第一预设时间仍未收到栅障分发包时,叶子节点向其父节点重发栅障规约包, 重置并启动第一超时计数器;叶子节点,还用于在收到栅障分发包后,关闭第一超时计数器,并更新 栅障操作序号。
9. 如权利要求7所述的栅障同步系统,其特征在于,中间节点还包括第 二超时计数器,用于在发送栅障规约包后进行计数,在第二超时计数器超过 第二预设时间仍未收到栅障分发包时,中间节点向其父节点重发栅障规约包, 重置并启动第二超时计数器;中间节点,还用于在收到栅障分发包后关闭第二超时计数器,并更新栅 障操作序号。
10. 如权利要求7所述的栅障同步系统,其特征在于,栅障规约包和栅 障分发包中均包含栅障操作序号、栅障包种类和栅障组号;所述栅障包种类 用于区分栅障规约包和栅障分发包,栅障组号用于标识栅障规约包和栅障分 发包所属的栅障组;栅障操作序号用于区分连续的两次栅障操作。
11. 如权利要求10所述的栅障同步系统,其特征在于,中间节点和根节 点均包括一栅障模块;栅障模块包括栅障管理子模块、栅障控制模块、信息 重组模块和栅障调度模块;栅障管理子模块,用于接收来自管理模块的配置信息并将配置信息写入 栅障组配置寄存器;栅障控制模块,用于中间节点在接收到所有子节点发送的栅障规约包后, 将栅障规约包发送至其父节点;若所述父节点为根节点,则其在接收到所有 子节点发送的栅障规约包后,将栅障分发包发送至其子节点;若所述父节点 为中间节点,则其在接收到所有子节点发送的栅障规约包后,将栅障规约包 发送至其父节点;信息重组模块,用于读取栅障规约包和栅障分发包并将其转换为栅障事件传递给栅障控制模块;栅障调度模块,用于调度多个栅障组同时对发送端口的请求;栅障控制模块,依据接收到的栅障事件进行处理。
12.如权利要求ll所述的栅障同步系统,其特征在于,当该栅障事件为接收到与当前栅障操作具有不同序号的栅障规约包时,栅障控制模块重发包含上一次栅障操作序号的栅障分发包;当该栅障事件为接收到与当前栅障操作具有相同序号的栅障规约包时,栅障控制模块记录发送栅障规约包的子节点;当根节点接收到所有子节点发送的栅障规约包,根节点的栅障控制模块改变栅障操作序号,进入到下一次栅障同歩操作;当该栅障事件为接收到与当前栅障操作具有相同序号的栅障分发包时, 中间节点的栅障控制模块向其子节点下发栅障分发包,并改变栅障操作序号, 进入到下一次栅障同步操作;当该栅障事件为接收到与当前栅障操作具有不同序号的栅障分发包时, 中间节点的栅障控制模块不做任何操作。
全文摘要
本发明涉及一种栅障同步方法及系统。该方法包括配置中间节点的子端口配置寄存器和父端口配置寄存器,以及根节点的子端口配置寄存器,以确定一棵栅障树中节点间互连关系;叶子节点在到达栅障同步点后,向其父节点发送栅障规约包;中间节点接收到其所有的叶子节点发送的栅障规约包后,向其父节点发送栅障规约包;根节点在接收到其所有子节点发送的栅障规约包后,向其子节点发送栅障分发包;中间节点接收到栅障分发包后,向其子节点发送栅障分发包;叶子节点在接收到栅障分发包后,继续执行子任务代码。本发明能够节省硬件逻辑资源,并能减少栅障同步操作占用的带宽。
文档编号H04J3/06GK101330341SQ20081011759
公开日2008年12月24日 申请日期2008年8月1日 优先权日2008年8月1日
发明者安学军, 王达伟, 涛 胡 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1