专利名称:屏障同步设备、屏障同步系统以及屏障同步方法
技术领域:
这里讨论的本发明实施例涉及一种屏障同步设备、屏障同步系统以及屏障同步方 法。
背景技术:
屏障同步被公知为对彼此并行执行的多个进程进行同步的方法。在屏障同步中, 设置屏障点。屏障点是进行同步的点。执行屏障同步的进程在执行到达屏障点时临时中止 执行。当进行屏障同步且并行执行的所有进程到达屏障点时,执行屏障同步的进程重启被 中止的执行。以这种方式,可以进行并行执行的多个进程之间的并行执行同步。
另一方面,归约运算被公知为对由多个进程保存的数据的算术运算。已知有几种 归约运算,例如,计算数据之和的算术运算、以及计算最大值和最小值的算术运算。归约运 算分别包括仅仅特定进程具有算术运算结果的算术运算、以及所有进程具有算术运算结果 的算术运算。然而,在任何情况下,由于在进程之间执行数据通信,因此可以通过使用与屏 障同步相同的算法来执行归约运算。 已知这样的数据通信,其从处理器向所有其它处理器广播数据,建立最终接收广 播数据的处理器彼此通信的蝶式屏障,并且从参与蝶式屏障的处理器向没有参与蝶式屏障 的所有处理器报告数据通信终止。[专利文献1]日本专利申请公开No. 03-098152
[专利文献2]日本专利申请No. 07-152712 在屏障同步的执行期间,依赖于算法,进程必须改变在每级表示进程到达屏障点 的信号的目的地。另外,在归约运算中,进程必须改变在每级算术运算的中间结果的目的 地。本发明的发明人研究了高速改变目的地的方法,以提高屏障同步速度和归约运算速度。
根据研究,当通过软件实现屏障同步和归约运算两者时,由CPU部分执行在这些 级上的目的地改变操作。为此,容易发生开销。因此,结果,不能提高屏障同步和归约运算 的速度。 另一方面,当通过硬件来实现目的地改变操作时,可以执行目的地改变操作而无 需CPU。为此,预期会提高屏障同步和归约运算的速度。然而,依赖于针对高速运算所要采 用的硬件的构造,当多个节点通过网络彼此连接时,节点间的网络构造可能是受限的。
发明内容
根据本发明的一方面,一种屏障同步设备包括接收装置,其在接收到第一同步时 将第一同步信号传送到同步装置,其中根据包括屏障同步算法和执行条件的设置条件而在第一同步信号中设置了传送目的地;同步装置,其对根据设置条件预先设置的n个第一同 步信号进行同步,并且在建立同步之后,指示根据设置条件预先设置了传送目的地的m个 第二同步信号的传送;以及传送装置,其在接收到来自同步装置的传送指示时,将第二同步 信号传送到预先设置的m个传送目的地,其中n和m是正整数。 本发明的上述实施例旨在作为示例,并且本发明的所有实施例不限于包括上述特 征。
图1是示出节点连接例子的图; 图2是示出根据实施例的节点构造的图; 图3是示出根据实施例的屏障同步的图; 图4是示出通过由四个进程实现的蝶式执行的根据实施例的屏障同步的图; 图5是示出根据实施例的屏障同步设备的构造的图; 图6是示出根据实施例的同步设备的构造的图; 图7是根据实施例的屏障同步执行的处理流程图; 图8是示出蝶式执行的屏障同步中的信号流动的图; 图9是示出根据实施例的归约运算装置的构造的图; 图10是示出根据实施例的归约运算单元的构造的图; 图11是示出根据实施例的计算单元的构造的图; 图12是示出蝶式执行的归约运算的图; 图13是归约运算执行的处理流程图; 图14是示出通过蝶式网络执行的归约运算中的数据和信号的流动的图;
图15是示出在6个进程中蝶式执行的屏障同步的实施例的图;
图16是示出在6个进程中通过分发(dissemination)执行的屏障同步的实施例 的图; 图17是示出通过分发执行的屏障同步中的信号流动的图;
图18是示出根据实施例的归约运算单元的构造的图; 图19是示出在6个进程中通过采用递归倍增的成对交换来执行的屏障同步的实 施例的图; 图20是示出通过采用递归倍增的成对交换来执行的屏障同步中的信号流动的 图; 图21是示出多核处理器的构造的图; 图22是示出根据实施例的同步设备的构造的图;以及 图23是示出归约运算单元的实施例的图。
具体实施例方式
现在可以详细地参考本发明的实施例,附图中示出了其示例,其中相同标号始终 指示相同元件。
图1示出具有多个节点的计算机网络的构造。所述多个节点中的每个包括根据本发明实施例的屏障同步设备。图2示出节点的构造。节点中的每个包括根据实施例的屏障 同步设备。假定根据实施例的屏障同步设备通过使用蝶式来执行屏障同步。
根据实施例的计算机网络包括例如计算机1的多个节点、以及将节点彼此连接的 网络2。在图1的例子中,四个节点#1到#4被布置在计算机网络上。通过网络2彼此连接 的所述多个节点l执行并行算术运算。所述多个节点1中的每个包括屏障同步设备6,用于 在并行算术运算中执行屏障同步。屏障同步设备6执行屏障同步。 节点1包括CPU 3、存储器4、系统控制器5、屏障同步设备6和输入/输出装置7。 系统控制器5对节点1,换句话说,CPU 3、存储器4、屏障同步设备6和输入/输出装置7的 操作进行控制。CPU 3包括设置处理器31。 设置处理器31通过系统控制器5与输入/输出装置7交换数据。以这种方式,输 入/输出装置7将包括屏障同步算法和执行条件的设置条件输入到CPU 3的设置处理器 31。输入/输出装置7根据需要输出从设置处理器31输出的数据。 设置处理器31通过系统控制器5将表示进程到达屏障点的信号传送到屏障同步 设备6。设置处理器31通过系统控制器5从屏障同步设备6接收表示屏障同步被建立的信 号。以这种方式,设置处理器31根据从输入/输出装置7输入的设置条件,在屏障同步设 备6中将屏障同步设备6设置为第一同步信号的目的地和第二同步信号的目的地。屏障同 步设备6根据由设置处理器31设置的设置条件,通过网络2与另一节点的屏障同步设备进 行通信以执行屏障同步。 设置处理器31通过系统控制器5与存储器4交换数据。以这种方式,设置处理器 31将数据写入存储器4,并且从存储器4读取数据。该数据用于例如后面将描述的归约运算。 下面将描述屏障同步。如图3所示,当执行屏障同步的多个进程#0到#2的执行 到达对进程进行同步的点,即屏障点时,这些进程中止其本身的执行。更具体地说,当多个 进程#0到#2本身到达屏障点时,进程#0到#2等待直至所有其它进程到达屏障点。当进 行屏障同步的多个进程#0到#2到达屏障点时,也就是,当建立了屏障同步时,所有进程#0 到#2重启被中止的执行。以这种方式,可以在并行执行的多个进程之间进行同步。
实现屏障同步的算法中的一种是蝶式算术运算。蝶式算术运算在下文中将被简称 为"蝶式"。通过蝶式将运算分为多个级,并且每级执行与其它进程的信号通信。在实施例 中,蝶式用作屏障同步算法。 图4示出在四个进程#0到#3之间蝶式执行屏障同步的例子。在图4中,例如,进 程#0通过将数字0加到圆中来表示,并且类似地表示其它进程#1到#3。在其它附图中,以 如上所述相同的方式来指定进程。 当以k表示级号并且以i表示其自身的进程或其自身的节点1的进程号时,在每 级上表示进程到达屏障点的信号的目的地以i X0R 2"(k-l)给出。当进程数N是2的幂时, 级数以log(N)给出。 例如,聚焦到图4的进程#0上,如下所述地确定目的地。在级#1上,从进程#0输
出且表示进程到达屏障点的信号的目的地是进程#1。另一方面,在级2上,进程#1接收从 进程#0输出且表示进程到达屏障点的信号,并且从进程#0输出且表示进程到达屏障点的 信号的目的地是进程#2。
6
信号的目的地可以被唯一确定,以便通过设置条件来确定屏障同步算法、以及例
如进程配置的执行条件。在实施例中,屏障同步算法是蝶式,并且执行条件为四个进程,这
意味着并行执行四个进程。为此,可以如图4所示地确定信号的目的地。 设置条件从输入/输出装置7输入到设置处理器31。在实施例的设置条件中,蝶
式用作屏障同步算法,并且执行条件被设置为四个进程。另外,作为执行条件,还输入进行
屏障同步的进程的级数k、以及每个进程的进程号i,例如,其自身节点1。级数k表示级号
的最大值。 向设置处理器31输入设置条件不限于上述输入。例如,节点1中的任何一个可以 通过网络2将设置条件输入到其它节点1。连接到网络2的管理计算机可以通过网络2将 设置条件输入到所有节点l。 进程在每级上与另一进程进行表示该进程到达屏障点的信号的通信。例如,在第 一级#1上,进程中的每个在定时中的任何一个到达屏障同步点。进程到达屏障同步点的定 时依赖于进程而改变。到达屏障同步点的进程在蝶式网络上将信号传送到下一级上预先设 置的进程。在实施例中,蝶式网络表示图l所示的网络2,并且是蝶式执行屏障同步且图2 所示的节点l被连接到其上的网络。在后面图中也是如此。 在下一级#2上,通过来自蝶式网络的前一级#1上预先设置的进程的信号对进程 进行同步。当进程接收到来自另一进程的信号时,进程将信号传送到下一级#3上预先设置 的进程。 在最后级#3上,通过来自前一级#2上的进程的信号对进程进行同步。当进程接 收到来自另一进程的信号时,系统将知道在所有进程#0到#3到达屏障点之后建立了屏障 同步。其后,因为屏障同步被建立,所以进程开始下一操作。 如上所述,作为执行屏障同步的另一方法,使进程将表示进程到达屏障点的信号 传送到特定进程的方法是公知的。在该方法中,在特定进程从所有进程接收到表示进程到 达屏障点的信号之后,从特定进程向所有进程广播屏障同步的建立。另一方面,根据通过蝶 式网络实现的屏障同步方案,广播不是必需的。 图5示出根据实施例的屏障同步设备的构造。图6是包括在图5的屏障同步设备 中的同步装置的构造。在图6中,重复地示出了接收装置61和传送装置63。
屏障同步设备6包括接收装置61、同步装置(在下文中被称为"同步单元")62和 传送装置63。如图6所示,同步单元62包括控制器621以及多个控制寄存器622。多个控 制寄存器622中的每个是包括多个寄存器的寄存器组。 多个控制寄存器622分别对应于同步信号对。换句话说,屏障同步设备6包括多 个控制寄存器622,用于对于每个算术运算将同步信号保存在控制寄存器中并且使得可以 执行屏障同步。因此,当通过n个第一同步信号来配置一对算术运算时,同步装置62对各 自由n个第一同步信号构成的所述多对中的每对执行屏障同步。在该情况下,在一个节点 上对多个进程进行操作。 在第一实施例中,在一个节点上对多个进程进行操作,并且执行一对算术运算,以 便可以对该对算术运算执行屏障同步。在第一实施例中,替代在一个节点上操作多个进程 的操作,可以在一个节点1上操作一个进程。在该情况下,可以将进程看作节点1。
在第一实施例中,控制寄存器622包括信号寄存器和目的地寄存器。在图6中,信
7号寄存器被表示为带有引用标记"信号"的部件,并且目的地寄存器被表示为带有引用标记 "目的地"的部件。该标示用于其它附图中。 控制器621基于对多个控制寄存器622的参考结果而传送用于屏障同步的同步信 号。信号寄存器存储表示是否从对应于控制寄存器622的进程或节点接收到同步信号的信 息。以这种方式,信号寄存器存储表示同步信号的同步状态的信息。目的地寄存器存储表 示作为目的地的进程或节点的信息,其中控制寄存器622将向其传送同步信号。以这种方 式,目的地寄存器存储表示在建立同步之后同步信号的传送目的地的信息。
当同步信号的传送目的地是另一节点时,目的地寄存器存储作为传送目的地的目 的地节点地址以及控制寄存器号。目的地节点地址是节点的网络地址并且被唯一确定。目 的地节点地址可以是预先加到节点的节点号。控制寄存器号是控制寄存器622的号码,并 且在节点中被唯一确定。控制寄存器号可以是预先加到控制寄存器622的一个号码或一对 号码。 目的地节点地址和控制寄存器号被指定以确定一个节点中的一个控制寄存器。当 同步信号的传送目的地是传送同步信号的节点时,将进程本身或节点本身的同步单元62 的控制寄存器号存储在目的地寄存器中。 在执行屏障同步之前,CPU 3的设置处理器31基于设置条件,通过控制器621来 设置控制寄存器622所需的参数。设置到控制寄存器622的参数例如包括控制寄存器622 的下一级的目的地节点地址、以及控制寄存器的控制寄存器号。如上所述,设置条件包括屏 障同步的算法和执行条件。 在设置参数之后,设置处理器31将屏障同步启动信号传送到控制器621,以启动 屏障同步。当在进程的最后级上建立同步时,同步装置62将表示屏障同步的建立即屏障同 步的完成的信号传送到设置处理器31。 接收装置61通过网络2连接到另一节点,并且接收来自另一节点的包括同步信号 的分组。当接收装置61根据包括屏障同步的算法和执行条件的设置条件,从另一节点接收 到预先设置了传送目的地的第一同步信号时,接收装置61将所接收的第一同步信号传送 到同步装置62。为此,接收装置61通过网络2从另一节点的屏障同步设备接收用于屏障同 步的分组。当接收装置61从另一节点接收到分组时,接收装置61基于所接收的分组而生 成同步信号和表示目的地的目的地信息,以将同步信号和目的地信息传送到同步单元62。 更具体地说,接收装置61提取包括在所接收的分组中的同步信号和目的地信息的信息,以 将所提取的信息传送到同步单元62。目的地信息包括作为同步信号目的地的目的地节点地 址、以及控制寄存器的控制寄存器号。根据目的地,可以确定与对应于所提取的目的地节点 地址和所提取的控制寄存器号的节点对应的控制寄存器622。 当传送源包括多个节点时,如果接收装置61包括数目与作为传送源的节点数对 应的网络接口,则可以通过使用多个接收装置61来同时接收从所述多个节点传送的分组。 该操作还在传送装置63中执行。 同步单元62基于来自接收装置61的同步信号和目的地信息而执行屏障同步处 理。同步单元62执行多个同步信号对的同步。在建立同步信号对中的每对的同步之后,将 同步信号传送到由目的地信息指定的传送目的地。以这种方式,在执行屏障同步的算法中, 可以在每级上高速执行对表示进程到达屏障点的信号的传送目的地进行改变的操作。唯一确定的控制寄存器号被分配给同步信号对中的每对。同步单元62接收来自接收装置61的 同步信号和控制寄存器号两者,并且将相互同步的同步信号对输出到传送装置63。
例如,关于同步信号对,同步单元62对根据设置条件预先设置的n (n是正整数) 个第一同步信号进行同步。当针对每对同步信号输入n个同步信号时,同步被建立。在建 立同步之后,同步单元62指示传送装置63传送第二同步信号。第二同步信号数被设置为 m(m是正整数),并且根据设置条件预先设置第二同步信号的传送目的地。
当建立了同步时,同步单元62将同步信号对传送到预先设置的传送目的地。传送 目的地是另一节点的同步单元或其自身节点的同步单元62。当同步信号的传送目的地是另 一节点时,传送目的地节点的目的地节点地址以及控制地址号被预先设置到同步单元62。 在该情况下,同步单元62将指示分组传送的信号传送到传送装置63。从同步单元62接收 到分组传送指示的传送装置63通过网络2将用于屏障同步的分组传送到由目的地节点地 址指定的另一节点的屏障同步设备。另一方面,当同步信号的传送目的地是其自身节点时, 控制寄存器号或控制寄存器号被预先设置在同步单元62中。同步单元62将同步信号传送 到其自身进程或其自身节点的同步单元62的指定控制寄存器622。 当同步单元62从CPU 3的设置处理器31接收到用于启动屏障同步的信号时,同 步单元62将同步信号传送到指定的传送目的地。当建立了最后一对同步信号的同步时,同 步单元62向CPU 3中的设置处理器31通知表示屏障同步完成的信号。
当传送装置63从同步单元62接收到传送指示时,传送装置63将第二同步信号传 送到预先设置的m个传送目的地。传送装置63从同步单元62接收用于指示分组传送的信 号,基于所指定的传送目的地生成分组,并且通过网络2将该分组传送到另一节点。如上所 述,基于传送目的地节点地址和控制寄存器号来确定作为传送目的地的节点。
图7示出由图5的屏障同步设备执行且蝶式实现的屏障同步处理的处理流程。
设置在CPU中的设置处理器31在启动屏障同步之前基于屏障同步算法和设置条 件而确定控制寄存器622的角色。并且,设置处理器31将与蝶式中的下一级对应的目的地 节点地址和控制寄存器号设置到控制寄存器622中的每个的目的地寄存器(Sll)。
设置处理器31输入控制寄存器622的控制寄存器号作为写入地址,其中控制寄存 器622的目的地节点地址和控制寄存器号应当被设置到同步单元62。设置处理器31将被 设置到控制寄存器622的目的地寄存器的目的地节点地址和控制寄存器号,输入到同步单 元62的控制器621作为写入数据。针对控制寄存器622中的每个,输入写入地址和写入数 据。因此,控制器621将作为所输入的写入数据的目的地节点地址和控制寄存器号,存储在 由写入地址指定的控制寄存器622的目的地寄存器中。写入数据的存储实际上由从设置处 理器31接收写入地址和写入数据的控制器621来执行。另一方面,除此之外,信号寄存器 的初始值例如被预先设置为"0"。 例如,如下所述地设置目的地节点地址和控制寄存器号。当节点数是2的幂时,在
蝶式建立同步到两个位置,例如,其自身进程或其自身节点的下一级和另一节点中的下一
级之后,传送同步信号。因此,被指定为目的地寄存器的目的地是其自身进程或其自身节点
的控制寄存器号、或者另一节点的目的地节点地址和控制寄存器号中的任一个。 在第一级上,由于信号彼此没有同步,因此不使用信号寄存器。另一方面,在最后
级上,不使用目的地寄存器。因此,由于在第一级和最后级上未使用同一寄存器,因此在第一和最后级上指定同一控制寄存器622。例如,在图8中,在第一级和最后级上,指定同一控 制寄存器号#1。 即使在第一级和最后级中未使用同一寄存器,也可以在第一和最后级上指定不同 的控制寄存器622。例如,控制寄存器622的数目足够大,在图8中的最后级上,可以指定控 制寄存器号#3。 在图8中,加到信号寄存器和目的地寄存器对的、诸如#1的引用标记表示控制寄 存器号。在图14、17和20中也是如此。在下面的说明中,控制寄存器号#1的控制寄存器 622也被称为控制寄存器#1。 当节点数不是2的幂时,为了使节点数是2的幂,包括在添加到网络2的附加节点 中的控制寄存器622被给予另一节点。例如,在图8中,为了进行节点#1到#3之间的屏障 同步,包括在节点中的控制寄存器622被给予节点#1到#3中的任一个。在该情况下,由于 仅仅需要与重复级对应的控制寄存器,因此与重复级对应的控制寄存器#2被给予节点#1 到#3中的任一个。此外,在第一级上,控制寄存器的传送目的地的信号寄存器的值被预先 设置为"1 "。在最后级上,从控制寄存器的传送源的目的地寄存器消除第一级上的控制寄存 器。 当进程到达屏障点时,设置处理器31将表示启动屏障同步的信号传送到屏障同 步设备6的同步单元62(S12)。屏障同步启动信号包括多个对应于第一级的控制寄存器 622。例如,在图8的节点#1中,屏障同步启动信号指定控制寄存器#1。在第一级上,由于没 有从另一进程接收到分组,因此没有同步信号和目的地从接收装置61传送到控制器621。
当同步单元62的控制器621接收到用于启动屏障同步的信号时,控制器621读取 与由屏障同步启动信号指定的号码对应的控制寄存器622的目的地寄存器的值(S13)。在 下文中,目的地寄存器的值被称为"目的地"。为了读取目的地寄存器,控制器621使用由屏 障同步启动信号指定的控制寄存器号作为读取地址,以读取该地址的控制寄存器622的目 的地寄存器的值作为读取数据。对应于第一级的控制寄存器622的信号寄存器未被使用。 因此,对同步信号的同步未被执行。例如,在图8的节点#1中,控制寄存器#1的目的地寄 存器的值是作为另一节点的节点#2的控制寄存器32以及作为其自身节点的节点#1的控 制寄存器#2。 控制器621基于在目的地寄存器的值中指定另一节点的控制寄存器622的值,将 用于分组传送指示的信号传送到传送装置63 (S14)。分组传送指示包括指定另一节点的目 的地寄存器的值。传送装置63基于由来自控制器621的分组传送指示指定的目的地节点 地址和控制寄存器号而生成分组,并且将分组传送到网络2。分组的传送目的地包括指定的 目的地节点地址和控制寄存器号。以这种方式,在图8的示例中,通过使用节点#2的控制 寄存器#2作为目的地,将分组从节点#1传送到节点#2。该分组例如包括同步信号。
传送装置63基于在目的地寄存器的值中指定其自身节点的控制寄存器622的值, 读取目的地寄存器中指定的控制寄存器622的信号寄存器的值(S14)。更具体地说,传送装 置63在其自身节点的下一级上读取控制寄存器622的信号寄存器的值。这被执行以将同 步信号传送到其自身节点的同步单元62并且在其自身节点中进行同步。在下文中,信号寄 存器的值也被称为"信号"。 其后,同步单元62检查表示同步状态的"1"是否被设置在关于下一状态的信号寄存器中(S15)。当"l"被设置在信号寄存器中(S15中为是)时,建立了同步。另一方面,当 "l"未被设置在信号寄存器中(S15中为否)时,未建立同步。 当未建立同步(S15中为否)时,同步单元62将关于下一状态的控制寄存器622 的信号寄存器的值"信号"设置为"l"。此后,分组的接收被彼此同步(S16)。为了设置控 制寄存器622,控制器621使用在目的地寄存器的读取值中指定其自身节点的值作为写入 地址,并且"1"作为写入数据被写入该地址的控制寄存器622的信号寄存器。例如,在图8 的节点#2中,控制寄存器#1的信号寄存器的值被设置为"l"。以这种方式,表明接收到要 被彼此同步的同步信号中的一个。 此后,当接收装置61接收到分组时,接收装置61基于所接收的分组而提取同步 信号以及作为目的地的控制寄存器号,并且将同步信号和控制寄存器号传送到同步单元 62(S17)。 当同步单元62的控制器621从接收装置61接收到该信号时,控制器621读取所 指定的控制寄存器622的信号寄存器的值(S18)。此后,重复S15之后的操作。例如,当控 制器621从接收装置61接收到同步信号和目的地时,控制器621基于所接收的控制寄存器 号而读取控制寄存器622的信号寄存器的值。为了读取信号寄存器,控制器621使用所指 定的控制寄存器号作为读取地址,以读取该地址的控制寄存器622的信号寄存器的值作为 读取数据。 另一方面,当在S15中建立了同步(S15中为是)时,控制器621进一步检查控制 寄存器622是否对应于最后级(S19)。例如,在图8的节点#1中,在执行步骤S16之后,控 制寄存器#2的信号寄存器的值为"l"。因此,在该情况下,建立了同步。
当与最后级对应的控制寄存器622中建立了同步(S19中为是)时,控制器621将 表示屏障同步建立的信号传送到CPU的设置处理器31 (S110)。 设置处理器31从控制器621接收表示屏障同步建立的信号,以知道屏障同步建立 (Slll)。 当在S19中控制寄存器622不对应于最后级(S19中为否)时,控制器621读取建
立了同步的控制寄存器622的目的地寄存器的值(S112),重复S14之后的操作。例如,在图
8的节点#1中,由于控制寄存器#2不对应于最后级,因此重复S14之后的操作。 图8示出了通过图7中的蝶式实现的屏障同步处理的级之间的同步信号的流动。
在图8中,同步设备6中的引用标记#1等等表示多个控制寄存器622的寄存器号。图8示
出随着时间从左起顺序地传送同步信号的状态。这点与其它附图相同。 在图8中,参考节点#1,同步信号如下所述地流动。例如,当节点#1到达屏障点
时,通过输入屏障同步启动信号来指定节点#1启动同步。据此,在级#1上,节点#1将同步
信号传送到预先指定为目的地的节点#1和节点#2。 在级#2上,接收到其自身同步信号的节点#1将该同步信号与来自预先指定的节 点#2的同步信号进行同步。在节点#2到达屏障点之后,来自节点#2的级#2的同步信号 类似地到达节点#1。当来自节点#2的同步信号到达时,在节点#1中,其自身的同步信号以 及来自节点#2的同步信号被彼此同步,也就是,建立两个信号之间的同步。当建立了同步 时,在级#2上,节点#1将同步信号传送到作为预先指定的目的地的节点#1和节点#3。
在级#3上,接收到其自身同步信号的节点#1将该同步信号与来自预先指定的节点#3的同步信号进行同步。在节点#3到达屏障点之后并且在接收到来自到达屏障点的节点#4的同步信号之后,类似地,级#3的同步信号从节点#3到达节点#1。当来自节点#3的同步信号到达时,在节点#1中,其自身的同步信号以及来自节点#3的同步信号被建立。当建立了同步时,节点#1确定在级#3上建立了屏障同步以输出屏障同步建立信号。
在节点#2到#4中,类似地,在级#3上建立屏障同步,并且输出屏障同步建立信号。以这种方式,执行蝶式实现的屏障同步。 因此,图8中的同步信号的流动是与图4中相同的流动,并且可以理解,执行蝶式实现的屏障同步。 图9示出根据第二实施例的归约运算装置的构造的例子。图10示出包括在图9的归约运算装置中的同步单元82和归约运算单元的构造的例子。图11示出包括在图10的归约运算单元中的计算机845的构造的例子。第二实施例涉及归约运算装置,其在蝶式执行屏障同步时执行归约运算。 在第二实施例中,归约运算装置8设置在构成图l所示的计算机网络的节点1中。在第二实施例中,节点1包括以归约运算装置8替代图2所示的节点#1的屏障同步设备6的构造。更具体地说,除了屏障同步设备6之外,第二实施例中的节点l具有与图2所示的节点1相同的构造。某些与图2所示的节点1中的元件相同或类似的元件未被示出。
归约运算装置8在进行屏障同步时执行归约运算。归约运算装置包括归约运算单元84和同步装置(在下文中被称为"同步单元")82。同步单元82包括控制器821和控制寄存器822。归约运算单元84包括输入数据寄存器841、多路复用器S42、开关843、存储装置844、计算机845、多路分离器846和输出数据寄存器847。 除了归约运算装置8包括归约运算单元84之外,归约运算装置8包括与屏障同步设备6相同的构造。由于归约运算装置8包括归约运算单元84,因此输入表示启动归约运算的信号来替代表示启动屏障同步的信号,并且输出表示归约运算完成的信号来替代表示屏障同步建立的信号。 由于归约运算装置8包括归约运算单元84,因此归约运算装置8与网络2执行分组的传送和接收以及数据的传送和接收,并且还与CPU 3的设置处理器31执行控制信号和数据的传送和接收。 由于归约运算装置8包括归约运算单元84,因此归约运算装置8从外部接收要进行归约运算的目标数据,并且将归约运算的结果输出到外部。 要进行归约运算的第一目标数据作为写入数据从CPU 3的设置处理器31输入到输入数据寄存器841,并且作为读取数据从输入数据寄存器841输入到多路复用器842。要进行归约运算的第二目标数据作为分组从网络2经由接收装置81进行输入,从该分组中提取,并且输入到多路复用器842。 另一方面,将归约运算的结果作为写入数据从多路分离器846输出到输出数据寄存器847,并且作为读取数据从输出数据寄存器847输出到设置处理器31。将归约运算的结果从多路分离器846输出到传送装置83并且作为分组从传送装置83传送到网络2。
输入数据寄存器841的数目和输出数据寄存器847的数目各自为二或更多。输入数据寄存器841分别对应于控制寄存器822。输出数据寄存器847也分别对应于控制寄存器822。
12
写入数据要被写入的输入数据寄存器841通过来自设置处理器31的写入地址来指定。要从其读取出读取数据的输入数据寄存器841通过来自控制器821的读取地址来指定。输入数据寄存器841的读取地址对应于通过从例如接收装置81接收的分组中的目的地来指定的控制寄存器822,并且基于控制寄存器822的控制寄存器号来生成。写入数据要被写入的输出数据寄存器847通过来自控制器821的写入地址来指定。输出数据寄存器847的写入地址对应于写入数据的归约运算中使用的控制寄存器822,并且基于控制寄存器822的控制寄存器号来生成。要从其读取出读取数据的输出数据寄存器847通过来自设置处理器31的读取地址来指定。 为了执行归约运算,设置处理器31根据从输入/输出装置7输入的设置条件,在归约运算装置8中将第一同步信号的传送目的地和第二同步信号的传送目的地设置为归约运算装置8。 设置处理器31通过系统控制器5在启动归约运算时将要进行算术运算的数据传送到归约运算装置8,并且从归约运算装置8接收归约运算结果。归约运算装置8通过网络2(被示为"网络")与另一节点的归约运算装置进行通信,并且基于通信执行归约运算。
此外,为了执行归约运算,包括在归约运算装置8中的同步单元82在建立同步之后指示传送装置83传送第二同步信号(被示为"分组传送指示"),并且指示归约运算单元84执行预定的归约运算。当传送装置83接收到传送第二同步信号的指示时,传送装置83将计算机845中的归约运算结果与第二同步信号一起传送到设置处理器31。
同步单元82包括控制寄存器822中的类型寄存器。在图10中,类型寄存器被表示为加有标记类型的部件。这点与其它附图中相同。类型寄存器存储表示算术运算类型的信息,以控制计算机845中的归约运算。存储在类型寄存器中的信息也作为某些设置条件从输入/输出装置7进行输入。 下面将描述归约运算。如上所述,归约运算可以通过使用与屏障同步中相同的算法来执行。更具体地说,可以通过蝶式网络来执行归约运算,其中蝶式网络执行蝶式实现的屏障同步。 因此,如图3和4所示的归约运算,该运算被分为多级,并且每个进程在每级上与另一进程交换信号。当在一个节点上操作一个进程时,可以将进程视为节点。在每级上的进程的执行和传送目的地基本上与屏障同步中相同。 如图12所示,在归约运算中,第一级#1上的每个进程将要进行算术运算的数据传送到下一级#2的进程。在级#2上,当每个进程从前一级#1的进程接收到数据时,例如,该进程将其自身数据加到来自前一级#1的进程的数据,并且将算术运算结果传送到下一级#3的进程。当最后级#3上的每个进程接收到来自前一级#2的进程的数据时,例如,该进程将所接收的数据与级#2上的其自身算术运算结果相加。相加结果是求和的结果。
作为另一种归约运算方法,可以考虑向特定进程传送数据以执行算术运算的方法。在该方法中,为了使所有进程分别具有算术运算结果,使用来自特定进程的广播。根据通过蝶式网络实现的归约运算,广播不是必需的。
下面将描述第二实施例中的归约运算。 如同屏障同步设备6中那样,设置处理器31基于设置条件在与同步单元82的每对归约运算对应的控制寄存器822中,设置下一级的目的地节点地址、控制寄存器号等等。此后,设置处理器31将输入数据和归约同步启动信号传送到归约运算单元84。以这种方式,启动由归约运算单元84执行的归约运算。当在与最后级对应的控制寄存器822中建立了同步时,归约运算装置8将算术运算结果以及表示完成归约运算的信号传送到设置处理器31。 接收装置81通过网络2从CPU 3接收分组,基于所接收的分组将一对同步信号和目的地传送到同步单元82,并且将作为分组接收到的数据传送到归约运算单元84。
在归约运算单元84中,输入数据寄存器841临时地存储从CPU 3传送的且进行归约运算的输入数据(图10所示的"写入数据"),并且根据来自控制器821的指示,通过多路复用器842将所存储的数据作为"读取数据"输入到存储装置844。如上所述,来自CPU3的数据在启动归约运算时被输入。 存储装置844存储通过输入数据寄存器841输入的数据。以这种方式,存储装置844保存归约运算中使用的数据。存储装置844的存储容量例如以(控制寄存器822的数目)X (数据的比特数)给出。在存储装置844中保存归约运算所用数据的地址由来自控制器821的写入地址指定。存储装置844的写入地址对应于归约运算中使用的控制寄存器822,并且基于控制寄存器822的控制寄存器号来生成。 存储在存储装置844中并在归约运算中使用的数据被读取和输入到计算机822,以便从控制器821指定读取地址。存储装置844的读取地址对应于归约运算中使用的控制寄存器822,并且基于控制寄存器822的控制寄存器号来生成。 多路复用器842根据来自控制器821的用于输入单元选择的指示,选择来自输入数据寄存器841的数据或来自接收装置81的数据,并且通过开关843将所选数据输入到存储装置844或计算机845。当从接收装置81输入同步信号和目的地信息时,用于输入单元选择的指示将来自接收装置81的数据输出到多路复用器842,否则,将来自输入数据寄存器841的读取数据输出到多路复用器842。 根据来自控制器821的用于输入/输出单元选择的指示,开关843将来自多路复用器842或计算机845的输入,输入到存储装置844或计算机845。当从多路复用器842输入数据时,用于输入/输出单元选择的指示输入来自多路复用器842的数据,否则,该指示输入来自计算机845的数据。当建立了同步时,用于输入/输出单元选择的指示将输入数据输出到计算机845,否则,该指示将输入数据输出到存储装置844。 当建立了同步时,计算机845对存储装置844中经同步的数据、来自通过多路复用器842输入的分组的数据或先前算术运算结果,执行预定的算术运算。也就是说,当计算机845从同步单元82的控制器821接收到指示时,计算机845通过使用存储在存储装置844中的数据来执行归约运算。更具体地说,计算机845根据来自控制器821的算术运算指示而执行预定算术运算,将算术运算的结果输入到多路分离器846,并且将该结果输入到开关843。 如图11所示,计算机845包括算术单元8451到8454以及多路复用器8455。加法器(加法)8451、逻辑和运算单元(逻辑)8452、最大值计算单元(最大值)8453和最小值计算单元(最小值)8454构成算术单元。算术单元8451到8454分别执行预定算术运算。
计算机845在从存储装置844输入的数据,例如第一数据,从输入数据寄存器841输入的数据,与来自由接收装置81接收的分组的数据或由计算机845在前一级获得的算术运算结果,例如第二数据之间执行指定类型的算术运算。将第一数据和第二数据输入到算 术单元8451到8454。算术单元8451到8454对所输入的数据进行算术运算,并且将算术运 算结果输出到多路复用器8455。算术运算的类型通过来自控制器821的算术运算指示来指 定。由控制器821基于表示算术运算类型的类型寄存器的值来生成算术运算指示。多路复 用器8455根据算术运算指示来选择算术单元8451到8454中获得的算术运算结果中的任 一个,并且输出所选算术运算结果。 多路分离器846根据通过控制器821的指示输出单元选择的控制,将来自计算机 845的输入,输入到输出数据寄存器847或传送装置83。输出单元选择的指示在完成归约 运算之前将来自计算机845的数据输出到传送装置83,否则,该指示将数据输出到输出数 据寄存器847。 输出数据寄存器847将归约运算的结果输出到CPU 3。在完成了归约运算时,将从 输出数据寄存器847输出的归约运算结果输入到CPU 3。 当传送装置83从归约运算单元的多路分离器846接收到算术运算结果、由分组传
送指示指定的目的地节点地址、以及控制寄存器号时,传送装置83基于算术运算结果、目
的地节点地址和控制寄存器号而生成分组,并且将所生成的分组传送到网络2。 如同屏障同步设备6的同步装置62中那样,同步单元82在每级执行改变算术运
算的中间结果的传送目的地的操作。当同步单元82的控制器821从接收装置81接收到同
步信号和控制寄存器号时,控制器821将同步信号传送到与所接收的控制寄存器号对应的
控制寄存器822。 当建立了同步时,控制器821将同步信号的传送指示传送到传送装置83。在图10 中,同步信号的传送指示被表示为"分组传送指示"。此时,控制器821将同步信号传送到 其自身进程或其自身节点的同步单元82中的指定控制寄存器822,并且控制归约运算单元 84。更具体地说,控制器821执行输入到归约运算单元84的数据与存储装置844中的经同 步数据之间的归约运算。另一方面,当未建立同步时,控制器821使存储装置844保存该数 据。 在将同步信号传送到其自身进程或其自身节点的同步单元82中的指定控制寄存 器822的情况下,当建立了同步时,控制器821进一步控制归约运算单元84,以重复算术运 算结果与存储装置844中的经同步数据之间的算术运算。另一方面,当未建立同步时,控制 器821将算术运算结果传送到存储装置844。 当控制器821从设置处理器31接收到表示启动归约运算的信号时,控制器821将 同步信号以及从设置处理器31输入的数据传送到指定对,例如,控制寄存器822的传送目 的地。此后,当在最后对之间建立了同步时,控制器821将算术运算结果以及表示完成归约 运算的信号传送到设置处理器31。 图13示出由图9的归约运算装置8执行的操作的控制流程,其中所述操作在执行 蝶式实现的屏障同步时执行归约运算。 归约运算使用屏障同步。除了进行归约运算的数据的传送/接收进程以及归约运 算处理(S29)之外,图13中的处理流程与图7中的处理流程几乎相同。
在启动归约运算之前,设置处理器31基于执行归约运算的节点数而确定要使用 的控制寄存器822的数目。设置处理器31将与蝶式中的下一级对应的目的地节点地址、以
15及控制寄存器号设置到控制寄存器822中的每个的目的地寄存器,并且将算术运算类型设 置到类型寄存器(S21)。 如下所述地执行寄存器的设置。当在蝶式中节点数是2的幂时,在建立了同步之 后,将同步信号传送到两个位置,例如,其自身进程和其自身节点的下一级以及另一节点中 的下一级。因此,对目的地寄存器指定的目的地包括其自身进程或其自身节点的控制寄存 器号、另一节点的目的地节点地址、以及控制寄存器号。由于在第一级上信号没有被同步, 因此不使用信号寄存器。在最后级上,不使用目的地寄存器。为此,在第一和最后级上指定 同一控制寄存器822。 当节点数不是2的幂时,如同第一实施例中那样,在另一节点例如附加节点中提 供与附加节点的重复级对应的控制寄存器822。附加节点被设置成使得第一级上的控制寄 存器822不与最后级的控制寄存器822进行通信。此外,将附加节点的控制寄存器822的 类型寄存器设置为通过(绕过),以便防止附加节点执行算术运算。 设置处理器31将输入数据传送到输入数据寄存器以启动归约运算,并且将归约 运算启动信号传送到同步单元82(S22)。归约运算启动信号包括与第一级对应的输入寄存 器号和控制寄存器号。 当表示启动归约运算的信号被传送时,同步单元82的控制器821读取由归约运算 信号指定的控制寄存器822的目的地寄存器的值(S23)。 当另一节点被指定到目的地寄存器时,控制器821将用于分组传送指示的信号输 出到传送装置83,并且将数据传送到传送装置83。当控制寄存器822是第一级时,被传送到 传送装置83的数据是输入数据寄存器的值,并且当控制寄存器822是后续级时,该数据是 来自计算机845的算术运算结果。当输入数据寄存器的值被传送到传送装置83时,将绕过 指定为算术运算指示。传送装置83基于该数据、由分组传送指示指定的目的地节点地址、 以及控制寄存器号而生成分组,并且将分组传送到网络2。 当其自身进程或其自身节点的控制寄存器822被指定时,控制器821读取由目的 地寄存器指定的控制寄存器822的信号寄存器的值,以将同步信号传送到其自身进程或其 自身节点的同步单元82(S24)。 控制器821检查"1"是否被设置在信号寄存器中(S25)。当"l"被设置在信号寄 存器中(S25中为是)时,同步被建立。另一方面,当"l"未被设置在信号寄存器中(S25中 为否)时,同步未被建立。 当未建立同步时,控制器821将"1"设置在信号寄存器中,并且将数据存储在与存 储装置844的控制寄存器822对应的地址。当控制寄存器822是第一级时,该数据是输入 数据寄存器的值,并且当控制寄存器822是后续级时,该数据是前一级的算术运算结果。此 后,控制器821对来自其它进程的分组的接收进行同步(S26)。 当接收装置81接收到来自另一进程的分组时,接收装置81基于所接收的分组而 提取数据、同步信号、以及作为目的地的控制寄存器号,并且将对应信息传送到多路分离器 846和同步单元82(S27)。 当同步单元82从接收装置81接收到同步信号和控制寄存器号时,同步单元82读
取指定控制寄存器822的"信号"的值(S28)。此后,重复S25之后的操作。 另一方面,当在S25中建立了同步时,执行算术运算(S29)。当控制寄存器822对应于第一级的下一级时,要被算术运算的数据是输入数据寄存器的值。当控制寄存器822 对应于后续级时并且当同步建立的因素是来自分组的同步信号时,该数据是包括在分组中 的数据。当所接收的同步信号是来自其自身进程或其自身节点的同步装置的同步信号时, 在前一级上的算术运算结果与存储在对应于建立了同步的控制寄存器822的存储装置844 的地址处的数据之间执行算术运算。当所接收的信息是算术运算结果时,根据类型寄存器 的值指定算术运算的类型。 此外,控制器821检查控制寄存器822是否对应于最后级(S210)。 当对应于最后级的控制寄存器822中建立了同步(S210中为是)时,控制器821
将算术运算结果存储在输出数据寄存器中,并且将表示归约运算完成的信号传送到设置处
理器31(S211)。 设置处理器31从控制器821接收表示归约运算完成的信号,并且从输出数据寄存 器读取算术运算结果(S212)。 当S210中控制寄存器822不对应于最后级(S210中为否)时,读取建立了同步的
控制寄存器822的目的地寄存器的值(S213)。此后,重复S24之后的操作。 图14示出图13的蝶式实现的归约运算处理中级间的同步信号的流动。 在图14中,关于节点#1,进行同步信号归约和算术运算的数据如下所示地流动。
例如,当节点#1接收到作为要被算术运算的数据的输入数据时,通过输入归约运算启动信
号来指示启动归约运算。据此,在级#1上,节点#1将同步信号以及要被算术运算的数据传
送到作为预先指定的目的地的节点#1和节点#2。 在级#2上,接收到其自身同步信号以及要被算术运算的数据的节点#1将该同步 信号与来自预先指定的节点#2的同步信号进行同步,并且将所接收的要被算术运算的数 据保存在存储装置和计算机中。在节点#2接收到输入数据之后,级#2的同步信号以及要 被算术运算的数据从节点#2输出,然后到达节点#1。当来自节点#2的同步信号到达节点 #1时,在节点#1中,其自身同步信号与来自节点#2的同步信号之间的同步,例如,这两个信 号之间的同步被建立。当建立了同步时,在级#2上,节点#1执行其自身的要被算术运算的 数据与来自节点#2的要被算术运算的数据之间的算术运算,并且将同步信号和算术运算 结果传送到作为预先指定的目的地的节点#1和节点#3。算术运算结果用作节点#1和节点 #3中的要被算术运算的数据。 在级#3上,接收到其自身同步信号以及要被算术运算的数据的节点#1将该同步 信号与来自预先指定的节点#3的同步信号进行同步,并且将所接收的要被算术运算的数 据保存在存储装置和计算机中。在节点#3接收到输入数据并且从接收到输入数据的节点 #4接收到同步信号之后,级#3的同步信号以及要被算术运算的数据类似地从节点#3输出, 并且到达节点#1。当来自节点#3的同步信号到达节点#1时,在节点#1中,其自身同步信 号与来自节点#3的同步信号之间的同步被建立。当建立了同步时,在级#3上,节点#1执 行其自身的要被算术运算的数据与来自节点#3的要被算术运算的数据之间的算术运算,
并且将算术运算结果输出到预先指定的输出数据寄存器。此后,节点#1输出归约运算完成 信号以及作为归约运算结果保存在输出数据寄存器中的数据。同样在节点#2到#4中,类似 地,在级#3上,同步被建立,并且归约运算完成信号和归约运算结果被输出。以这种方式, 执行蝶式实现的归约运算。
17
因此,图14中的同步信号以及要被算术运算的数据的流动与图4所示的流动相 同。可以理解,执行使用蝶式实现的屏障同步的归约运算。 第三实施例涉及执行通过分发实现的屏障同步的屏障同步设备。更具体地,在第 三实施例中,屏障同步的算法是分发。 第一实施例中采用的蝶式实现的屏障同步不能应付进程数不是2的幂的情况。在 这种情况下,为了执行蝶式实现的屏障同步,虚拟地添加进程,以使得进程数是2的幂。虚 拟进程的通信由真实进程替代执行。为此,由于分配给虚拟进程的真实进程必须执行为虚 拟进程执行的通信,因此级数增加。 图15示出由六个进程#0到#5执行蝶式实现的屏障同步的例子。在该情况下,除 了真实进程#0到#5之外,添加了虚拟进程恥和#7。以这种方式,进程数是2的幂。在该 情况下,真实进程#0和#1执行为虚拟进程恥和#7执行的通信。真实进程#0和#1执行 作为真实进程执行的通信以及作为虚拟进程执行的通信。为此,在图15的例子中,级数变 为6。 在步骤1中,真实进程#0和#1彼此通信,真实进程#2和#3彼此通信,并且真实 进程#4和#5彼此通信。此后,作为虚拟进程恥和#7的真实进程#0和#1彼此通信。真 实进程#0和#1之间的通信以及虚拟进程恥和#7之间的通信不能同时执行。因此,步骤 1中的级数为2,这通过合计前者通信和后者通信而获得。 在步骤1中,进程#0、#1、恥和#7分别被示出为独立进程。通过以虚线围绕进程 #0和恥所获得的进程是真实进程#0。这也适用于进程#1和#7。在步骤2和步骤3中,虚 拟进程#6和#7未被示出。 在步骤2中,真实进程#0与真实进程#2通信,并且还作为虚拟进程恥与真实进
程#4通信。这些通信不能同时执行。这也适用于真实进程#1。因此,步骤2中的级数为
2。类似地,同样在步骤S3中,级数变为2。因此,总级数变为6。 为了解决该问题,提出了分发来替代蝶式作为屏障同步的算法。 图16示出由六个进程执行通过分发实现的屏障同步的例子。分发是这样的算法,
其中当级数、其自身进程或其自身节点1的进程数、以及进程总数以k、 i和N表示时,表示
进程到达屏障点的信号的传送目的地以i+2"(k-l)modN给出。 在步骤1中,每个真实进程将同步信号传送到第一个下一真实进程。例如,真实进 程#0将同步信号返回到真实进程#1。最后真实进程将同步信号传送到真实进程#0。在步 骤2中,每个真实进程将同步信号传送到第二个下一真实进程。在步骤3中,每个真实进程 将同步信号传送到第三个下一真实进程。 以这种方式,在同步信号被传送log(N)(对数底=2)次之后,某个真实进程从所 有其它真实进程接收到同步信号。结果,由于级数一直是log(N)(对数底=2),因此即使进 程数不是2的幂,也可以获得比图15中更高的效率。 根据第三实施例的计算机网络包括与第一实施例相同的构造。更具体地说,在第 三实施例中,图2所示的节点1布置在图1所示的计算机网络中,图5所示的屏障同步设备 6布置在节点1中,并且图6所示的同步单元62布置在屏障同步设备6中。
在第三实施例中,作为通过分发实现的屏障同步中的下一状态的控制寄存器622 被设置作为控制寄存器622的目的地寄存器。以这种方式,可以执行通过分发实现的屏障同步。 在第三实施例中,通过与图7所示的处理流程相同的处理流程来执行屏障同步。 然而,在第三实施例中,在同步单元62的控制器621中,省去图7的步骤S14中有关对应控 制寄存器622的目的地寄存器的读取值的确定。更具体地说,在第三实施例中,不执行用于 指定其自身节点1的控制寄存器622和另一节点的控制寄存器中的任一个的确定。这是因 为,在通过分发实现的屏障同步中,每级上的通信源和通信目的地是两个寄存器,例如,其 自身节点1的控制寄存器622和另一节点的控制寄存器。 图17示出通过分发实现的屏障同步处理中级间的同步信号的流动。图17示出由 四个进程执行通过分发实现的屏障同步的例子。因此,出现在图16中的引用标记d没有出 现在图17中。 在图17中,关于节点#1,同步信号如下所述地流动。更具体地说,同步信号到达 节点#1,在级#1上,将同步信号从节点#1传送到节点#1和节点#2。如图17的引用标记 a所示,级ft2上的同步信号从节点#4输出并且到达节点#1。当来自节点#4的同步信号到 达节点#1时,在节点#2中,将同步信号从节点#1传送到节点#1和节点#3。如图17的引 用标记c所示,级#3上的同步信号从节点#3输出并且到达节点#1。当来自节点#3的同步 信号到达节点#1时,在级#3上,确定建立了同步,并且从节点#1输出同步信号。
同样在节点#2和节点#4中,通过与如上所述相同的方式,在级#3上,建立了同 步,并且输出同步信号。以这种方式,执行通过分发实现的屏障同步。 图18示出根据第四实施例的包括在归约运算装置中的同步单元82和归约运算单 元的构造的例子。第四实施例涉及这样的归约运算装置,其在通过分发执行屏障同步的同 时执行归约运算。 第四实施例基本上包括与第二实施例相同的构造。更具体地说,在第四实施例中, 图2所示的节点1布置在图1所示的计算机网络中,并且图9所示的归约运算装置8布置 在节点1中。 另一方面,在第四实施例中,替代图10所示的归约运算装置8,归约运算装置8A被 布置成如图18所示。归约运算装置8A基本上包括与归约运算装置8相同的构造。然而, 在归约运算装置8A中,省去控制寄存器822的类型寄存器。 为此,在第四实施例中,分组包括表示算术运算类型的信息。由于可以预先知道算 术运算类型,在归约运算之前,将算术运算类型输入到CPU3的设置处理器31,作为用于归 约运算的某个设置条件。接收装置81将所接收的算术运算类型传送到同步单元82的控制 器821。控制器821将算术运算类型的信息添加到来自同步单元82的分组传送指示的信 号,并且将所得到的信号传送到传送装置83。传送装置83将所接收的算术运算类型的信息 添加到要被传送的分组的预定位置,以生成传送分组。 在第四实施例中,在以通过分发实现的屏障同步执行的归约运算中,作为下一级 的控制寄存器822被设置为控制寄存器822的目的地寄存器。以这种方式,可以执行以通 过分发实现的屏障同步执行的归约运算。 在第四实施例中,通过与图13所示的处理流程相同的处理流程来执行归约运算。 然而,在第四实施例中,同步单元82的控制器821省去S21中的有关控制寄存器822的类 型寄存器的值的确定。在第四实施例中,在步骤S22中,归约运算开始信号包括算术运算类型的信息。此外,在第四实施例中,在S24中,控制器821将指定算术运算类型信息添加到
分组传送指示,并且传送装置83生成具有算术运算类型信息的分组。在第四实施例中,在
S29中,基于来自接收装置81的算术运算类型的信号而指定算术运算类型。在第四实施例
中,在S27中,将算术运算类型添加到从接收装置81传送到同步装置的信号。 控制器821省去S24中有关对应控制寄存器822的目的地寄存器的读取值的确定。 以这种方式,如同图17中那样,实现通过分发的归约运算处理中级间的同步信号 的流动。 第五实施例涉及这样的屏障同步设备,其通过采用递归倍增的成对交换来执行屏
障同步。更具体地说,在该例子中,屏障同步的算法是采用递归倍增的成对交换。 如上所述,蝶式实现的屏障同步的缺点是该屏障同步不能应付进程数不是2的幂
的进程。作为屏障同步的算法,替代蝶式,除了第三实施例中说明的分发之外,还提出了采
用递归倍增的成对交换。 图19示出由六个进程执行通过采用递归倍增的成对交换实现的屏障同步的例 子。采用递归倍增的成对交换将进程分为2的幂的组和剩余组。在图19中,组a表示2的 幂的组,并且组b表示剩余组。在图19的例子中,组a包括四个进程#0到#3,并且组b包 括进程#4和#5。 在第一级上,执行从剩余组b到2的幂的组a的通信(步骤l)。例如,将同步信号 从组b的进程#4和#5分别传送到组a的进程#0和#1 。组a的进程#0和#1将所接收的 同步信号存储在信号寄存器中。在图19中,包括在每个进程中的信号寄存器以与圆形表示 的每个进程对应的正方形表示。例如,组a的进程糾将"l"存储在第五位中,其中第五位 用作与信号寄存器中的进程#4对应的位。对进程#1执行相同的操作。
此后,在2的幂的组a中执行通信(步骤2到步骤3)。例如,进程#0和#1彼此通 信,并且进程#2和#3彼此通信。其后,进程#0和#2彼此通信,并且进程#1和#3彼此通 信。以这种方式,在2的幂的组a中建立同步。 当在2的幂的组a中可以建立同步时,执行从2的幂的组a到剩余组b的通信(步
骤4)。例如,将同步信号从组3的进程#0和#1传送到组13的进程#4和#5。以这种方式,
建立组a与组b之间的同步,即组a的进程与组b的进程之间的同步。 根据第五实施例的计算机网络包括与第一实施例中相同的构造。更具体地说,在
第五实施例中,图2所示的节点1布置在图1所示的计算机网络中,图5所示的屏障同步设
备6布置在节点1中,并且图6所示的同步单元62布置在屏障同步设备6中。 在第五实施例中,作为通过采用递归倍增的成对交换执行的屏障同步中的下一级
的控制寄存器822被设置为控制寄存器622的目的地寄存器。以这种方式,如同第一实施
例中那样,可以执行通过分发实现的屏障同步。 在第五实施例中,通过与图7所示的处理流程相同的处理流程来执行屏障同步。 然而,在第五实施例中,如从图20可以清楚的那样,同步单元62的控制器621没有在图7 的Sll中,在第一级和最后级上设置同一控制寄存器622。 例如,关于组a的节点#1,在第一级上,为了指定下一级上的目的地,使用目的地 寄存器。另一方面,同样在最后级上,为了指定组b的节点#5作为目的地,使用目的地寄存器。因此,在第一级和最后级上,使用同一寄存器。为此,在第一级和最后级上,不指定同一 控制寄存器622。更具体地说,在图20中,在第一级和最后级上,指定不同的控制寄存器号 #1和#4。这也适用于组a的节点#2。 当确定组a和组b时,作为图20中的节点ftl和ft2工作的节点不是固定的。因此, 在第一级和最后级上,防止设置同一控制寄存器622。 在S19中,即使在屏障同步的最后级上,当在控制寄存器622的目的地寄存器中指 定通信目的地时,也执行通信。在采用递归倍增的成对交换中存在这样的节点,其中在不同 级上建立屏障同步。为此,即使在建立屏障同步之后,也存在与另一节点通信的节点。因此, 由于存在不能在第一级和最后级上设置同一控制寄存器622的节点,所以在第一级和最后 级上不设置同一控制寄存器622。 图20示出通过采用递归倍增的成对交换实现的屏障同步处理中级间的同步信号 的流动。 在图20中,关于组a的节点#1,同步信号如下所示地流动。更具体地说,同步信号 到达节点#1,在级#1上,将同步信号传送到节点#1。级#2上的同步信号从组b的节点#5 输出并且到达节点#1。当同步信号到达节点#1时,在级#2上,将同步信号从节点#1传送 到节点#1和节点#2。级#3上的同步信号从节点#2输出并且到达节点#1。当同步信号到 达节点#1时,在级#3上,将同步信号从节点#1传送到节点#1和节点#4。级#4上的同步 信号从节点#3输出并且到达节点#1。当同步信号到达节点#1时,在级#4上,确定建立了 同步,将同步信号从节点#1输出,并且将同步信号传送到组b的节点#5。
同样在节点#2到#4中,如图20所示,通过与上述几乎相同的方式,在级#4上,建 立了同步,并且输出同步信号。 另一方面,关于组b的节点#5,同步信号如下所示地流动。更具体地说,在级#1 上,将同步信号从节点#5传送到节点#1。其后,在级#2到#4上,由于没有同步信号被输入 到节点#5,因此执行如上所述相同的操作。在级#5上,当来自节点#1的同步信号被输入到 节点#5时,确定建立了同步,并且从节点#5输出同步信号。同样在节点恥中,执行与节点 #5中几乎相同的操作。以这种方式,执行通过采用递归倍增的成对交换实现的屏障同步。
第六实施例涉及归约运算装置,其在执行通过采用递归倍增的成对交换实现的屏 障同步时执行归约运算。 第六实施例包括与第二实施例相同的构造。更具体地说,在第六实施例的构造中, 图2所示的节点1布置在图1所示的计算机网络中,图9所示的归约运算装置8布置在节 点1中,并且使用图10所示的归约运算装置8。 在第六实施例中,作为以通过采用递归倍增的成对交换实现的屏障同步执行的归 约运算中的下一级的控制寄存器822被设置为控制寄存器822的目的地寄存器。以这种方 式,如同第二实施例中那样,可以执行以通过采用递归倍增的成对交换实现的屏障同步的 归约运算。 在第六实施例中,通过与图13所示的处理流程相同的处理流程来执行归约运算。 然而,同样在第六实施例中,如同第五实施例中那样,在Sll中,在第一级和最后级上设置 同一控制寄存器822。在S19中,即使在屏障同步的最后级上,当在控制寄存器822的目的 地寄存器中指定了通信目的地时,也执行通信。
21
在第六实施例中,在通过采用递归倍增的成对交换实现的屏障同步的同时执行归 约运算的处理中级间的同步信号的流动与图20中相同。以这种方式,在通过采用递归倍增 的成对交换执行屏障同步的同时,执行归约运算。
第七实施例涉及屏障同步设备,其蝶式执行屏障同步。 图21示出计算机系统的构造,其中计算机系统包括根据第七实施例的屏障同步 设备并且由多处理器(多处理器核)构成。图22示出图21的计算机系统中的屏障同步设 备。 在第七实施例中,屏障同步设备6A不像第一实施例中那样布置在每个处理器核 10中,而是独立于处理器核来进行布置。更具体地说,在第七实施例中,多个处理器核10通 过总线9彼此连接,并且屏障同步设备6A连接到总线9。以这种方式,多个处理器核10通 过总线9连接到屏障同步设备6A。替代总线9,可以使用各种网络。 在第七实施例中,屏障同步设备6A彼此不通信。为此,屏障同步设备6A不像第一 实施例中那样包括接收装置61和传送装置63。更具体地说,根据第七实施例的屏障同步设 备6A具有通过省略根据图6所示的第一实施例的屏障同步设备6中的接收装置61和传送 装置63所获得的构造。对此替代,多个处理器核10和屏障同步设备6A中的每个包括总线 接口。所有输入信号和所有输出信号通过总线接口进行输入或输出。 在第七实施例中,对于连接到屏障同步设备6A的处理器核10中的每个,对应的控
制寄存器622被预先确定在屏障同步设备6A中。以这种方式,例如,当由四个处理器核10
执行屏障同步时,可以通过与第一实施例的图4中相同的方式来执行屏障同步。结果,如同
屏障同步设备6A布置在处理器核10中的情况那样,可以执行屏障同步。 在第七实施例中,在同一屏障同步设备6A中存在与多个处理器核10对应的多个
控制寄存器622。因此,多个屏障同步设备6之间的广播不是必需的。对此替代,控制器621
参考多个控制寄存器622。 第八实施例涉及归约运算装置,其蝶式执行屏障同步。 在第八实施例中,替代第七实施例中的屏障同步设备6A,布置了归约运算装置 8B。 图23示出图21的计算机系统中的根据第八实施例的归约运算装置。
在第八实施例中,归约运算装置8B被布置成独立于处理器核10中的每个。归约 运算装置8B不如同第一实施例所述那样包括接收装置81和传送装置83。更具体地说,根 据第八实施例的归约运算装置8B具有通过省略根据图10所示的第二实施例的归约运算装 置8中的接收装置81和传送装置83所获得的构造。另外,由于根据第八实施例的归约运 算装置8B在某个归约运算中执行相同算术运算,因此归约运算装置8B具有通过省略图10 所示的归约运算装置8中的多路分离器846所获得的构造。另一方面,根据第八实施例的归 约运算装置8B的计算机845具有与图10中的归约运算装置8的计算机845相同的构造。
在第八实施例中,对于处理器核10中的每个,由处理器核10使用的控制寄存器 822被预先确定。以这种方式,当由四个处理器核IO执行通过屏障同步实现的归约运算时, 可以通过与第二实施例的图12中相同的方式来执行通过屏障同步实现的归约运算。结果, 如同归约运算装置8B布置在处理器核10中的构造那样,可以执行通过屏障同步实现的归 约运算。
在第八实施例中,多个归约运算装置8B之间的广播不是必需的。根据本发明的实 施例,在屏障同步设备以及执行屏障同步的数据处理设备和方法中,由于在参考第一同步 信号进行同步之后传送第二同步信号,因此可以执行屏障同步。 依赖于设置条件,在屏障同步设备中,可以改变在每级表示进程到达屏障点的信 号的目的地。以这种方式,可以消除使用软件来执行目的地改变操作。因此,可以消除使用 CPU和存储器来执行改变操作,并且可以消除每级上的数据传输。 由于在每级上表示进程到达屏障点的信号的指示被设置在屏障同步设备中,因此
可以消除通过例如开关来改变目的地的需要。结果,例如,即使包括屏障同步设备的每个节
点通过网络而彼此连接,也可以避免节点之间的网络构造受限于多级连接网络。 由于屏障同步设备可以对n个第一同步信号进行同步,因此可以同时执行针对不
同节点的多个屏障同步操作。 根据本发明的实施例,在归约运算装置、执行用于执行屏障同步的归约运算的数 据处理设备和方法中,可以获得与上面的屏障同步设备相同的效果。以这种方式,可以在进 行屏障同步的同时执行归约运算。 虽然示出和描述了本发明的一些优选实施例,但是本领域的技术人员应当理解, 可以对这些实施例进行改变而不背离本发明的原理和精神,本发明的范围在权利要求及其 等价物中进行限定。
权利要求
一种屏障同步设备,其包括接收装置,其在接收到第一同步信号时将所述第一同步信号传送到同步装置,其中根据包括屏障同步算法和执行条件的设置条件在所述第一同步信号中预先设置了传送目的地;所述同步装置,其对根据所述设置条件预先设置的n(n是正整数)个第一同步信号进行同步,并且在建立同步之后,指示对根据所述设置条件预先设置了传送目的地的m(m是正整数)个第二同步信号的传送;以及传送装置,其在从所述同步装置接收到表示所述传送指示的传送指示信息时,将所述第二同步信号传送到预先设置的m个传送目的地。
2. 根据权利要求1所述的屏障同步装置,其中所述屏障同步算法是蝶式算法。
3. 根据权利要求1所述的屏障同步装置,其中所述屏障同步算法是分发算法。
4. 根据权利要求1所述的屏障同步装置,其中所述屏障同步算法是采用递归倍增算法 的成对交换。
5. 根据权利要求1所述的屏障同步装置,其中所述同步装置对多对同步信号进行同 步,其中每对包括所述n个第一 同步信号。
6. —种屏障同步处理系统,其包括输入装置,其输入包括屏障同步算法和执行条件的设置条件; 屏障同步设备,其执行屏障同步;以及设置处理器,其根据从所述屏障同步设备中的所述输入装置输入的所述设置条件,在 所述屏障同步设备中设置第一同步信号的传送目的地和第二同步信号的传送目的地,其中 所述屏障同步设备进一步包括接收装置,其在接收到第一同步信号时将所述第一同步信号传送到同步装置,其中根 据所述设置条件在所述第一同步信号中预先设置了所述传送目的地;同步装置,其对根据所述设置条件预先设置的所述n(n是正整数)个第一同步信号进 行同步,并且在建立同步之后,指示对根据所述设置条件预先设置了传送目的地的m(m是 正整数)个第二同步信号的传送;以及传送装置,其在从所述同步装置接收到所述传送的指示时,将所述第二同步信号传送 到预先设置的所述m个传送目的地。
7. —种屏障同步方法,其包括 输入包括屏障同步算法和执行条件的设置条件;根据所输入的设置条件,在屏障同步中设置第一同步信号的传送目的地和第二同步信 号的传送目的地;当接收到所述第一同步信号时,传送所述第一同步信号,其中根据所输入的设置条件 在所述第一同步信号中预先设置了所述传送目的地;综合根据所述设置条件预先设置的所述n(n是正整数)个第一同步信号;在建立同步之后,指示对根据所述设置条件预先设置了传送目的地的m(m是正整数) 个第二同步信号的传送;以及当接收到所述第二同步信号的传送指示时,将所述第二同步信号传送到预先设置的所 述m个传送目的地。
8. 根据权利要求7所述的屏障同步方法,其包括在建立所述n个第一同步信号之间的同步之后,指示预定归约运算;以及当接收到所述归约运算的指示时,执行预先设置的所述归约运算。
9. 根据权利要求1所述的屏障同步设备,其中在建立所述n个第一同步信号的同步之后,所述同步装置进一步指示预定归约运算; 所述传送装置进一步包括 存储装置,其存储输入数据,以及计算机,其在从所述同步装置接收到所述预定归约运算的指示时,通过使用存储在所 述存储装置中的所述数据来执行预先设置的所述归约运算。
10. 根据权利要求6所述的屏障同步系统,其中所述屏障同步设备在进程之间进行屏障同步的同时执行归约运算;所述设置处理器根据从所述归约运算装置中的所述输入设备输入的所述设置条件,在 所述归约运算装置中设置所述第一同步信号的传送目的地和所述第二同步信号的传送目 的地;在建立所述n个第一同步信号的同步之后,所述屏障同步设备的所述同步装置指示预 定归约运算;其中所述屏障同步设备进一步包括 存储装置,其存储输入数据,以及计算机,其在从所述同步装置接收到所述预定归约运算的指示时,通过使用存储在所 述存储装置中的所述数据来执行预先设置的所述归约运算。
全文摘要
本发明公开了一种屏障同步设备、屏障同步系统以及屏障同步方法,其中该屏障同步设备包括接收装置,其在接收到第一同步信号时将第一同步信号传送到同步装置,其中根据包括屏障同步算法和执行条件的设置条件而在所述第一同步信号中预先设置了传送目的地。同步装置对根据设置条件预先设置的n个第一同步信号进行同步,其中n为正整数,并且在建立同步之后,指示对根据设置条件预先设置了传送目的地的m个第二同步信号的传送,其中m为正整数。当从同步装置接收到表示传送指示的传送指示信息时,传送装置将第二同步信号传送到预先设置的m个传送目的地。
文档编号G06F15/173GK101739381SQ20091022476
公开日2010年6月16日 申请日期2009年11月17日 优先权日2008年11月19日
发明者井上智宏, 安岛雄一郎, 平本新哉 申请人:富士通株式会社