CN102402421B - 归约运算装置、处理器和计算机系统 - Google Patents

归约运算装置、处理器和计算机系统 Download PDF

Info

Publication number
CN102402421B
CN102402421B CN201110201689.0A CN201110201689A CN102402421B CN 102402421 B CN102402421 B CN 102402421B CN 201110201689 A CN201110201689 A CN 201110201689A CN 102402421 B CN102402421 B CN 102402421B
Authority
CN
China
Prior art keywords
data
reduction operations
arithmetic
type
instruction
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
CN201110201689.0A
Other languages
English (en)
Other versions
CN102402421A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN102402421A publication Critical patent/CN102402421A/zh
Application granted granted Critical
Publication of CN102402421B publication Critical patent/CN102402421B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/522Barrier synchronisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)

Abstract

归约运算装置检测并行处理的归约算术运算中的运算类型或者数据类型的不对应。归约运算装置被输入多个同步信号和数据,其设置对应于归约运算的下一个阶段的多个输入同步信号和多个数据的每一个发送目的地,并且执行归约运算。在同步被建立之后,归约运算装置中的同步单元检测包括在归约运算的指令中的运算类型或者数据类型的不对应,并且控制算术单元的算术运算。

Description

归约运算装置、处理器和计算机系统
技术领域
在此讨论的本发明的实施例涉及一种归约运算装置、处理器和计算机系统。
背景技术
归约运算是针对由多个进程持有的数据的算术运算。作为代表性归约运算,例如,数据的总和运算以及数据中的最大值和最小值的计算运算是公知的。有两种归约运算的情况。一种情况是在特定进程上保持运算的结果,第二种情况是在所有进程上保持运算的结果。可以利用与栅障同步(barrier synchronization)相同的算法,执行归约运算。
栅障同步是用于在并行处理的多个进程之间实现同步的方法。在栅障同步中,设置同步点,即,栅障点。当进程的处理到达栅障点时,执行栅障同步的进程的处理停止。此外,当被并行处理并且执行栅障同步的所有进程到达栅障点时,被停止的进程的处理重新开始。
当归约运算在执行并行算术运算的多个节点之间执行时,在每个节点上提供归约运算装置是高效的。归约运算装置可以执行若干种类型的运算进程。归约运算装置判断数据同步是否被建立,并且当同步被建立时,执行特定运算进程。
尽管归约运算是延伸到多个节点中的进程,并且通过在每个节点上开始归约运算来执行归约运算,由于每个节点单独地指定归约运算的运算类型和数据类型,所以可能使运算类型和数据类型在各节点之间不对应。为了检测不对应,需要在各节点之间传送运算类型和数据类型,并且确认另一个节点指定的运算类型和数据类型。
当节点的CPU(中央处理单元)利用软件执行归约运算时,建议软件检测运算类型和数据类型的不对应。
[专利文献]
[专利文献1]日本专利公开2010-122848号公报
[专利文献2]日本专利公开3-098152号公报
[非专利文献]
[非专利文献1]作者:PROST J.-P.,TREUMANN R.,HEDGES R.,JIAB.,KONIGES A.E.,和WHITE A.,文献:″Towards a High-Performanceand Robust Implementation of MPI-IO on top of GPFS″,published byNational Technical Information Service U.S.Department of commerce,UCRL-LC-137128,January11,2000。
[非专利文献2]作者:Patrick Ohly, Werner Krotz-Vogel,文献:″Automated MPI Correctness Checking What if there was a magicoption?″,published by The8th LCI International Conference on High-Performance Clustered Computing,2007。
发明内容
在对节点独立地提供归约运算装置的结构中,当节点之间的运算类型和数据类型不对应时,处理未完成。因此,引起中止,或者返回错误的计算结果。此外,在这种情况下,调试存在困难。
在利用软件执行归约运算的结构中,通过在节点之间,除了归约运算数据还传递运算类型和数据类型,检测不对应。因此,为了完成归约运算,需要等待传递运算类型和数据类型的完成。因此,归约运算需要较长的处理时间。
因此,本发明一个方面的目的是:提供一种硬件检测节点之间的运算类型和数据类型的不对应的归约运算装置、处理装置和计算机系统。
根据本发明的一方面,一种归约运算装置,被输入多个分组,多个分组中的每一个包括同步信号和数据,归约运算装置对输入的多个数据执行归约运算。归约运算装置包括:同步单元,等待多个同步信号的输入并输出对输入的多个数据进行归约运算的指令,在建立多个同步信号之间的同步之后,命令将归约运算的算术结果输出到与归约运算的下一个阶段相对应的m个发送目的地,m>1且m是整数;算术单元,在同步被建立的n个输入的数据之间执行算术运算,n>1且n是整数;存储单元,存储数据和算术结果;发送单元,将算术结果和多个同步信号发送到由同步单元指定的m个发送目的地;以及接收单元,接收分组,将多个同步信号和多个发送目的地发送到同步单元,并将输入的多个数据发送到存储单元,其中,同步单元接收多个同步信号和包括在归约运算的指令中的运算类型和数据类型至少之一,建立同步之后,在n个运算类型或者数据类型之间进行比较,当n个运算类型或者数据类型不匹配时,将指示不对应的信号而不是算术结果发送到m个发送目的地,并且当n个运算类型或者数据类型匹配时,执行归约运算的指令。
此外,根据本发明的另一方面,一种处理器,包括:处理单元;以及被输入多个分组的归约运算装置,多个分组中的每一个包括同步信号和数据,归约运算装置对输入的多个数据执行归约运算。归约运算装置包括:同步单元,等待多个同步信号的输入并输出对输入的多个数据进行归约运算的指令,在建立多个同步信号之间的同步之后,命令将归约运算的算术结果输出到与归约运算的下一个阶段相对应的m个发送目的地,m>1且m是整数;算术单元,在同步被建立的n个输入的数据之间执行算术运算,n>1且n是整数;存储单元,存储数据和算术结果;发送单元,将算术结果和多个同步信号发送到由同步单元指定的m个发送目的地;以及接收单元,接收分组,将多个同步信号和多个发送目的地发送到同步单元,并将输入的多个数据发送到存储单元,其中,同步单元接收多个同步信号和包括在归约运算的指令中的运算类型和数据类型至少之一,建立同步之后,在n个运算类型或者数据类型之间进行比较,当n个运算类型或者数据类型不匹配时,将指示不对应的信号而不是算术结果发送到m个发送目的地,并且当n个运算类型或者数据类型匹配时,执行归约运算的指令。
此外,根据本发明的另一方面,一种计算机系统,包括:经由网络连接的多个处理器,每个处理器包括:处理单元;以及被输入多个分组的归约运算装置,多个分组中的每一个包括同步信号和数据,归约运算装置对输入的多个数据执行归约运算。归约运算装置包括:同步单元,等待多个同步信号的输入并输出对输入的多个数据进行归约运算的指令,在建立多个同步信号之间的同步之后,命令将归约运算的算术结果输出到与归约运算的下一个阶段相对应的m个发送目的地,m>1且m是整数;算术单元,在同步被建立的n个输入的数据之间执行算术运算,n>1且n是整数;存储单元,存储数据和算术结果;发送单元,将算术结果和多个同步信号发送到由同步单元指定的m个发送目的地;以及接收单元,接收分组,将多个同步信号和多个发送目的地发送到同步单元,并将输入的多个数据发送到存储单元,其中,同步单元接收多个同步信号和包括在归约运算的指令中的运算类型和数据类型至少之一,建立同步之后,在n个运算类型或者数据类型之间进行比较,当n个运算类型或者数据类型不匹配时,将指示不对应的信号而不是算术结果发送到m个发送目的地,并且当n个运算类型或者数据类型匹配时,执行归约运算的指令。
在一个实施例中,归约运算装置还包括用于同步单元的屏蔽寄存器,当屏蔽寄存器指示有效值时,屏蔽寄存器禁止n个运算类型或者数据类型之间的比较和归约运算的指令的执行。
在一个实施例中,在归约运算装置中,经由发送单元,同步单元发送指示不对应的信号和发生不对应的同步单元的标识号。
在一个实施例中,在归约运算装置中,同步单元还包括:多个控制寄存器,每一个控制寄存器存储运算类型和数据类型至少之一、同步信号以及发送目的地;以及控制单元,基于输入的多个同步信号,判断同步是否被建立,将包括在归约运算的指令中的输入的运算类型和输入的数据类型至少之一与多个控制寄存器中的每一个中存储的运算类型和存储的数据类型至少之一进行比较,并且基于比较的结果检测不对应。
在一个实施例中,在归约运算装置中,同步单元在同步被建立之后参考屏蔽寄存器,并且当屏蔽寄存器指示有效值时,禁止n个运算类型或者数据类型之间的比较以及归约运算的指令的执行。
在一个实施例中,在归约运算装置中,当比较的结果不匹配时,同步单元将指示不对应的信号而不是算术结果发送到输入所输入的多个数据的至少一个发送目的地。
附图说明
图1是例示根据本发明实施例的计算机系统的框图;
图2是例示根据实施例的节点(处理装置)的框图;
图3是例示根据实施例的栅障同步的说明的图;
图4是例示利用根据图3的四个进程之间的蝴蝶运算(butterny)进行栅障同步的例子的说明的图;
图5是例示根据实施例的归约运算装置的框图;
图6是例示归约运算装置的第一实施例的框图;
图7是例示根据图5和图6的归约运算装置中的分组格式的图;
图8是例示根据图6的归约运算进程的第一流程图的图;
图9是例示根据图6的归约运算进程的第二流程图的图;
图10是例示根据图1到图6的归约运算进程的图;
图11是例示根据图6到图9的归约运算中的不对应的检测进程的图;
图12是例示根据图5的归约运算进程的第二实施例的框图;
图13是例示根据图12的归约运算装置的框图;
图14是例示根据图13的归约运算进程的第一流程图的图;
图15是例示根据图13的归约运算进程的第二流程图的图;以及
图16是例示第三实施例的分组的说明图。
具体实施方式
下面,将以如下顺序解释各实施例:计算机系统、根据第一实施例的归约运算装置的结构、根据第一实施例的归约运算进程、根据第二实施例的归约运算装置的结构、根据第二实施例的归约运算进程、根据第三实施例的归约运算进程,但是所公开的计算机系统、节点和归约运算装置并不限于实施例。
(计算机系统)
图1示出根据本发明实施例的计算机系统的框图。图2示出图1所示节点的框图。如图1所示,计算机系统包括多个节点1和连接这些节点1的网络2。在图1所示的实施例中,四个节点#1至#4连接到计算机网络2。经由网络2连接的多个节点1执行并行处理(阵列处理)。例如,纵横式交换机(cross-bar switch)被用作网络2。
如图2所示,多个节点中的每一个都具有算术处理单元(CPU:中央处理单元)3、存储器4A、系统控制器5、归约运算装置6以及输入和输出装置4B。系统控制器5控制节点1的整个操作。即,系统控制器5控制CPU3、存储器4A、归约运算装置6和输入和输出装置4B。经由系统控制器5,CPU3在输入和输出装置4B之间执行所需数据的发送和接收。即,输入和输出装置4B对CPU3设定包括栅障同步的算法的设置条件和执行条件。此外,如果需要,输入和输出装置4B输出从CPU3输出的数据。
CPU3经由系统控制器5将指示开始归约运算的信号发送到归约运算装置6,并且从归约运算装置6接收指示完成归约运算的信号。此外,根据从输入和输出装置4B输入到归约运算装置6的设置条件,CPU3设定发送目的地、运算类型和数据类型。
归约运算装置6执行归约运算,同时实现栅障同步。归约运算装置6根据设置条件经由网络2与另一个节点1的归约运算装置6通信,并且执行包括栅障同步的归约运算。
此外,CPU3经由系统控制器5将所需数据发送到存储器4A/从存储器4A接收所需数据。CPU3将数据写到存储器4A上并从存储器4A读取数据。这些数据是在归约运算装置中进行归约运算使用的数据,下面将进行说明。
在此,下面将简要解释归约运算装置的栅障同步。图3例示3个进程#0至#2之间的栅障同步的说明图。图4例示指示四个进程#0至#3之间栅障同步的例子的说明图。
如图3所示,当各进程的执行到达各进程被同步的点(被称为栅障点)时,执行栅障同步操作的多个进程#0至#2停止执行其自己的进程。即,当一个或者两个进程#0至#2本身到达栅障点时,多个进程#0至#2中的每一个等待,直到其它进程到达栅障点。
当执行栅障同步操作的所有进程都到达栅障点时(被称为处于建立栅障同步的定时),执行栅障同步操作的多个进程#0至#2重新开始执行其自己的进程。因此,可以在执行并行处理的多个进程之间同步并行处理。
实现栅障同步的一种算法是蝴蝶算术运算。下文中,将蝴蝶算术运算简称为“蝴蝶运算”。蝴蝶运算将进程分割为多个阶段,并且在每个阶段,被分割的进程与其它进程执行信号通信。在实施例中,蝴蝶运算被用作栅障同步的算法。
图4例示在四个进程#0至#3之间,蝴蝶运算执行栅障同步的例子。在图4中,例如,通过将数字0加到圆内表示进程0,并且相似地表示其它进程#1至#3。当用“k”表示阶段号,且用“i”表示其自己的节点1或者其自己的进程的进程号时,指示进程在每个阶段到达栅障点的信号的目的地由“i XOR(异或)2^(k-1)”给出。当进程号N是2的幂时,用log(N)给出阶段号。
例如,集中说明图4中的进程#0,如下所述地确定目的地。在阶段#1,从进程#0输出的并且指示进程到达栅障点的信号的目的地是进程#1。另一方面,在阶段#2,进程#1接收从进程#0输出的并且指示进程到达栅障点的信号,而从进程#0输出的并且指示进程到达栅障点的信号的目的地是进程#2。
可以唯一确定这些信号的目的地和发送源,从而利用设置条件确定栅障同步的算法和执行条件,即,进程配置。在实施例中,栅障同步的算法是蝴蝶运算,而执行条件是四个进程,因此,可以确定信号的目的地,如图4所示。
在图4所示的例子中,在从输入和输出装置4B输入到CPU3的设置条件中,栅障同步的算法是蝴蝶运算,并且执行条件是4个进程。此外,作为执行条件,还输入进行栅障同步(即算术运算)的阶段的数量k和每个进程(即其自己的节点)的进程数“i”。阶段的数量k指出阶段数量的最大数。
输入到CPU3的设置条件并不局限于上面描述的输入。例如,节点1中的任何一个都可以经由网络2将设置条件输入到其它节点1。连接到网络2的管理计算机可以经由网络2将设置条件输入到所有节点1。
在每个阶段,每个进程都与另一个进程传送指示进程到达栅障点的信号。例如,在图4所示的第一阶段#1中,每个进程都到达栅障同步点。进程到达栅障同步点的定时依据进程而发生变化。在蝴蝶运算网络上,到达栅障同步点的进程将信号发送到预先设置在下一个阶段上的各进程。在实施例中,蝴蝶运算网络指示图1所示的网络2。即,蝴蝶运算网络是利用蝴蝶运算执行栅障同步并且图2所示的节点1连接到其的网络。这与下面的图中相同。
在下一个阶段#2上,利用来自在蝴蝶运算网络的先前阶段#1上预先设置的进程的信号同步各进程。当各进程从另一个进程接收信号时,各进程将信号发送到在下一个阶段3上预先设置的进程。
在最后阶段#3上,利用来自在先前阶段#2上预先设置的进程的信号同步各进程。当各进程从另一个进程接收信号时,系统将在全部进程#0至#3到达栅障点时知道栅障同步被建立。此后,因为栅障同步被建立,每个进程都开始下一个运算。
(根据第一实施例的归约运算装置的结构)
图5例示根据第一实施例的归约运算装置的结构。图6例示图5中的归约运算装置的详细框图。图7例示图5和图6中使用的分组格式的说明图。图5和图6中所示的归约运算装置6被提供到构成图1和图2所示计算机网络的节点1。
归约运算装置6在进行栅障同步的同时执行归约运算。如图5所示,归约运算装置6包括:归约算术单元7、同步单元8、接收单元10和发送单元12。同步单元8包括控制单元80和多个控制寄存器82。
接收单元10从网络2接收分组,将分组中的数据传送到归约算术单元7,并且将分组中的控制信息(同步信号、运算类型、数据类型和目的地)发送到同步单元8中的控制单元80。根据来自同步单元8中的控制单元80指示分组发送的信号,发送单元12将分组发送到网络2。
同步单元8中的控制单元80从CPU3接收目的地和开始归约运算的指示,并且从接收单元10接收分组中的控制信息(同步信号、运算类型、数据类型和目的地)。同步单元8中控制单元80参考多个控制寄存器82,基于参考的结果判断栅障同步是否被建立,并且进行归约算术装置7的存储控制和运算控制以及发送单元12的发送控制。
同步单元8中的多个控制寄存器82中的每一个都对应于每一个阶段,并且用来同步、计算(arithmetic)和发送数据。即,可以通过提供多个控制寄存器82,并且每个算术运算在控制寄存器82中保持同步信号,执行栅障同步。因此,当一对算术运算由n个第一同步信号配置时,同步单元8中的控制单元80对各自由n个第一同步信号构成的多个对中的每一对执行栅障同步。在这种情况下,多个进程在一个节点运行。
归约算术单元7从接收单元10接收另一个节点的数据,并从CPU3接收输入数据。归约算术单元7包括存储单元和算术单元,如下所述。归约算术单元7将每个阶段的数据存储在存储单元中,通过算术单元在存储数据之间执行指定的算术运算,并且根据来自同步单元8的存储控制和算术控制的指示输出算术结果。
接下来,将在下面解释归约运算处理的过程。节点1的CPU3预先在控制寄存器82中设置控制信号和数据到目的地的发送目的地。例如,
CPU3基于图4所示的蝴蝶运算算法指定发送目的地。当开始归约运算时,节点1的CPU3将输入数据和归约运算开始的指示发送到归约运算装置6。在实施例中,通过来自先前阶段的控制信号和归约运算的指示,CPU3指定运算类型和数据类型。
归约运算装置6将控制信号和数据发送到由控制寄存器82中对开始点设置的目的地指定的发送目的地。接收控制信号和数据的归约运算装置6更新由发送目的地指定的控制寄存器的同步信号(由图6中的Signal表示),并且将数据写到归约算术单元7的存储单元上。同步单元8参考每个控制寄存器82,并且判断数据同步是否被建立。当判断同步被建立时,归约算术单元7执行由运算类型指定的算术运算,并且将算术运算结果和控制信号发送到由目的地指定的发送目的地。
同步单元8的控制单元80根据控制寄存器82中的同步信号判断同步是否被建立。此后,继续相同的处理。此外,当通过参考对结束点设置的控制寄存器82来建立同步时,归约运算装置6将算术运算结果写到输出数据寄存器,并且将归约算术的完成通知CPU3。
在该配置中,在实施例中,在对同步单元8指示运算开始和算术数据的情况下,CPU3指定运算类型和数据类型。同步单元8中的控制单元80检测在多个控制寄存器82中设置的运算类型和数据类型匹配还是不匹配,并且当检测到不匹配时,将不匹配通知所有节点。
因为通知到所有节点,所以即使发生不匹配,仍可以防止发生中止和返回错误算术运算结果,因此,容易进行调试操作。此外,在相关技术中,需要在节点之间分别传送算术数据中的运算类型和数据类型,并且对这些类型执行比较处理,以检测不匹配(不对应)。因此,发生开销。在实施例中,通过利用归约算术数据传送运算类型和数据类型,可以隐藏传送时间。此外,因为硬件执行检测进程,所以可以防止检测进程产生开销。此外,因为作为硬件的附加部件,仅添加用于比较运算类型和数据类型的比较器,所以可以抑制成本升高。
接下来,将根据图6详细解释图5所示的归约运算装置6。如图6所示,归约算术单元7包括:多个输入寄存器70-0至70-m、多路复用器72、交换机73、存储单元74、算术单元75、解复用器76和多个输出寄存器79-0至79-m。
同步单元8中的多个控制寄存器82-0至82-N中的每一个对应于每一组同步信号。多个控制寄存器82-0至82-N中的每一个都包括:信号寄存器84A、目的地寄存器84B、运算类型寄存器84C和数据类型寄存器84D。在图6中,加标记“Signal”表示信号寄存器84A,加标记“Destination”表示目的地寄存器84B,加标记“Op Type”表示运算类型寄存器84C,并且加标记“Data Type”表示数据类型寄存器84D。
信号寄存器84A存储关于是否从对应于控制寄存器82-0至82-N的节点或者进程接收到同步信号的信息。这样,信号寄存器84A存储指示等待同步信号的状态的信息。目的地寄存器84B存储指示作为控制寄存器82-0至82-N将同步信号发送到其的目的地的进程或者节点的信息。这样,目的地寄存器84B存储指示同步被建立之后同步信号的发送目的地的信息。
当同步信号的目的地指示另一个节点时,目的地寄存器84B存储用作发送目的地的目的地节点地址和控制寄存器号。目的地节点地址是节点的网络地址,并且被唯一确定。控制寄存器号是对控制寄存器82-0至82-N分配的号,并且在节点中被唯一确定。目的地节点地址可以是预先加到节点的节点号。控制寄存器号可以是预先加到控制寄存器82-0至82-N的号或者对号(pair number)。
通过指定目的地节点地址和控制寄存器号,确定一个节点中的一个控制寄存器。当同步信号的发送目的地是发送同步信号的节点时,目的地寄存器84b存储进程本身或者节点本身的同步单元8的控制寄存器号。
类型寄存器84C存储归约算术运算的运算类型。例如,运算类型是求和(SUM)、最大值算术(MAX)和最小值算术(MIN)。数据类型寄存器84D存储归约运算的数据类型。例如,数据类型指示是整数数据还是浮点数据、是双精度还是单精度以及字节数。
接收单元10经由网络2连接到另一个节点,并且从该另一个节点接收包括同步信号的分组。如图7所示,分组包括:数据、目的地(发送目的地地址和发送目的地控制寄存器号)、数据类型以及运算类型的格式。当接收单元10经由网络2从另一个节点的归约运算装置6接收分组时,接收单元10从收到的分组中拾取同步信号、运算类型、数据类型、数据和目的地,并将同步信号、运算类型、数据类型和目的地发送到同步单元8中的控制单元80。
目的地指示指出同步信号的目的地的控制寄存器的控制寄存器号和目的地节点地址。目的地确定对应于拾取的目的地节点地址的节点和对应于拾取的控制寄存器号的控制寄存器80-0至80-N。此外,接收单元10将分组中的数据输出到多路复用器72。
接下来,将解释归约算术单元7。归约算术运算的第一目标数据被输入到输入数据寄存器70-0至70-m,作为来自CPU3的写数据。从对应于来自控制单元80的读地址的输入数据寄存器70-0至70-m读取读数据(写数据),并且将其输入到多路复用器72。从由接收单元10经由网络2收到的分组中拾取归约算术运算的第二目标数据,并且将其输入到多路复用器72。
然而,归约算术运算的结果从解复用器846输出到输出数据寄存器79-0至79-m,作为写数据,而从输出数据寄存器79-0至79-m输出到CPU3,作为读数据。此外,归约算术运算的结果被从解复用器846输出到发送单元12,然后,作为分组,从发送单元12发送到网络2。
提供多个输入数据寄存器70-0至70-m和多个输出数据寄存器79-0至79-m。输入数据寄存器70-0至70-m中的每一个对应于控制寄存器82-0至82-N。此外,输出数据寄存器79-0至79-m中的每一个对应于控制寄存器82-0至82-N。
来自CPU3的写地址指定写写数据的输入数据寄存器70-0至70-m。来自控制单元80的读地址指定读取读数据的输入数据寄存器70-0至70-m。例如,输入数据寄存器70-0至70-m的读地址对应于由接收单元10收到的分组中的目的地指定的控制寄存器82-0至82-N。基于控制寄存器82-0至82-N的控制寄存器号创建读地址。
来自控制单元80的写地址指定写写数据的输出数据寄存器79-0至79-m。输出数据寄存器79-0至79-m的写地址对应于由写数据的归约算术运算使用的控制寄存器82-0至82-N。基于控制寄存器82-0至82-N的控制寄存器号,创建写地址。来自CPU3的读地址指定读取读数据的输出数据寄存器79-0至79-m。
根据来自控制单元80的输入选择的指示,多路复用器72选择来自输入数据寄存器70-0至70-m的数据和来自接收单元10的数据之一。选择的数据经由交换机73输入到存储单元74或者算术单元75。控制单元80对多路复用器842发出输入选择的指令,以在从接收单元10输入同步信号和目的地的情况下,选择来自接收单元10的数据,并在上述情况之外的情况下,选择来自输入数据寄存器70-0至70-m的读数据。
根据来自控制单元80的输入/输出选择的指令,交换机73将来自多路复用器72或者算术单元75的输入输入到存储单元74或者算术单元75。控制单元80控制交换机73,以在数据是从多路复用器72输入的情况下,选择来自多路复用器842的数据,而在上述情况之外的情况下,选择来自算术单元75的数据。此外,控制单元80控制交换机73,以在同步被建立的情况下,将输入数据输出到算术单元845,而在上述情况之外的情况下,将输入数据输出到存储单元844。
存储单元74存储经由多路复用器72和交换机73输入的数据。这样,在归约算术运算期间,存储单元74存储数据。例如,存储单元74的存储容量是(控制寄存器82-0至82-N的数量)×(数据的位数)。存储单元74将归约算术运算期间的数据存储在由来自控制单元80的写地址指定的地址中。存储单元74的写地址对应于归约算术运算使用的控制寄存器82-0至82-N。控制单元80基于控制寄存器82-0至82-N的控制寄存器号创建写地址。
根据读地址,控制单元80将存储在存储单元74中的归约算术运算期间的数据读入算术单元75。到存储单元74的读地址对应于归约算术运算使用的控制寄存器82-0至82-N。控制单元80基于控制寄存器82-0至82-N的控制寄存器号创建读地址。
算术单元75在存储单元74中的等待数据、与经由多路复用器72输入的分组中的数据或者同步被建立时的算术运算的先前结果之间,执行控制单元80所指令的算术运算。即,算术单元75根据来自控制单元80的算术指令执行指定的算术运算,并且将算术运算的结果输出到解复用器76和交换机73。
例如,算术单元75包括:加法器(ADD)、逻辑电路(Logical)、最大值计算器(MAX)和最小值计算器(MIN)。
算术单元75在从存储单元74输入的数据(第一数据)、从输入数据寄存器70-0至70-m输入的数据以及来自由接收单元10接收的分组的数据,或者算术单元75在先前阶段执行的算术运算的结果(第二数据)之间,执行所指令的算术运算。控制单元80基于指示运算类型的类型寄存器84C中的数值创建算术指令。
根据来自控制器80的输出选择的指令,解复用器76将来自算术单元75的输入输出到输出数据寄存器79-0至79-m或者发送单元12。控制单元80控制解复用器76,以在完成归约算术运算之前,将来自算术单元75的数据输出到发送单元12,而当归约算术运算完成时,将来自算术单元75的数据输出到输出数据寄存器79-0至79-m。
此外,在同步被建立后,控制单元80指令将第二同步信号发送到发送单元12。在图6中,该指令由“分组发送指令”表示。此外,控制单元80对归约算术单元84指令预定归约算术运算。当收到第二同步信号的发送指令时,发送单元12利用第二同步信号将算术单元75中的归约算术运算的结果发送到网络2。
(归约算术运算的第一实施例)
图8和图9例示根据实施例的归约算术运算的处理流程的图。
(S1)在执行归约算术运算之前,CPU3将发送目的地写到归约运算装置的同步单元8中的每一个控制寄存器82-0至82-N中的目的地寄存器84B(由图6中的标记“目的地”表示)。即,CPU3设置与用诸如蝴蝶运算的归约算术运算的算法对目的地寄存器84B确定的下一阶段相对应的节点地址和控制寄存器号。作为节点地址,仅写另一个节点或者仅写其自己的节点。
(S2)CPU3将输入数据发送到输入数据寄存器70-0至70-m,并将指示开始归约算术运算的信号发送到同步单元8,从而开始归约算术运算。指示开始归约算术运算的信号包括输入寄存器号、对应于第一阶段的控制寄存器号、运算类型和数据类型。
(S3)当接收到指示开始归约算术运算的信号时,同步单元8的控制单元80将运算类型、数据类型写到由指示开始归约算术运算的信号指定的控制寄存器号的控制寄存器中的运算类型寄存器84C和数据类型寄存器84D。在图6中,加标记“Op Type”表示运算类型寄存器84C,并加标记“Data Type”表示数据类型寄存器84D。
(S4)在写控制寄存器之后,同步单元8的控制单元80读取由指示开始归约算术运算的信号指定的控制寄存器82-0至82-N中的目的地寄存器(Destination)84B中的值。
(S5)控制单元80判断目的地寄存器84B的值是指定其自己的节点还是指定另一个节点。当目的地寄存器84B的值指定另一个节点时,控制单元80将数据和指示发送分组的信号发送到发送单元12。当第一阶段被指定到指定的控制寄存器时,发送到发送单元12的数据是存储在输入数据寄存器70-0中的值。此外,当随后的阶段被指定到指定的控制寄存器时,发送到发送单元12的数据是来自算术单元75的算术运算结果。当输入数据寄存器70-0中的值被发送到发送单元12时,控制单元80对算术单元75指令旁路(bypass)作为算术指令。如图7所示,来自控制单元80的指示发送分组的信号包括:作为发送目的地的节点地址、发送目的地控制寄存器号、运算类型和数据类型。基于数据和上面如图7所示指示发送的信号,发送单元12创建分组,并将分组发送到网络2。
(S6)当控制单元80判断目的地寄存器84B的值已经指定其自己的节点时,控制单元80读取由目的地寄存器84B指定的控制寄存器的信号寄存器84A中的值,以将同步信号发送到其自己的同步单元8。此外,控制单元80读取运算类型寄存器84C和数据类型寄存器84D中的值,以检测不对应。
(S7)控制单元80根据信号寄存器84A的值判断同步是否被建立。当值“1”被设置到信号寄存器84A时,控制单元80判断同步被建立。然而,当值“1”未被设置到信号寄存器84A时,控制单元80判断同步未被建立。
(S8)当控制单元80判断同步未被建立时,控制单元80将值“1”写到信号寄存器84A,并将运算类型和数据类型分别写到运算类型寄存器84C和数据类型寄存器84D。运算类型和数据类型的值是分组中的值,或者控制寄存器在先前时间的值。即,当刚执行步骤16、S5和S6时,被写的值是步骤S16中的值,或者是在步骤S5中从控制寄存器读取的运算类型和数据类型的值。相反,当刚执行了步骤S10和S11中的处理时,被写的值是在步骤S10中接收的分组中的值。
(S9)控制单元80将数据存储到数据存储单元74的对应于控制寄存器的地址位置。当控制寄存器82-0指示第一阶段时,作为数据,存储输入寄存器70-0中的值,而当控制寄存器指示随后阶段时,存储先前阶段的算术结果。
(S10)控制单元80等待接收分组。当接收单元10从网络2接收分组时,接收单元10从收到的分组中拾取数据、同步信号、目的地、运算类型和数据类型,并将它们发送到多路复用器72和同步单元8。
(S11)当控制单元80接收来自接收单元10的信号时,控制单元80读取由目的地指定的控制寄存器的信号寄存器84A中的信号、运算类型寄存器84C中的运算类型和数据类型寄存器84D中的数据类型。此外,控制单元80返回步骤S7中的处理,并且重复从步骤S7到步骤S11的处理,直到同步被建立。
(S12)当在步骤S7的判断中,控制单元80判断同步被建立时,控制单元80检测运算类型和数据类型的不对应。通过将控制寄存器82-0至82-m的运算类型寄存器84C中的运算类型和数据类型寄存器84D中的数据类型与运算类型和数据类型进行比较,执行不对应的检测。当刚执行步骤16、S5和S6时,运算类型和数据类型的值是在步骤S16或者步骤S5从控制寄存器读取的运算类型和数据类型的值。相反,当刚执行步骤S10和S11中的处理时,运算类型和数据类型的值是在步骤S10中接收的分组中的值。当通过比较,在被比较的值中,检测到值不匹配,或者检测到不对应值时,控制单元80判断发生不对应。同时,当通过比较检测到值匹配时,控制单元80判断没有发生不对应。
(S13)当判断没有发生不对应时,执行算术运算。算术运算的目标数据是下述(1)、(2)和(3)之一:(1)当控制寄存器对应于紧接在第一阶段之后的下一个阶段时,输入数据寄存器70-1中的值;(2)当控制寄存器对应于之后阶段,并且建立同步的因素是来自分组的同步信号时,分组中的数据;和(3)当建立同步的因素是来自其自己的同步单元的同步信号时,先前阶段的算术结果。算术单元75在上面的(1)、(2)和(3)中的任何一个数据与存储单元74的与建立了同步的控制寄存器相对应的地址中的数据之间执行算术运算。
(S14)相反,当判断发生不对应时,控制单元80将指示不对应的值写到控制寄存器82-2至82-m中的算术运算寄存器84C和数据类型寄存器84D。
(S15)控制单元80判断同步被建立的控制寄存器是否对应于最终阶段。
(S16)当控制单元80判断同步被建立的控制寄存器不与最终阶段相对应时,控制单元80读取包括在步骤S7中被读取的信号寄存器84A的控制寄存器的目的地寄存器84B中的值。控制单元80返回图8所示的步骤S5。
(S17)当控制单元80判断同步被建立的控制寄存器对应于最终阶段时,控制单元80基于运算类型寄存器84C和数据类型寄存器84D的值,将指示归约运算完成的信号发送到CPU3。此外,控制单元80将算术单元75的算术结果存储到输出数据寄存器79-0至79-m中。因为基于运算类型寄存器84C和数据类型寄存器84D的值创建指示归约运算完成的信号,所以指示归约运算完成的信号具有是否存在不对应的信息。这样,当运算类型寄存器84C和数据类型寄存器84D的值指示不对应时,控制单元80利用指示归约运算完成的信号将不对应通知CPU3。
(S18)CPU3接收指示归约运算完成的信号,并且检测归约运算完成或者发生不对应。
如上所述,因为控制单元80在建立同步的时刻判断多个算术数据(即,控制寄存器)的运算类型和数据类型的对应性,所以在建立同步时,可以在算术运算之前判断不对应。因此,防止了发生中止和错误算术处理。在本实施例中,检测运算类型和数据类型的两对应性,但是可以检测运算类型和数据类型的对应性中的任何一个。
图10例示根据图5至图10中的归约运算装置的蝴蝶运算,归约运算进程中的每个阶段之间的同步信号流。在图10中,图8和图9所示相同的元件在图8和图9中示出相同的符号。将利用4个节点#1至#4通过蝴蝶运算执行归约运算的例子(如图1所示)进行说明。
在图10中,每个控制寄存器82-0至82-2对应于每个阶段,并且用于对数据进行同步、算术运算和发送。存储单元74存储每个阶段的数据。算术单元75在存储的数据之间执行算术运算。输入寄存器70-0存储归约运算的输入数据,且输出寄存器79-0存储归约运算的算术结果。
下面,将描述归约运算处理流程。每个节点#1至#4的CPU3对控制寄存器82-0中的目的地(在图10中表示为“Destination”)指定控制信号和数据的目的地。在图10中,由蝴蝶运算的算法指定目的地。当开始归约运算时,每个节点#1至#4的CPU3将输入数据和包括运算类型和数据类型的开始归约运算的指示信号发送到归约运算装置6。
归约运算装置6将控制信号和数据发送到由开始控制寄存器(即,控制寄存器82-0)中的目的地(Destination)指定的发送目的地。收到控制信号和数据的归约运算装置更新由发送目的地指定的控制寄存器82-1的信号(在图10中表示为“Signal”),并且将数据写到存储单元74。
当在每一个控制寄存器上建立数据的同步时,算术单元75执行由运算类型指定的算术运算,并且将算术结果和控制信号发送到由目的地(被示为Destination)指定的发送目的地。控制寄存器的信号(被示为“Signal”)用于判断同步。之后,继续相同的处理。当在末端控制寄存器(即,控制寄存器82-2)建立同步时,算术结果被写到输出数据寄存器79-0,并且将归约运算的完成通知节点的CPU3。
在图10中,集中说明节点#1,同步信号和算术目标数据如下运行。例如,当节点#1接收到作为算术目标的数据的输入数据时,通过输入指示开始归约运算的信号,指令节点#1开始归约运算。响应于该指令,节点#1将同步信号和算术目标数据发送到作为在阶段#1预先指定的目的地的节点#1和节点#2。
在阶段#2,接收到其自己的同步信号和算术目标数据的节点#1等待来自预先指定的节点#2的同步信号,并且将接收到的算术目标数据保持在存储单元74和算术单元75中。与节点#1相同,在节点#2接收到输入数据后,阶段#2的同步信号和算术目标数据从节点#2到达节点#1。
当节点#1从节点#2接收到同步信号时,在节点#1上,在来自节点#2的同步信号与节点#1的同步信号之间建立约定(appointment)。即,在节点#1,两个信号建立同步。当在阶段#2,在节点#1上建立同步时,节点#1在其自己的算术目标数据与来自节点#2的算术目标数据之间执行算术运算,并且将同步信号和算术结果发送到作为预先指定的目的地的节点#1和节点#3。算术结果用作节点#1和节点#3的算术目标数据。
在阶段#3,接收到其自己的同步信号和算术目标数据的节点#1等待来自预先指定的节点#3的同步信号,并且将接收到的算术目标数据保持在存储单元74和算术单元75内。与节点#1相同,在节点#3接收到来自接收到输入数据的节点#4的输入数据和同步信号时,阶段#3的同步信号和算术目标数据从节点#3到达节点#1。
当节点#1接收到来自节点#3的同步信号时,在节点#1上,在来自节点#3的同步信号和节点#1的同步信号之间建立同步。当在阶段#3,在节点#1建立同步时,节点#1在其自己的算术目标数据和来自节点#3的算术目标数据之间执行算术运算,并且将算术结果输出到预先指定的输出数据寄存器79-0。
此后,节点#1的归约运算装置6将指示归约运算完成的信号输出到CPU3,并且将保持在输出数据寄存器79-0中的数据输出到CPU3,作为归约算术运算的结果。
在节点#2至#4上,在阶段#3中,在节点#2至#4上建立同步,并且与节点#1相同,节点#2至#4的归约运算装置6将指示归约运算完成的信号和归约算术运算的结果输出到CPU3。这样,利用蝴蝶运算,执行归约运算。
图11是利用图10中的蝴蝶运算例示归约运算中的不对应的检测进程的图。在图11中,与图10所示相同的元件示出与图10中相同的符号。通过四个节点#1至#4利用蝴蝶运算执行归约运算的例子(如图1所示)进行说明。
每个节点#1至#4的CPU3将输入数据和包括运算类型和数据类型的开始归约运算的指示信号发送到归约运算装置6。在图11所示的例子中,节点#1至#3将求和算术(SUM)指定为运算类型,而节点#4指定最大值(MAX)的计算,因此发生不对应。
接收到输入数据和开始归约运算的指示信号的归约运算装置6将输入数据和控制信号发送到由目的地(在图11中被示为Destination)指定的发送目的地。控制信号包括从节点指定的运算类型和数据类型。当归约运算装置6接收到控制信号和数据时,归约运算装置6更新控制寄存器82-1的信号(在图10中表示为“Signal”),并且将数据写入存储单元74。
当建立同步时,归约运算装置6的控制单元80首先检查运算类型。当控制单元80判断两种运算类型不相等或者通过校验接收到指示不对应的控制信号时,控制单元80不执行算术运算,并且发送指示不对应的控制信号。当控制寄存器82-2被指定结束点时,控制单元80将运算类型的不对应通知CPU3。
在图11中,因为节点#3的控制寄存器82-1的运算类型指示最大值(MAX)的计算,而节点#4的控制寄存器82-1的运算类型指示求和(SUM),所以发生不对应。此外,节点#3和节点#4中的控制单元80发送指示不对应的信号。
指示不对应的控制信号被发送到所有节点的控制寄存器82-2,从而通知不对应。因为结束点的控制寄存器82-2被合并到所有节点的开始点的控制寄存器的树结构网络中,所以可以总是利用任意控制寄存器来检测不对应。
与运算类型相同,利用控制寄存器检查数据类型。当两种数据类型不相等或者接收到指示不对应的控制信号时,控制单元80发送指示不对应的控制信号。
这样,因为在建立同步的时刻,归约运算装置检测节点之间的运算类型和数据类型的不对应,所以可以防止具有不对应的归约运算。因此,因为处理未完成,所以可以防止发生中止,或者防止算术运算错误的算术结果。
因为归约运算装置检测到不对应,所以可以免于在各节点之间与归约算术数据分开地传递运算类型和数据类型,以检测不对应。
(构造归约运算装置的第二实施例)
图12例示根据第二实施例的归约运算处理的图。在图12中,利用相同的符号表示与图5至图11中说明的元件相同的元件。图12例示三个节点#1、#2和#3执行图10中说明的归约运算的例子。
在蝴蝶运算算法中,如果节点的数量不是2的幂,则将控制寄存器提供到节点中的任何一个,当舍入到2的幂时添加控制寄存器的附加节点。在图12中,节点#3被提供节点#4的控制寄存器82-3。因为控制寄存器82-3不从节点#4输入控制信号,所以控制寄存器82-3的信号寄存器84A中的值被设置已经接收到一个控制信号的状态的值。由此,在来自节点#3的同步信号被输入到控制寄存器82-3的时刻建立同步。因为归约运算不使用控制寄存器82-3进行算术运算,所以如后面提到的屏蔽寄存器生效。
利用上面的结构,即使使用三个节点#1、#2和#3,仍可以执行相同的归约运算处理,如图10所示。
图13例示根据图12的第二实施例的归约运算装置的框图。在图13中,利用相同的符号,表示与图6所示元件相同的元件。如图13所示,归约运算装置6包括:接收单元10、同步单元8、归约算术单元7和发送单元12。同步单元8包括控制单元80和多个控制寄存器82。
归约算术单元7包括:多个输入寄存器70-0至70-m、多路复用器72、交换机73、存储单元74、算术单元75、解复用器76和多个输出寄存器79-0至79-m。
同步单元8中的多个控制寄存器82-0至82-N中的每一个对应于每一组同步信号。多个控制寄存器82-0至82-N中的每一个包括:信号寄存器84A、目的地寄存器84B、运算类型寄存器84C、数据类型寄存器84D以及屏蔽寄存器84E。在图13中,加标记“Signal”表示信号寄存器84A,加标记“Destination”表示目的地寄存器84B、加标记“OpType”表示运算类型寄存器84C、加标记“Data Type”表示数据类型寄存器84D并且加标记“Mask”表示屏蔽寄存器84E。
信号寄存器84A存储是否从对应于控制寄存器82-0至82-N的节点或者进程接收到同步信号的信息。目的地寄存器84B存储指示作为控制寄存器82-0至82-N将同步信号发送到其的目的地的进程或者节点的信息。这样,目的地寄存器84B存储指示同步建立之后同步信号的发送目的地的信息。
当同步信号的目的地指示另一个节点时,目的地寄存器84B存储用作发送目的地的目的地节点地址和控制寄存器号。类型寄存器84C存储归约算术运算的运算类型。例如,运算类型是求和(SUM)、最大值算术(MAX)和最小值算术(MIN)。数据类型寄存器84D存储归约运算的数据类型。例如,数据类型指出是整数数据还是浮点数据、是双精度还是单精度以及字节数。
在第二实施例中,屏蔽寄存器84E被加到控制寄存器82-0至82-N。即使同步被建立,当屏蔽寄存器84E指示有效时,控制单元80仍不检测不对应,并且不执行算术运算。这样,对于当舍入到2的幂时添加的控制寄存器,诸如图12所示的节点#3的控制寄存器82-4,屏蔽寄存器84E有效。
接收单元10经由网络2连接到另一个节点,并且从另一个节点接收包括同步信号的分组。当接收单元10经由网络2从另一个节点的归约运算装置6接收如图7中所示的分组时,接收单元10从接收到的分组中拾取同步信号、运算类型、数据类型、数据和目的地,并将同步信号、运算类型、数据类型和目的地发送到同步单元8中的控制单元80。
目的地指出指出同步信号的目的地的目的地节点地址和控制寄存器的控制寄存器号。目的地确定对应于拾取的目的地节点地址的节点和对应于拾取的控制寄存器号的控制寄存器82-0至82-N。此外,接收单元10将分组中的数据输出到多路复用器72。
归约算术运算的第一目标数据被输入到输入数据寄存器70-0至70-m,作为来自CPU3的写数据。从对应于来自控制单元80的读地址的输入数据寄存器70-0至70-m读取读数据(写数据),并且将其输入到多路复用器72。从由接收单元10经由网络2接收到的分组中拾取归约算术运算的第二目标数据,并且将其输入到多路复用器72。
然而,将归约算术运算的结果作为写数据从解复用器846输出到输出数据寄存器79-0至79-m,并作为读数据从输出数据寄存器79-0至79-m输出到CPU3。此外,将归约算术运算的结果从解复用器846输出到发送单元12,并作为分组从发送单元12发送到网络2。
提供多个输入数据寄存器70-0至70-m和多个输出数据寄存器79-0至79-m。每个输入数据寄存器70-0至70-m对应于控制寄存器82-0至82-N。此外,每个输出数据寄存器79-0至79-m对应于控制寄存器82-0至82-N。
来自CPU3的写地址指定写写数据的输入数据寄存器70-0至70-m。来自控制单元80的读地址指定读取读数据的输入数据寄存器70-0至70-m。例如,输入数据寄存器70-0至70-m的读地址对应于由接收单元10接收到的分组中的目的地指定的控制寄存器82-0至82-N。基于控制寄存器82-0至82-N的控制寄存器号创建读地址。
来自控制单元80的写地址指定写写数据的输出数据寄存器79-0至79-m。输出数据寄存器79-0至79-m的写地址对应于由写数据的归约算术运算使用的控制寄存器82-0至82-N。基于控制寄存器82-0至82-N的控制寄存器号创建写地址。来自CPU3的读地址指定读读数据的输出数据寄存器79-0至79-m。
根据来自控制单元80的输入选择的指示,多路复用器72选择来自输入数据寄存器70-0至70-m的数据和来自接收单元10的数据之一。选择的数据经由交换机73输入到存储单元74或者算术单元75。控制单元80对多路复用器842指令输入选择,以在从接收单元10输入同步信号和目的地的情况下,选择来自接收单元10的数据,而在上述情况之外的情况下,选择来自输入数据寄存器70-0至70-m的读数据。
根据来自控制单元80的输入/输出选择的指令,交换机73将来自多路复用器72或者算术单元75的输入输入到存储单元74或者算术单元75。控制单元80控制交换机73,以在数据是从复用器72输入的情况下,选择来自复用器842的数据,并在上述情况之外的情况下,选择来自算术单元75的数据。此外,控制单元80控制交换机73,以在同步被建立的情况下,将输入数据输出到算术单元845,并在上述情况之外的情况下,将输入数据输出到存储单元844。
存储单元74存储经由多路复用器72和交换机73输入的数据。这样,在归约算术运算期间,存储单元74存储数据。存储单元74将归约算术运算期间的数据存储在由来自控制单元80的写地址指定的地址中。存储单元74的写地址对应于归约算术运算使用的控制寄存器82-0至82-N。基于控制寄存器82-0至82-N的控制寄存器号,控制单元80创建写地址。
根据读地址,控制单元80将存储在存储单元74中的归约算术运算期间的数据读取到算术单元75。到存储单元74的读地址对应于归约算术运算使用的控制寄存器82-0至82-N。控制单元80基于控制寄存器82-0至82-N的控制寄存器号创建读地址。
算术单元75在存储单元74中的等待数据与来自经由多路复用器72输入的分组的数据或者同步被建立时的算术运算的先前结果之间,执行控制单元80指令的算术运算。即,算术单元75根据来自控制单元80的算术指令执行指定的算术运算,并且将算术运算的结果输出到解复用器76和交换机73。
算术单元75在从存储单元74输入的数据(第一数据)、从输入数据寄存器70-0至70-m输入的数据,以及由接收单元10接收的分组中的数据或者算术单元75在先前阶段执行的算术运算的结果(第二数据)之间,执行指令的算术运算。控制单元80基于指示运算类型的类型寄存器84C中的值创建算术指令。
根据来自控制器80的输出选择指令,解复用器76将来自算术单元75的输入输出到输出数据寄存器79-0至79-m或者发送单元12。控制单元80控制解复用器76,以在完成归约算术运算之前,将来自算术单元75的数据输出到发送单元12,并当归约算术运算完成时,将来自算术单元75的数据输出到输出数据寄存器79-0至79-m。
此外,在同步被建立后,控制单元80指令将第二同步信号发送到发送单元12。在图13中,指令被表示为“分组发送指令”。此外,控制单元80对归约算术单元84指令预定归约算术运算。当收到第二同步信号的发送指令时,发送单元12利用第二同步信号将算术单元75中的归约算术运算的结果发送到网络2。
(归约算术运算的第二实施例)
图14和图15例示根据第二实施例的归约算术运算的处理流程的图。
(S21)在执行归约算术运算之前,CPU3将发送目的地写到归约运算装置的同步单元8中的每个控制寄存器82-0至82-N中的目的地寄存器84B(图13中由标记“目的地”表示)。即,CPU3设置与由诸如蝴蝶运算的归约算术运算的算法对目的地寄存器84B确定的下一个阶段相对应的节点地址和控制寄存器号。此外,CPU3将设置值写到归约运算装置的同步单元8中的每个控制寄存器82-0至82-N中的信号寄存器84A和屏蔽寄存器84E。
(S22)CPU3将输入数据发送到输入数据寄存器70-0至70-m,并将指示开始归约算术运算的信号发送到同步单元8,从而开始归约算术运算。指示开始归约算术运算的信号包括输入寄存器号、对应于第一阶段的控制寄存器号、运算类型和数据类型。
(S23)当接收到指示开始归约算术运算的信号时,同步单元8的控制单元80将运算类型、数据类型写到由指示开始归约算术运算的信号指定的控制寄存器号的控制寄存器中的运算类型寄存器84C和数据类型寄存器84D。在图13中,加标记“OpType”表示运算类型寄存器84C,并加标记“DataType”表示数据类型寄存器84D。
(S24)在对控制寄存器写之后,同步单元8的控制单元80读取由指示开始归约算术运算的信号指定的控制寄存器82-0至82-N中的目的地寄存器(Destination)84B中的值。
(S25)控制单元80判断目的地寄存器84B的值是指定其自己的节点还是指定另一个节点。当目的地寄存器84B的值指定另一个节点时,控制单元80将数据和指示发送分组的信号发送到发送单元12。当第一阶段被指定到指定的控制寄存器时,发送到发送单元12的数据是存储在输入数据寄存器70-0中的值。此外,当随后阶段被指定到指定的控制寄存器时,发送到发送单元12的数据是来自算术单元75的算术运算结果。当输入数据寄存器70-0中的值被发送到发送单元12时,控制单元80对算术单元75指令旁路作为算术指令。如图7中所示,来自控制单元80的指示发送分组的信号包括:作为发送目的地的节点地址、发送目的地控制寄存器号、运算类型和数据类型。发送单元12基于数据和上面如图7所示指示发送的信号创建分组,然后,将分组发送到网络2。
(S26)当控制单元80判断目的地寄存器84B的值已经指定其自己的节点时,控制单元80读取由目的地寄存器84B指定的控制寄存器的信号寄存器84A中的值,以将同步信号发送到其自己的同步单元8。此外,控制单元80读取运算类型寄存器84C和数据类型寄存器84D中的值,以检测不对应。
(S27)控制单元80根据信号寄存器84A的值判断同步是否被建立。当值“1”被设置到信号寄存器84A时,控制单元80判断同步被建立。然而,当值“1”被设置到信号寄存器84A时,控制单元80判断同步未被建立。
(S28)当控制单元80判断同步未被建立时,控制单元80将值“1”写到信号寄存器84A,并将运算类型和数据类型分别写到运算类型寄存器84C和数据类型寄存器84D。运算类型和数据类型的值是分组中的值,或者控制寄存器在先前时间的值。即,当刚执行步骤37、S25和S26时,被写的值是步骤S37中的值,或者是在步骤S25中从控制寄存器读取的运算类型和数据类型的值。相反,当刚执行了步骤S30和S31中的处理时,被写的值是在步骤S30中接收到的分组中的值。
(S29)控制单元80将数据存储在数据存储单元74的对应于控制寄存器的地址位置中。当控制寄存器82-0指示第一阶段时,存储输入寄存器70-0中的值作为数据,并当控制寄存器指示随后阶段时,存储先前阶段的算术结果。
(S30)控制单元80等待接收分组。当接收单元10从网络2接收到分组时,接收单元10从接收到的分组中拾取数据、同步信号、目的地、运算类型和数据类型,并将它们发送到多路复用器72和同步单元8。
(S31)当控制单元80接收到来自接收单元10的信号时,控制单元80读取由目的地指定的控制寄存器的信号寄存器84A中的信号、运算类型寄存器84C中的运算类型和数据类型寄存器84D中的数据类型。此外,控制单元80返回步骤S27中的处理,并且重复从步骤S27到步骤S31的处理,直到同步被建立。
(S32)当在步骤S27的判断中控制单元80判断同步被建立时,控制单元80判断控制寄存器82-0至82-m的屏蔽寄存器84E的值。如上所述,提供屏蔽寄存器84E,以便即使同步被建立,当屏蔽寄存器84E有效(值“1”)时,仍避免检测不对应和算术运算。这样,在步骤S21中,对于当舍入到2的幂时添加的控制寄存器(诸如图12中所示的节点#3的控制寄存器82-4),屏蔽寄存器84E被设置为有效。对于判断屏蔽寄存器84E的值是“1”(有效)的控制寄存器,控制单元进入步骤S36。
(S33)对于判断屏蔽寄存器84E的值不是“1”(非有效)的控制寄存器,控制单元80检测运算类型和数据类型的不对应。通过将控制寄存器82-0至82-m的运算类型寄存器84C中的运算类型和数据类型寄存器84D中的数据类型与运算类型和数据类型进行比较,执行不对应的检测。当刚执行步骤37、S25和S26时,运算类型和数据类型的值是在步骤S37或者步骤S25从控制寄存器读取的运算类型和数据类型的值。相反,当刚执行步骤S30和S31中的处理时,运算类型和数据类型的值是在步骤S30中接收到的分组中的值。当通过比较,在被比较的值中检测到值不匹配或者检测到不对应值时,控制单元80判断发生不对应。然而,当通过比较检测到值的匹配时,控制单元80判断没有发生不对应。
(S34)当判断没有发生不对应时,执行算术运算。算术运算的目标数据是下面的(1)、(2)和(3)之一:(1)当控制寄存器对应于第一阶段之后的紧下一个阶段时,输入数据寄存器70-1中的值;(2)当控制寄存器对应于之后阶段,并且建立同步的因素是来自分组的同步信号时,分组中的数据;以及(3)当建立同步的因素是来自其自己的同步单元的同步信号时,先前步骤的算术结果。算术单元75在上述(1)、(2)和(3)中的任何一个数据与存储单元74的与建立了同步的控制寄存器对应的地址中的数据之间执行算术运算。
(S35)相反,当判断发生不对应时,控制单元80将指示不对应的值写到控制寄存器82-0至82-m中的算术运算寄存器84C和数据类型寄存器84D。
(S36)控制单元80判断同步被建立的控制寄存器是否对应于最终阶段。
(S37)当控制单元80判断同步被建立的控制寄存器不与最终阶段对应时,控制单元80读取包括在步骤S27中被读取的信号寄存器84A的控制寄存器的目的地寄存器84B中的值。控制单元80返回图14所示的步骤S25。
(S38)当控制单元80判断同步被建立的控制寄存器对应于最终阶段时,控制单元80基于运算类型寄存器84C和数据类型寄存器84D的值,将指示归约运算完成的信号发送到CPU3。此外,控制单元80将算术单元75的算术结果存储到输出数据寄存器79-0至79-m中。因为基于运算类型寄存器84C和数据类型寄存器84D的值创建指示归约运算完成的信号,所以指示归约运算完成的信号具有关于是否存在不对应的信息。这样,当运算类型寄存器84C和数据类型寄存器84D的值指示不对应时,控制单元80利用指示归约运算完成的信号将不对应通知CPU3。
(S39)CPU3接收指示归约运算完成的信号,并且检测归约运算的完成或者不对应的发生。
如上所述,因为在建立同步的时刻,控制单元80判断多个算术数据(即,控制寄存器)的运算类型和数据类型的对应性,所以在建立同步时,在算术运算之前,可以判断不对应。因此,防止发生中止和错误算术处理。在本实施例中,检测运算类型和数据类型两种对应性,但是可以检测运算类型和数据类型的对应性中的任何之一。
当对于一个处理,节点的数量不是2的幂时,将控制寄存器提供到其它节点,当舍入到2的幂时添加控制寄存器的附加节点。控制寄存器的屏蔽寄存器84E被设置为值“1”,并且控制寄存器的信号寄存器84A被设置为值“1”。将值“1“设置到信号寄存器84A的原因是:对控制寄存器82-3仅接收一个同步信号进行控制。在信号寄存器84A的值变成“1”时,判断屏蔽寄存器84E的值。当屏蔽寄存器84E的值指示“1”时,不执行不对应和算术运算的检测。因此,当对于一个处理,节点的数量不是2的幂时,即使将当舍入到2的幂时添加附加节点的控制寄存器提供到另一个节点,仍可以检测不对应。
(归约运算的第三实施例)
图16例示根据第三实施例的归约算术运算的说明图。图16例示图5和图6中分组格式的变型例子。如图16所示,分组包括发送目的地节点地址格式、发送目的地控制寄存器号、运算类型和数据类型。此外,在第三实施例中,字段被加到分组格式。对附加字段提供用于通知发生不对应的节点地址和发生不对应的控制寄存器号的栏(column)。
在第三实施例中,节点的结构与图2所示的结构相同。此外,归约运算装置的结构与图6所示的结构相同。
当在图9所示处理流程的步骤S12中控制单元80检测到运算类型和数据类型的不对应时,控制单元80设置其自己的节点地址和被读取到节点地址的控制寄存器号以及图16所示分组的附加字段中的控制寄存器号。
此外,当在图9所示处理流程的步骤S17中发生不对应时,控制单元80将图16所示分组的附加字段的值写到输出寄存器,并且将节点地址和发生不对应的控制寄存器号通知CPU3。其它处理与第一实施例的图8和图9所示处理流程相同。
这样,因为当归约运算装置通知不对应时,通知发生不对应的节点和控制寄存器二者,所以可以轻而易举地进行调试。
(其它实施例)
在上述实施例中,作为并行处理的栅障同步的例子,解释了蝴蝶运算算法。它还可以应用于其它算法,诸如具有递归倍增传递(recursivedoubling transferring)运算的成对交换(pair wise exchange)算法。
在此引述的所有例子和条件语言意在说明问题,以便有助于读者理解本发明和本发明人对现有技术作出贡献的原理,并且认为它们并不局限于这样具体描述的例子和条件,而且说明书中这种例子的构造也不说明本发明的优势和劣势。尽管已经详细描述了本发明的实施例,但是应当明白,可以进行各种变更、替换和变型,而不脱离本发明的实质范围。

Claims (18)

1.一种归约运算装置,被输入多个分组,所述多个分组中的每一个包括同步信号和数据,所述归约运算装置设置与归约运算的下一个阶段相对应的所述同步信号的发送目的地和所述数据的发送目的地,并且所述归约运算装置对输入的多个数据执行归约运算,所述归约运算装置包括:
同步单元,等待多个同步信号的输入并将对输入的所述多个数据进行归约运算的指令输出到算术单元,在建立所述多个同步信号之间的同步之后,命令将所述归约运算的算术结果输出到与归约运算的下一个阶段相对应的m个发送目的地,m>1且m是整数;
所述算术单元,在所述同步被建立的n个输入的所述数据之间执行算术运算,n>1且n是整数;
存储单元,存储数据和算术结果;
发送单元,将所述算术结果和所述多个同步信号发送到由所述同步单元指定的所述m个发送目的地;以及
接收单元,接收所述分组,将所述多个同步信号和所述m个发送目的地发送到所述同步单元,并将输入的所述多个数据发送到所述存储单元,
其中,所述同步单元接收所述多个同步信号和要包括在所述归约运算的指令中的运算类型和数据类型至少之一,建立所述同步之后,在n个所述运算类型或者所述数据类型之间进行比较,当所述n个所述运算类型或者所述数据类型不匹配时,将指示不对应的信号而不是算术结果发送到所述m个发送目的地,并且当所述n个所述运算类型或者所述数据类型匹配时,执行归约运算的指令。
2.根据权利要求1所述的归约运算装置,还包括用于所述同步单元的屏蔽寄存器,当所述屏蔽寄存器指示有效值时,所述屏蔽寄存器禁止所述n个所述运算类型或者所述数据类型之间的所述比较和所述归约运算的指令的执行。
3.根据权利要求1所述的归约运算装置,其中经由所述发送单元,所述同步单元发送指示所述不对应的信号和发生所述不对应的所述同步单元的标识号。
4.根据权利要求1所述的归约运算装置,其中所述同步单元还包括:
多个控制寄存器,每一个控制寄存器存储所述运算类型和数据类型至少之一、所述同步信号以及所述发送目的地;以及
控制单元,基于输入的所述多个同步信号,判断所述同步是否被建立,将包括在所述归约运算的指令中的输入的所述运算类型和输入的所述数据类型至少之一与所述多个控制寄存器中的每一个中存储的运算类型和存储的数据类型至少之一进行比较,并且基于所述比较的结果检测所述不对应。
5.根据权利要求2所述的归约运算装置,其中所述同步单元在所述同步被建立之后参考所述屏蔽寄存器,并且当所述屏蔽寄存器指示有效值时,禁止n个所述运算类型或者所述数据类型之间的比较以及所述归约运算的指令的执行。
6.根据权利要求1所述的归约运算装置,其中当所述比较的结果不匹配时,所述同步单元将指示所述不对应的信号而不是算术结果发送到输入有所述数据的所述多个发送目的地中的至少一个发送目的地。
7.一种处理器,包括:
处理单元;以及
被输入多个分组的归约运算装置,所述多个分组中的每一个包括同步信号和数据,所述归约运算装置设置与归约运算的下一个阶段相对应的所述同步信号的发送目的地和所述数据的发送目的地,并且所述归约运算装置对输入的所述多个数据执行归约运算,
其中所述归约运算装置包括:
同步单元,等待多个同步信号的输入并将对输入的所述多个数据进行归约运算的指令输出到算术单元,在建立所述多个同步信号之间的同步之后,命令将所述归约运算的算术结果输出到与归约运算的下一个阶段相对应的m个发送目的地,m>1且m是整数;
所述算术单元,在所述同步被建立的n个输入的所述数据之间执行算术运算,n>1且n是整数;
存储单元,存储数据和算术结果;
发送单元,将所述算术结果和所述多个同步信号发送到由所述同步单元指定的所述m个发送目的地;以及
接收单元,接收所述分组,将所述多个同步信号和所述m个发送目的地发送到所述同步单元,并将输入的所述多个数据发送到所述存储单元,
其中,所述同步单元接收所述多个同步信号和要包括在所述归约运算的指令中的运算类型和数据类型至少之一,建立所述同步之后,在n个所述运算类型或者所述数据类型之间进行比较,当所述n个所述运算类型或者所述数据类型不匹配时,将指示不对应的信号而不是算术结果发送到所述m个发送目的地,并且当所述n个所述运算类型或者所述数据类型匹配时,执行归约运算的指令。
8.根据权利要求7所述的处理器,其中所述归约运算装置还包括用于所述同步单元的屏蔽寄存器,当所述屏蔽寄存器指示有效值时,所述屏蔽寄存器禁止所述n个所述运算类型或者所述数据类型之间的所述比较和所述归约运算的指令的执行。
9.根据权利要求7所述的处理器,其中经由所述发送单元,所述同步单元发送指示所述不对应的信号和发生所述不对应的所述同步单元的标识号。
10.根据权利要求7所述的处理器,其中所述同步单元还包括:
多个控制寄存器,每一个控制寄存器存储所述运算类型和数据类型至少之一、所述同步信号以及所述发送目的地;以及
控制单元,基于输入的所述多个同步信号,判断所述同步是否被建立,将包括在所述归约运算的指令中的输入的所述运算类型和输入的所述数据类型至少之一与所述多个控制寄存器中的每一个中存储的运算类型和存储的数据类型至少之一进行比较,并且基于所述比较的结果检测所述不对应。
11.根据权利要求8所述的处理器,其中所述同步单元在所述同步被建立之后参考所述屏蔽寄存器,并且当所述屏蔽寄存器指示有效值时,禁止n个所述运算类型或者所述数据类型之间的比较以及所述归约运算的指令的执行。
12.根据权利要求7所述的处理器,其中当所述比较的结果不匹配时,所述同步单元将指示所述不对应的信号而不是算术结果发送到输入有所述数据的所述多个发送目的地中的至少一个发送目的地。
13.一种计算机系统,包括:
经由网络连接的多个处理器,每个处理器包括:
处理单元;以及
被输入多个分组的归约运算装置,所述多个分组中的每一个包括同步信号和数据,所述归约运算装置设置与归约运算的下一个阶段相对应的所述同步信号的发送目的地和所述数据的发送目的地,并且所述归约运算装置对输入的所述多个数据执行归约运算,
其中所述归约运算装置包括:
同步单元,等待多个同步信号的输入并将对输入的所述多个数据进行归约运算的指令输出到算术单元,在建立所述多个同步信号之间的同步之后,命令将所述归约运算的算术结果输出到与归约运算的下一个阶段相对应的m个发送目的地,m>1且m是整数;
所述算术单元,在所述同步被建立的n个输入的所述数据之间执行算术运算,n>1且n是整数;
存储单元,存储数据和算术结果;
发送单元,将所述算术结果和所述多个同步信号发送到由所述同步单元指定的所述m个发送目的地;以及
接收单元,接收所述分组,将所述多个同步信号和所述m个发送目的地发送到所述同步单元,并将输入的所述多个数据发送到所述存储单元,
其中,所述同步单元接收所述多个同步信号和要包括在所述归约运算的指令中的运算类型和数据类型至少之一,建立所述同步之后,在n个所述运算类型或者所述数据类型之间进行比较,当所述n个所述运算类型或者所述数据类型不匹配时,将指示不对应的信号而不是算术结果发送到所述m个发送目的地,并且当所述n个所述运算类型或者所述数据类型匹配时,执行归约运算的指令。
14.根据权利要求13所述的计算机系统,其中所述归约运算装置还包括用于所述同步单元的屏蔽寄存器,当所述屏蔽寄存器指示有效值时,所述屏蔽寄存器禁止所述n个所述运算类型或者所述数据类型之间的所述比较和所述归约运算的指令的执行。
15.根据权利要求13所述的计算机系统,其中经由所述发送单元,所述同步单元发送指示所述不对应的信号和发生所述不对应的所述同步单元的标识号。
16.根据权利要求13所述的计算机系统,其中所述同步单元还包括:
多个控制寄存器,每一个控制寄存器存储所述运算类型和数据类型至少之一、所述同步信号以及所述发送目的地;以及
控制单元,基于输入的所述多个同步信号,判断所述同步是否被建立,将包括在所述归约运算的指令中的输入的所述运算类型和输入的所述数据类型至少之一与所述多个控制寄存器中的每一个中存储的运算类型和存储的数据类型至少之一进行比较,并且基于所述比较的结果检测所述不对应。
17.根据权利要求14所述的计算机系统,其中所述同步单元在所述同步被建立之后参考所述屏蔽寄存器,并且当所述屏蔽寄存器指示有效值时,禁止n个所述运算类型或者所述数据类型之间的比较以及所述归约运算的指令的执行。
18.根据权利要求13所述的计算机系统,其中当所述比较的结果不匹配时,所述同步单元将指示所述不对应的信号而不是算术结果发送到输入有所述数据的所述多个发送目的地中的至少一个发送目的地。
CN201110201689.0A 2010-09-08 2011-07-14 归约运算装置、处理器和计算机系统 Expired - Fee Related CN102402421B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2010-200807 2010-09-08
JP2010200807A JP5664039B2 (ja) 2010-09-08 2010-09-08 リダクション演算装置、処理装置及びコンピュータシステム

Publications (2)

Publication Number Publication Date
CN102402421A CN102402421A (zh) 2012-04-04
CN102402421B true CN102402421B (zh) 2014-12-31

Family

ID=45001561

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110201689.0A Expired - Fee Related CN102402421B (zh) 2010-09-08 2011-07-14 归约运算装置、处理器和计算机系统

Country Status (4)

Country Link
US (1) US9619300B2 (zh)
EP (1) EP2428893A3 (zh)
JP (1) JP5664039B2 (zh)
CN (1) CN102402421B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5664039B2 (ja) * 2010-09-08 2015-02-04 富士通株式会社 リダクション演算装置、処理装置及びコンピュータシステム
JP5994601B2 (ja) * 2012-11-27 2016-09-21 富士通株式会社 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
JP2018180999A (ja) * 2017-04-14 2018-11-15 ルネサスエレクトロニクス株式会社 検査システム、検査装置、及び検査方法
JP7010129B2 (ja) 2018-04-19 2022-01-26 富士通株式会社 プロセッサ及び情報処理装置
JP7159696B2 (ja) 2018-08-28 2022-10-25 富士通株式会社 情報処理装置,並列計算機システムおよび制御方法
JP7192388B2 (ja) * 2018-10-22 2022-12-20 富士通株式会社 並列処理装置、並列演算実行プログラムおよびバックアップ方法
JP2021043737A (ja) * 2019-09-11 2021-03-18 富士通株式会社 バリア同期システム、バリア同期方法及び並列情報処理装置
CN111105042B (zh) * 2019-12-13 2023-07-25 广东浪潮大数据研究有限公司 一种并行消息处理方法、系统及相关装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0924601A2 (en) * 1993-11-23 1999-06-23 Hewlett-Packard Company Parallel data processing in a single processor
CN101739381A (zh) * 2008-11-19 2010-06-16 富士通株式会社 屏障同步设备、屏障同步系统以及屏障同步方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0398152A (ja) 1989-09-11 1991-04-23 Fujitsu Ltd ブロードキャスト・バリアによるデータ通信方式
JPH07114515A (ja) * 1993-10-19 1995-05-02 Hitachi Chem Co Ltd 同期通信用ネットワークを有する分散メモリ計算機
JPH07152712A (ja) 1993-11-30 1995-06-16 Fujitsu Ltd バリア同期を行うマルチプロセッサ
JP3532037B2 (ja) * 1996-07-31 2004-05-31 富士通株式会社 並列計算機
DE60003031T2 (de) 1999-06-30 2003-12-24 Aventis Pharma Sa Benzo[f]naphthyridinderivate, ihre herstellung und sie enthaltende pharmazeutische zusammenstzungen
JP3304928B2 (ja) 1999-07-29 2002-07-22 日本電気株式会社 バリア同期方法およびバリア同期用プログラムを記録した記録媒体
WO2006020298A2 (en) * 2004-07-19 2006-02-23 Blumrich Matthias A Collective network for computer structures
US20080147881A1 (en) * 2006-12-19 2008-06-19 Krishnamurthy Rajaram B System and method for placing computation inside a network
US8539204B2 (en) * 2009-09-25 2013-09-17 Nvidia Corporation Cooperative thread array reduction and scan operations
JP5664039B2 (ja) * 2010-09-08 2015-02-04 富士通株式会社 リダクション演算装置、処理装置及びコンピュータシステム
JP5549574B2 (ja) * 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
CN103502959B (zh) * 2011-04-07 2016-01-27 富士通株式会社 信息处理装置以及并行计算机系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0924601A2 (en) * 1993-11-23 1999-06-23 Hewlett-Packard Company Parallel data processing in a single processor
CN101739381A (zh) * 2008-11-19 2010-06-16 富士通株式会社 屏障同步设备、屏障同步系统以及屏障同步方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JP特开2001-43203A 2001.02.16 *
JP特开平7-152712A 1995.06.16 *

Also Published As

Publication number Publication date
EP2428893A2 (en) 2012-03-14
CN102402421A (zh) 2012-04-04
JP2012058958A (ja) 2012-03-22
US20120060019A1 (en) 2012-03-08
JP5664039B2 (ja) 2015-02-04
EP2428893A3 (en) 2014-12-10
US9619300B2 (en) 2017-04-11

Similar Documents

Publication Publication Date Title
CN102402421B (zh) 归约运算装置、处理器和计算机系统
CN101739381B (zh) 屏障同步设备、屏障同步系统以及屏障同步方法
CN110825349B (zh) 随机数生成方法、区块链节点、系统及介质
CN110442652B (zh) 一种基于区块链的跨链数据处理方法及装置
CN102621938A (zh) 过程控制中的三重冗余控制系统及其方法
JPH07234842A (ja) 並列データ処理システム
CN103678031A (zh) 二乘二取二冗余系统及方法
US9491228B2 (en) Redundancy device
CN110290166A (zh) 跨集群数据交互方法、系统、装置及可读存储介质
CN113364603B (zh) 环形网络的故障恢复方法及物理节点
CN103703427B (zh) 同步第一处理单元和第二处理单元的处理装置和方法
US6789258B1 (en) System and method for performing a synchronization operation for multiple devices in a computer system
US10845787B1 (en) Concurrent updating for linear topologies in an industrial automation environment
CN115147031B (zh) 清算工作流执行方法、装置、设备及介质
EP2654261B1 (en) Circuit for the fast analysis of packet headers transferred via a data bus
CN109656964A (zh) 数据比对的方法、装置以及存储介质
CN102567174B (zh) 微处理器操作监视系统
US20190026198A1 (en) Method and device for configuring an execution means and for detecting a state of operation thereof
US10936515B2 (en) Information processing system including data classification unit for reconstructing transfer data based on defined transfer codes
JP2723925B2 (ja) 計算機間プログラムオンライン再配置方式
JPH07262142A (ja) 並列処理制御方式
JP6471234B2 (ja) 制御システム
US20230080172A1 (en) Transmitting node instructions
CN116418896B (zh) 基于定时器的任务执行方法、装置、设备及介质
JPH04355836A (ja) 仮想計算機間データ転送処理装置

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
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141231

Termination date: 20180714