JP2012058958A - リダクション演算装置、処理装置及びコンピュータシステム - Google Patents

リダクション演算装置、処理装置及びコンピュータシステム Download PDF

Info

Publication number
JP2012058958A
JP2012058958A JP2010200807A JP2010200807A JP2012058958A JP 2012058958 A JP2012058958 A JP 2012058958A JP 2010200807 A JP2010200807 A JP 2010200807A JP 2010200807 A JP2010200807 A JP 2010200807A JP 2012058958 A JP2012058958 A JP 2012058958A
Authority
JP
Japan
Prior art keywords
synchronization
data
calculation
reduction
register
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.)
Granted
Application number
JP2010200807A
Other languages
English (en)
Other versions
JP5664039B2 (ja
Inventor
Shinya Hiramoto
新哉 平本
Yuichiro Yasujima
雄一郎 安島
Tomohiro Inoue
智宏 井上
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
Priority to JP2010200807A priority Critical patent/JP5664039B2/ja
Priority to EP11170442.5A priority patent/EP2428893A3/en
Priority to US13/166,114 priority patent/US9619300B2/en
Priority to CN201110201689.0A priority patent/CN102402421B/zh
Publication of JP2012058958A publication Critical patent/JP2012058958A/ja
Application granted granted Critical
Publication of JP5664039B2 publication Critical patent/JP5664039B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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

Abstract

【課題】並列計算のリダクション演算における演算タイプ、データタイプの不整合を検出する。
【解決手段】各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置(6)において、同期装置(8)が、組内の演算タイプ又はデータタイプの不整合を検出し、演算器(75)の演算を制御する。このため、処理が完了せず、ハングアップ、もしくは誤った計算結果を返すことを防止でき、且つリダクション演算完了の処理時間の長期化も防止できる。
【選択図】 図6

Description

本発明は、リダクション演算装置、処理装置及びコンピュータシステムに関する。
リダクション演算は、複数のプロセスが持つデータを対象とした演算である。代表的なリダクション演算としては、例えば、データの総和を求める演算、最大値、最小値を求める演算等が知られている。リダクション演算は、演算結果を特定のプロセスのみが持つ場合と、全てのプロセスが持つ場合とがある。しかし、いずれの場合でもプロセス間でデータの通信が行なわれるので、リダクション演算は、バリア同期と同じアルゴリズムを用いて実行することができる。
バリア同期は、並列処理されている複数のプロセス間の同期をとる方法である。バリア同期では同期を取るポイント、つまりバリアポイントが設定される。バリア同期を行なうプロセスはバリアポイントに処理が到着した場合、処理を一時的に停止する。バリア同期を行なう並列処理されている全てのプロセスがバリアポイントに到着した時点で、バリア同期を行なうプロセスは、停止した処理を再開する。これにより、並列処理されている複数のプロセス間で、並列処理の同期をとることができる。
並列計算を行っている複数のノード間でリダクション演算を行う場合には、各ノード内にリダクション演算装置を設けることが有効である。リダクション演算装置は複数の種類の演算処理を実行できる。リダクション演算装置は、ノードからのデータの同期が成立したかを判定し、成立した場合に、指定された演算処理を実行する。
一方、リダクション演算は複数のノード間に跨った処理であり、各ノードがリダクション演算を開始することで行う。各ノードは個別にリダクション演算の演算タイプ、データタイプを指定するため、ノード間で、演算タイプ、データタイプの不整合が起こり得る。不整合を検出するためには、他のノードが指定した演算タイプ、データタイプを確認するため、ノード間で、演算タイプ、データタイプの通信が必要となる。
ノード内のCPU(Central Processing Unit)がソフトウェアでリダクション演算処理を行う場合には、演算タイプ、データタイプの不整合検出をソフトウェアで行うことが提案されている。
日本特許公開2010−122848号公報 日本特許公開平3−098152号公報
PROST J.-P.,TREUMANN R., HEDGES R., JIA B., KONIGES A. E., and WHITE A.、"Towards a High−Performance and Robust Implementation of MPI−IO on top of GPFS", National Technical Information Service U.S. Department of Commerce, UCRL-LC-137128, January 11, 2000 Patrick Ohly, Werner Krotz-Vogel、"Automated MPI Correctness Checking What if there was a magic option?"、The 8th LCI International Conference on High−Performance Clustered Computing,2007
リダクション演算装置をノード内に独立設ける構成においては、ノード間で演算タイプ、データタイプの不整合があると、処理が完了せず、ハングアップ、もしくは誤った計算結果を返す。又、この際のデバッグは困難である。
又、ソフトウェアでリダクション演算を行う構成においては、ノード間でリダクション演算データとは別に演算タイプ、データタイプの通信を行い、不整合を検出している。従って、リダクション演算の完了には、演算タイプ、データタイプの通信完了も待たなければならない。そのため、リダクション演算の処理時間が長くなる。
本発明の目的は、ハードウェアでノード間の演算タイプ、データタイプの不整合を検出できるリダクション演算装置、処理装置及びコンピュータシステムを提供することにある。
この目的の達成のため、開示のリダクション演算装置は、複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置において、前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、前記同期が成立した組のn個のデータ間で演算を行う演算器と、データと演算結果を保持する記憶装置と、前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行する。
又、この目的の達成のため、開示の処理装置は、処理ユニットと、前記処理ユニット及びネットワークを介し複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置とを有し、前記リダクション演算装置は、前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、前記同期が成立した組のn個のデータ間で演算を行う演算器と、データと演算結果を保持する記憶装置と、前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行する。
更に、この目的の達成のため、開示のコンピュータシステムは、ネットワークを介し接続された複数の処理装置を有するコンピュータシステムにおいて、前記処理装置の各々は、処理ユニットと、前記処理ユニット及びネットワークを介し複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置とを有し、前記リダクション演算装置は、前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、前記同期が成立した組のn個のデータ間で演算を行う演算器と、データと演算結果を保持する記憶装置と、前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行する。
各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置において、組内の演算タイプ又はデータタイプの不整合を検出し、演算制御するため、処理が完了せず、ハングアップ、もしくは誤った計算結果を返すことを防止でき、且つリダクション演算完了の処理時間の長期化も防止できる。
実施の形態のコンピュータシステムのブロック図である。 図1のノード(処理装置)のブロック図である。 図1のバリア同期の説明図である。 図3において、4個のプロセスでのバタフライによるバリア同期の例の説明図である。 図2のリダクション演算装置のブロック図である。 図5のリダクション演算装置の第1の実施の形態のブロック図である。 図5及び図6のリダクション演算装置のパケットのフォーマットの説明図である。 図6のリダクション演算処理フロー図(その1)である。 図6のリダクション演算処理フロー図(その2)である。 図1乃至図6のリダクション演算処理の説明図である。 図6乃至図9のリダクション演算処理における不整合検出処理の説明図である。 図5のリダクション演算処理の第2の実施の形態のブロック図である。 図13のリダクション演算装置のブロック図である。 図13のリダクション演算処理フロー図(その1)である。 図13のリダクション演算処理フロー図(その2)である。 第3の実施の形態のパケットのフォーマットの説明図である。
以下、実施の形態の例を、コンピュータシステム、第1の実施の形態のリダクション演算装置の構成、第1の実施の形態のリダクション演算処理、第2の実施の形態のリダクション演算装置、第2の実施の形態のリダクション演算処理、第3の実施の形態のリダクション演算処理、他の実施の形態の順で説明するが、開示のコンピュータシステム、ノード、リダクション演算装置は、この実施の形態に限られない。
(コンピュータシステム)
図1は実施の形態のコンピュータシステムのブロック図である。図2は図1のノードのブロック図である。図1に示すように、コンピュータシステムは、複数のノード1と、これらのノード1を接続するネットワーク2とを含む。図1の実施の形態においては、4個のノード#1〜#4がコンピュータネットワーク2に接続される。ネットワーク2により接続された複数のノード1は、並列演算を実行する。ネットワーク2は、例えば、クロスバスイッチを利用できる。
図2に示すように、複数のノード1の各々は、演算処理ユニット(CPU:Central Processing Unit)3とメモリ4Aとシステム制御部5とリダクション演算装置6と入出力装置4Bとを備える。システム制御部5はノード1の全体の動作を制御する。即ち、システム制御部5は、CPU3、メモリ4A、リダクション演算装置6、入出力装置4Bを制御する。CPU3はシステム制御部5を介して、入出力装置4Bとの間で必要なデータの送受信を行う。即ち、入出力装置4Bはバリア同期のアルゴリズムと実行条件とを含む設定条件を、CPU3に設定する。また、入出力装置4Bは、必要に応じて、CPU3から出力されたデータを出力する。
CPU3は、システム制御部5を介して、リダクション演算装置6に対してリダクション演算開始の信号を送信し、また、リダクション演算装置6からリダクション演算完了の信号を受信する。又、CPU3は、入出力装置4Bから入力された設定条件に従って、リダクション演算の送信先、演算タイプ、データタイプをリダクション演算装置6に設定する。
リダクション演算装置8は、バリア同期を取りつつリダクション演算を行う。リダクション演算装置6は、設定条件に従って、ネットワーク2を介して、他のノード1のリダクション演算装置6との間で通信を行ない、当該通信に基づいて、バリア同期を含むリダクション演算を行なう。
更に、CPU3は、システム制御部5を介して、メモリ4Aとの間で、必要なデータの送受信を行う。CPU3は、メモリ4Aにデータを書き込み、また、メモリ4Aからデータを読み出す。このデータは、後述するリダクション演算装置のリダクション演算に用いられるデータである。
ここで、リダクション演算装置6のバリア同期について簡単に説明する。図3は3つのプロセス#0〜#2のバリア同期の説明図である。図4は4個のプロセス#0〜#3の間において、バタフライによるバリア同期を行なう例を示す説明図である。
図3に示すように、バリア同期を行なう複数のプロセス#0〜#2は、その処理が同期をとるポイント(バリアポイントという)に到着した場合、自身のプロセスの処理を停止する。即ち、複数のプロセス#0〜#2自身がバリアポイントに到達した場合、複数のプロセス#0〜#2の各々は、他のプロセスがバリアポイントに到着するのを待ち合わせる。
バリア同期を行なう全てのプロセス#0〜#2がバリアポイントに到着した時点で(バリア同期が成立した時点という)、複数のプロセス#0〜#2の各々は、停止した処理を再開する。これにより、並列処理されている複数のプロセス間で、並列処理の同期をとることができる。
このようなバリア同期を実現するアルゴリズムの一つに、バタフライ(Butterfly)がある。以下、バタフライにおいては、処理を複数のステージに分割し、ステージ毎に他のプロセスと信号の通信を行なう。この実施の形態においては、バリア同期のアルゴリズムとして、バタフライが用いられる。
図4は、4個のプロセス#0〜#3の間において、バタフライによるバリア同期を行なう例を示す。図4において、例えば、プロセス#0を円の中に数字の0を付して表し、他のプロセス#1〜#3も同様に表す。ステージ番号を「k」、自プロセス又は自ノードのプロセス番号をiとすると、各々のステージにおけるバリアポイント到着の信号の送信先は、「i XOR 2^(k−1)」となる。ステージ数は、プロセス数Nが2のべき乗のとき、log(N)となる。
例えば、図4において、プロセス#0に着目すると、以下のように送信先が予め定められる。即ち、ステージ#1において、バリアポイント到着を示す信号の送信先はプロセス#1である。ステージ#2において、プロセス#0からのバリアポイント到達を示す信号の受信元はプロセス#1であり、プロセス#0からのバリアポイント到達を示す信号の送信先はプロセス#2である。
これらの信号の送信先及び受信元は、設定条件において、バリア同期のアルゴリズム及び実行条件つまりプロセスの構成が定まることにより、一意に定めることができる。この例においては、バリア同期のアルゴリズムはバタフライであり、実行条件は4個のプロセスであるので、前述したように定めることができる。
図4の例において、入出力装置4BからCPU3に入力される設定条件においては、バリア同期のアルゴリズムはバタフライとされ、実行条件は4個のプロセスとされる。これに加えて、実行条件として、当該演算つまりバリア同期におけるステージ数kと、各々のプロセス自身つまり自ノードのプロセス番号iも入力される。ステージ数kはステージ番号の最大値を示している。
なお、CPU3への設定条件の入力は、これに限られない。例えば、いずれか1個のノード1がネットワーク2を介して、他のノード1に各々の設定条件を入力するようにしても良い。また、ネットワーク2に接続された管理用のコンピュータが、ネットワーク2を介して、全てのノード1に各々の設定条件を入力するようにしても良い。
各プロセスは、ステージ毎に他のプロセスとの間でバリアポイント到着の信号を通信し合う。例えば、図4の最初のステージ#1において、各プロセスは、バリア同期ポイントに到着する。到着のタイミングは、各プロセスで異なる。この場合、各プロセスは、バタフライネットワーク上における次ステージの予め設定されたプロセスに信号を送る。バタフライネットワークは、図1に示すネットワーク2である。即ち、バタフライネットワークは、バタフライによりバリア同期を行う、図2に示すノード1が接続されたネットワークである。これは以下の図においても同じである。
次のステージ#2において、各プロセスは、バタフライネットワークの前のステージ#1の予め設定されたプロセスからの信号を待ち合わせる。各プロセスは、他のプロセスから信号を受信した場合、次のステージ#3の予め設定されたプロセスに信号を送る。
最後のステージ#3において、各プロセスは、前ステージ#2の予め設定されたプロセスからの信号を待ち合わせる。各プロセスが他のプロセスからの信号を受けると、全てのプロセス#0〜#3がバリアポイントに到着した後にバリア同期が成立した事を知る。この後、各プロセスは、バリア同期が成立したので、次の処理を開始する。
(第1の実施の形態のリダクション演算装置の構成)
図5は第1の実施の形態のリダクション演算装置の構成図である。図6は図5の構成の詳細ブロック図である。図7は図5及び図6のパケットのフォーマットの説明図である。図5及び図6のリダクション演算装置6は、図1及び図2に示すコンピュータネットワークを構成するノード1に設けられる。
リダクション演算装置6は、バリア同期を取りつつリダクション演算を行う。図5に示すように、リダクション演算装置6は、リダクション演算部7と同期装置(以下「同期装置」という)8と受信装置10と送信装置12とを備える。同期装置82は、制御部80と複数の制御レジスタ82とを備える。
受信装置10は、ネットワーク2からのパケットを受信し、パケット内のデータをリダクション演算部7に転送し、パケット内の制御情報(同期信号、演算タイプ、データタイプ、送信宛先)を同期装置8の制御部80に転送する。送信装置12は、同期装置8の制御部80のパケット送信指示に応じて、パケットをネットワーク12に送信する。
同期装置8の制御部80は、CPU3から送信先とリダクション開始指示を受け、受信装置10からパケット内の制御情報(同期信号、演算タイプ、データタイプ、送信宛先)を受ける。同期装置8の制御部80は、複数の制御レジスタ82を参照して、その参照結果に基づいて、バリア同期の成立を判定し、リダクション演算器7の記憶制御及び演算制御、送信装置12の送信制御を行う。
同期装置8の複数の制御レジスタ82の各々は、各ステージに対応し、データの同期と演算、送信に使用する。換言すれば、複数の制御レジスタ82を備えることにより、各々の演算毎に同期信号を制御レジスタ82に保持し、バリア同期を実行することが可能となる。従って、1組の演算がn個の第1の同期信号で構成される場合、同期装置8の制御部80は、各々がn個の第1の同期信号で構成される複数の組について、各々、バリア同期を実行する。この場合、1個のノード1上で複数のプロセスが動作する。
リダクション演算部7は、受信装置10からの他のノードのデータと、CPU3からの入力データとを受ける。リダクション演算部7は、後述するように記憶装置と演算器とを含む。リダクション演算部7は、同期装置8からの記憶制御及び演算制御の指示に従い、記憶装置で各ステージのデータを記憶し、演算器で記憶したデータ間で指定された演算を行い、演算結果を出力する。
次に、リダクション演算処理手順を説明する。ノード1のCPU3は予め、制御レジスタ82の宛先(Destination)に制御信号とデータの送信先を指定する。例えば、図4のように、バタフライのアルゴリズムに基づいて、送信先を指定する。リダクション演算開始時には、ノード1のCPU3は入力データとリダクション演算開始の指示をリダクション演算装置6に送る。本実施の形態では、CPU3からのリダクション演算指示、及び前ステージからの制御信号で演算タイプ及びデータタイプを指定する。
リダクション演算装置6は始点の制御レジスタ82の宛先(Destination)で指定された送信先に制御信号とデータを送る。制御信号とデータを受け取った受信元のリダクション演算装置6は、送信先で指定された制御レジスタの同期信号(Signal)を更新し、データをリダクション演算部7の記憶装置に書き込む。同期装置8が、各制御レジスタ82を参照し、データの同期が成立したと判定すると、リダクション演算部7は、演算タイプで指定された演算を行い、演算結果と制御信号を宛先(Destination)で指定された送信先へ送る。
同期装置8の制御部80は、制御レジスタ82の同期信号(Signal)を用いて、同期成立を判定する。以降は、同様の処理を続け、終点の制御レジスタ82で同期が成立すると、リダクション演算装置6は、演算結果を出力データレジスタに書き、リダクション演算完了をノードのCPU3に通知する。
このような構成において、本実施の形態では、CPU3が、演算開始指示と演算データとともに、演算タイプ及びデータタイプを同期装置8に指定し、同期装置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において、シグナルレジスタ84Aは符号Signalを付して表し、宛先レジスタ84Bは符号Destination を付して表し、演算タイプレジスタ84Cは符号OpTypeを付して表し、データタイプレジスタ84Dは符号DataTypeを付して表す。
シグナルレジスタ84Aは、制御レジスタ82−0〜82−Nに対応するプロセス又はノードから同期信号を受信したか否かを示す情報を格納する。即ち、シグナルレジスタ84Aは、同期信号の待ち合わせ状況を示す情報を格納する。宛先レジスタ84Bは、制御レジスタ82−0〜82−Nが同期信号を送信すべき宛先であるプロセス又はノードを示す情報を格納する。即ち、宛先レジスタ84Bは、同期成立の後に同期信号の送信先を示す情報を格納する。
宛先レジスタ84Bは、同期信号の送信先が他のノードである場合、送信先となる宛先ノードアドレスおよび制御レジスタ番号を格納する。宛先ノードアドレスは、ノードのネットワークアドレスであり、一意に定まる。制御レジスタ番号は、制御レジスタ82−0〜82−Nの番号であり、ノードにおいて一意に定まる。宛先ノードアドレスは、ノードに予め付与されたノード番号であっても良い。制御レジスタ番号は、制御レジスタ82−0〜82−Nに予め付与された番号又は組番号であっても良い。
宛先ノードアドレス及び制御レジスタ番号を指定することにより、1個のノードにおける1個の制御レジスタが定まる。宛先レジスタは、同期信号の送信先が自ノード1である場合、自プロセス又は自ノード1の同期装置8の制御レジスタ番号を格納する。
タイプレジスタ84Cは、リダクション演算の演算タイプを格納する。演算タイプは、例えば、総和(SUM),最大値演算(MAX),最小値演算(MIN)である。データタイプレジスタ84Dは、リダクション演算のデータのタイプを格納する。データタイプは、例えば、整数(Int)データか浮動小数点データか、倍精度か単精度か、バイト数等である。
受信装置10は、ネットワーク2を介して他ノードと接続され、同期信号を含む他ノードからのパケットを受信する。図7に示すように、パケットは、演算タイプ、データタイプ、宛先(送信先アドレス、送信先制御レジスタ番号)及びデータのフォーマットを持つ。受信装置10は、ネットワーク2を介して他のノードのリダクション演算装置6からパケットを受信した場合、受信装置10は、受信したパケットに含まれる同期信号、演算タイプ、データタイプ、データ及び宛先の情報からを取り出し、同期信号、演算タイプ、データタイプ、及び宛先を同期装置8の制御部80に送信する。
宛先は、同期信号の宛先となる宛先ノードアドレス及び制御レジスタの制御レジスタ番号である。この宛先により、取出された宛先ノードアドレスに対応するノード及び取出された制御レジスタ番号に対応する制御レジスタ82−0〜82−Nを定めることができる。又、受信装置10は、パケットのデータをマルチプレクサ72に出力する。
次に、リダクション演算部7を説明する。リダクション演算の第1の対象データは、CPU3から、ライトデータとして入力データレジスタ70−0〜70−mに入力される。制御部80のリードアドレスに対応する入力データレジスタ70−0〜70−mからリードデータ(ライトデータ)が読みだされ、マルチプレクサ72に入力される。リダクション演算の第2の対象データは、ネットワーク2から受信装置10を介してパケットから取出されて、マルチプレクサ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も同様である。
ライトデータを書き込むべき入力データレジスタ70−0〜70−mは、CPU3からライトアドレスにより指定される。リードデータを読み出すべき入力データレジスタ70−0〜70−mは、制御部80からのリードアドレスにより指定される。入力データレジスタ70−0〜70−mのリードアドレスは、例えば受信装置10が受信したパケットにおける宛先が指示する制御レジスタ82−0〜82−Nに対応し、当該制御82−0〜82−Nの制御レジスタ番号に基づいて生成される。
ライトデータを書き込むべき出力データレジスタ79−0〜79−mは、制御部80からのライトアドレスにより指定される。出力データレジスタ79−0〜79−mのライトアドレスは、当該ライトデータのリダクション演算に用いられる制御レジスタ82−0〜82−Nに対応し、当該制御レジスタ82−0〜82―Nの制御レジスタ番号に基づいて生成される。リードデータを読み出すべき出力データレジスタ82−0〜82−Nは、CPU3からのリードアドレスにより指定される。
マルチプレクサ72は、制御部80からの入力部選択の指示に従って、入力データレジスタ70−0〜70mからのデータ、又は、受信装置10からのデータを選択する。選択されたデータは、スイッチ73を介して、記憶装置74又は演算器75に入力する。制御部80は、受信装置10から同期信号及び宛先が入力された場合には、受信装置10のデータをマルチプレクサ842が選択し、これ以外の場合には、入力データレジスタ70−0〜70−mのリードデータをマルチプレクサ842が選択するように入力部選択指示を行う。
スイッチ73は、制御部80からの入出力部選択の指示に従って、マルチプレクサ72又は演算器75からの入力を、記憶装置74又は演算器75に入力する。制御部80は、マルチプレクサ72からデータが入力された場合には、マルチプレクサ842のデータを選択し、これ以外の場合には、演算器75のデータを選択するようにスイッチ73を制御する。また、制御部80は、同期が成立した場合には、入力されたデータを演算器845に出力し、これ以外の場合には、入力されたデータを記憶装置844に出力するように、スイッチ73を制御する。
記憶装置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から入力するデータ(第1データ)と、入力データレジスタ70−0〜70−mから入力するデータと、受信装置10が受信したパケットのデータ又は演算器75が前ステージで行なった演算結果(第2データ)との間で、指示された種類の演算を行なう。制御部80は、演算の種類を示すタイプレジスタ84Cの値に基づいて、演算指示を生成する。
デマルチプレクサ76は、制御部80からの出力部選択指示に従って、演算器75からの入力を、出力データレジスタ79−0〜79−m又は送信装置12に出力する。制御部80は、リダクション演算が完了する以前には、演算器75からのデータを送信装置12に出力し、これ以外の場合(リダクション演算が完了した場合)には、出力データレジスタ79−0〜79−mに出力するようにデマルチプレクサ76を制御する。
又、制御部80は、同期成立の後に、第2の同期信号の送信を送信装置12に指示(図示「パケット送信指示」)すると共に、予め定められたリダクション演算をリダクション演算部84に指示する。また、送信装置12は、第2の同期信号送信の指示を受信した場合、第2の同期信号と共に、演算器75におけるリダクション演算の結果をネットワーク2に送信する。
(第1の実施の形態のリダクション演算処理)
図8及び図9は本実施の形態のリダクション演算処理フロー図である。
(S1)リダクション演算を実行する前に、CPU3は、リダクション演算装置の同期装置9内の各制御レジスタ82−0〜82−Nの宛先(Destination)レジスタ84Bに送信先を書き込む。即ち、CPU3は、宛先レジスタ84Bに、バタフライ(Butterfly)などのリダクション演算のアルゴリズムにより決定された次ステージに対応したノードアドレスと制御レジスタ番号を設定する。このノードアドレスとして、他ノードのみの、自ノードのみの場合がある事を書きこむ。
(S2)CPU3はリダクション演算を開始するため、入力データを入力データレジスタ70−0〜70−mに、リダクション演算開始信号を同期装置8に送る。リダクション演算開始信号は、入力レジスタ番号と、最初のステージに対応した制御レジスタ番号と、演算タイプと、データタイプとを含む。
(S3)同期装置8の制御部80はリダクション演算開始の信号を受けると、演算タイプ、データタイプをリダクション開始信号で指定された制御レジスタ番号の制御レジスタのタイプレジスタ(OpType)84Cと、データタイプレジスタ(DataType)84Dとに書き込む。
(S4)制御レジスタへの書き込み後、同期装置8の制御部80はリダクション演算信号で指定された制御レジスタ82−0〜82−Nの宛先(Destination)レジスタ84Bの値を読む。
(S5)制御部80は、宛先(Destination)レジスタ84Bが自ノードを指定しているか、他のノードを指定しているかを判定する。制御部80は、宛先レジスタ84Bが他ノードを指定している場合には、送信装置12に対しデータとパケット送信指示信号を送る。送信装置12に送るデータは、指定された制御レジスタが最初のステージの時は、入力データレジスタ70−0の値である。又、指定された制御レジスタが後続のステージの時は、演算器75からの演算結果である。制御部80は、入力データレジスタ70−0の値を送信装置12に送る時は、演算器75の演算指示にバイパスを指定する。図7で示したように、制御部80が送るパケット送信指示信号は、送信先となるノードアドレス、送信先制御レジスタ番号、演算タイプ、データタイプである。送信装置12はデータと上記送信指示信号の情報を基にパケット(図7参照)を作成し、ネットワーク2へ送信する。
(S6)制御部80は、宛先レジスタ84Bが、自身の制御レジスタを指定している場合には、自身の同期装置8に同期信号を送るため、宛先(Destination)レジスタ84Bで指定された制御レジスタのシグナル(Signal)レジスタ84Aの値を読む。また、この時、制御部80は、不整合を検出するため、演算タイプ(OpType)レジスタ84Cとデータタイプ(DataType)レジスタ84Dの値も読む。
(S7)制御部80は、シグナルレジスタ84Aの値から同期成立か否かを判定する。シグナルレジスタ84Aに「1」が設定されている場合、制御部80は、同期成立と判定する。又、制御部80は、シグナルレジスタ84Aに「1」が設定されていないと、同期は成立していないと判定する。
(S8)制御部80は、同期が成立していないと判定した場合には、シグナルレジスタ84Aに「1」を書き込み、演算タイプレジスタ84C、データタイプレジスタ84Dに演算タイプ、データタイプを書き込む。演算タイプ、データタイプの値は、パケットの値又は前の制御レジスタの値である。即ち、直前に後述するステップS16、S5,S6を実行している場合には、ステップS16の値、もしくはS5で読み出した制御レジスタの演算タイプ、データタイプの値である。逆に、直前にステップS10、S11の処理をしている場合には、ステップS10で受け取ったパケットの値である。
(S9)制御部80は、データを記憶装置74の制御レジスタに対応するアドレスに格納する。格納するデータは制御レジスタ82−0が最初のステージである場合は、入力データレジスタ70−0の値、後続のステージである場合は、前ステージの演算結果である。
(S10)制御部80は、パケットの受信を待ち合わせる。受信装置10がネットワーク2からパケットを受信した場合、受信装置10は受信したパケットを元にデータ、同期信号、宛先、演算タイプ、データタイプを取り出し、マルチプレクサ72、同期装置8へ送信する。
(S11)制御部80は受信装置10から信号を受け取けた場合、宛先で指定された制御レジスタのシグナルレジスタ84AのSignal、演算タイプレジスタ84CのOpType、データタイプレジスタ84DのDataTypeを読む。そして、ステップS7に戻り、以降、同期成立まで、ステップS7〜S11の処理を繰り返す。
(S12)ステップS7の判定で、制御部80は、同期が成立したと判定した場合、制御部80は、演算タイプ、データタイプの不整合の検出を行う。不整合の検出は、制御レジスタ82−0〜82−mの演算タイプレジスタ84CのOpType、データタイプレジスタ84DのDataTypeと、演算タイプ、データタイプとの比較によって行う。演算タイプ、データタイプの値は、直前に後述するステップS16、S5,S6を実行している場合には、ステップS16もしくはS5で読み出した制御レジスタの演算タイプ、データタイプの値である。逆に、直前にステップS10、S11の処理をしている場合には、ステップS10で受け取ったパケットの値である。制御部80は、比較により、不一致、もしくは比較した値の中で不整合を示す値があれば、不整合が発生していると判定する。制御部80は、比較により一致していれば、不整合は発生していないと判定する。
(S13)不整合が発生していないと判定した場合には、演算を行なう。演算対象となるデータは、(1)制御レジスタが最初のステージの次ステージに対応している場合、入力データレジスタ70−1の値、(2)制御レジスタがそれ以降のステージであり、同期成立の要因がパケットからの同期信号である場合には、パケットに含まれるデータ、(3)自身の同期装置からの同期信号である場合は、前ステージでの演算結果である。制御部80の制御により、演算器75は、これらの(1)〜(3)のいずれかのデータと、記憶装置74内で同期が成立した制御レジスタに対応するアドレスに格納するデータとの間での演算を行なう。
(S14)逆に、制御部80は、不整合が発生したと判定した場合、制御レジスタ82−0〜82−mの演算タイプレジスタ84C、データタイプレジスタ84Dに不整合を示す値をライトする。
(S15)制御部80は、同期が成立した制御レジスタが最終ステージに対応しているかを判定する。
(S16)制御部80は、同期が成立した制御レジスタが最終ステージに対応していないと判定した場合、ステップS7でリードしたシグナルレジスタ84Aと同じ制御レジスタの宛先(Destination)レジスタ84Bの値を読み、図8のステップS5に戻る。
(S17)制御部80は、同期が成立した制御レジスタが最終ステージに対応していると判定した場合、制御部80は、演算タイプレジスタ84C、データタイプレジスタ84Dの値を基に、リダクション演算完了信号をCPU3に送信する。又、制御部80は、演算器75の演算結果を出力データレジスタ79−0〜79−mに格納する。リダクション演算完了信号は、演算タイプレジスタ84C、データタイプレジスタ84Dの値を基に作成されるため、不整合の有無の情報を持つ。即ち、制御部80は、演算タイプレジスタ84C、データタイプレジスタ84Dの値が不整合を示している場合には、リダクション演算完了信号とともに、不整合をCPU3に通知する。
(S18)CPU3はリダクション演算完了の信号を受け取り、リダクション演算完了、もしくは不整合発生を検出する。
このように、制御部80は、同期成立時に複数の演算データ(制御レジスタ)の演算タイプ及びデータタイプの整合性を判定するため、同期成立時の演算前に不整合を判定でき、演算処理の誤りやハングアップを未然に防止できる。実施の形態では、演算タイプとデータタイプとの両方の整合性を検出しているが、演算タイプとデータタイプのいずれかであっても良い。
図10は、図5乃至図9のリダクション演算装置のバタフライによるリダクション演算処理における各ステージ間での同期信号の流れを示す。図10において、図8及び図9で説明したものと同一のものは、同一の記号で示す。又、図1に示したように、4つのノード#1、#2、#3、#4がバタフライによるリダクション演算を行う例で説明する。
図10において、各制御レジスタ82−0〜82−2は各ステージに対応し、データの同期と演算、送信に用いる。記憶装置74は各ステージのデータを記憶し、演算器75は記憶したデータ間で演算を行う。入力・出力データレジスタ70−0,79−0はリダクション演算の入力データとリダクション演算結果を保持する。
次にリダクション演算処理手順を以下に記す。各ノード#1〜#4のCPU3は、制御レジスタ82−0の宛先(Destination)に制御信号とデータの送信先を指定する。図10ではバタフライ(Butterfly)のアルゴリズムに基づいて送信先を指定する。リダクション演算開始時には、各ノードのCPU3は、入力データと、演算タイプ及びデータタイプを含むリダクション演算開始の指示とをリダクション演算装置6に送る。
リダクション演算装置6は始点の制御レジスタ(制御レジスタ82−0)の宛先(Destination)で指定された送信先に、制御信号とデータを送る。制御信号とデータを受け取ったリダクション演算装置6は、送信先で指定された制御レジスタ82−1のシグナル(Signal)を更新し、データを記憶装置74に書き込む。
各制御レジスタでデータの同期が成立すると、演算器75は、演算タイプで指定された演算を行い、演算結果と制御信号を宛先(Destination)で指定された送信先へ送る。同期の判定は、制御レジスタのシグナル(Signal)を用いる。以降は同様の処理を続け、終点の制御レジスタ(制御レジスタ82−2)で同期が成立すると、演算結果を出力データレジスタ79−0に書き込み、リダクション演算完了をノードのCPU3に通知する。
図10において、ノード#1に着目すると、以下のように同期信号リダクション及び演算対象のデータが流れる。例えば、ノード#1は、演算対象のデータである入力データを受信した場合、リダクション演算開始信号の入力によりリダクション演算開始を指示される。これに応じて、ノード#1は、ステージ#1において、予め指示された宛先であるノード#1及びノード#2に、同期信号及び演算対象のデータを送信する。
ステージ#2において、自己の同期信号及び演算対象のデータを受信したノード#1は、予め指示されたノード#2からの同期信号を待ち合わせ、また、受信した演算対象のデータを記憶装置74及び演算器75に保持する。ステージ#2の同期信号及び演算対象のデータは、ノード#2が入力データを受信した後に、同様にして、ノード#2からノード#1に到達する。
ノード#2からの同期信号が到達した場合、ノード#1において、自己の同期信号と、ノード#2からの同期信号との待ち合わせつまり2つの信号の同期が成立する。この同期が成立すると、ノード#1は、ステージ#2において、自己の演算対象のデータとノード#2からの演算対象のデータとの間の演算を実行し、予め指示された宛先であるノード#1及びノード#3に、同期信号及び演算結果を送信する。この演算結果は、ノード#1及びノード#3において、演算対象のデータとして用いられる。
ステージ#3において、自己の同期信号及び演算対象のデータを受信したノード#1は、予め指示されたノード#3からの同期信号を待ち合わせ、また、受信した演算対象のデータを記憶装置74及び演算器75に保持する。ステージ#3の同期信号及び演算対象のデータは、ノード#3が入力データを受信し、かつ、入力データを受信したノード#4からの同期信号を受信した後に、同様にして、ノード#3からノード#1に到達する。
ノード#3からの同期信号が到達した場合、ノード#1において、自己の同期信号と、ノード#3からの同期信号との同期が成立する。この同期が成立すると、ノード#1は、ステージ#3において、自己の演算対象のデータとノード#3からの演算対象のデータとの間の演算を実行し、予め指示された出力データレジスタ79−0に、演算結果を出力する。
この後、ノード#1のリダクション演算装置6は、リダクション演算完了信号をCPU3に出力すると共に、出力データレジスタ79−0の保持されたデータをリダクション演算結果としてCPU3に出力する。
尚、ノード#2〜4においても、同様にして、ステージ#3において、同期が成立し、リダクション演算完了信号とリダクション演算結果を出力する。これにより、バタフライによるリダクション演算が実行される。
図11は、図10のバタフライによるリダクション演算処理における不整合検出処理の説明図である。図11において、図10で示したものと同一のものは同一の記号で示してある。又、図11においても、図1に示したように、4つのノード#1、#2、#3、#4がバタフライによるリダクション演算を行う例で説明する。
各ノードのCPU3は演算タイプとデータタイプを指定したリダクション演算開始の指示と、入力データをリダクション演算装置6に送る。図11の例では、ノード#1〜#3が、演算タイプとして、総和を求める計算(SUM)を指定しており、ノード#4では、最大値を求める計算(MAX)を指定しているため、不整合が起きている。
入力データと演算開始指示を受け取ったリダクション演算装置6は、入力データと制御信号を宛先(Destination)で指定された送信先に送る。制御信号にはノードから指定された演算タイプとデータタイプの情報が含まれている。リダクション演算装置6は、制御信号、データを受け取ると制御レジスタ82−0のシグナル(Signal)レジスタを更新し、データを記憶装置に書き込む。
リダクション演算装置6の制御部80は、データの同期が成立すると、まず演算タイプのチェックを行う。ここで、制御部80が、両者の演算タイプが等しくない、もしくは不整合を示す制御信号を受け取っていると判断した場合には、演算を行わず、不整合を示す制御信号を送る。終点の制御レジスタ82−2の場合には、演算タイプの不整合をノードのCPU3に通知する。
図11では、ノード#3とノード#4の制御レジスタ82−1で演算タイプが最大値検出(MAX)と総和計算(SUM)との不整合が起きており、ノード#3、#4の制御部80が、不整合を示す信号を送信している。
不整合を示す制御信号は全ノードの制御レジスタ82−2に送られ、演算タイプの不整合が通知される。終点の制御レジスタ82−2は、全ノードの始点の制御レジスタ82−0に対して、ツリー状にネットワークが組まれているため、必ずどこかの制御レジスタで不整合が検出できる。
データタイプも同様に制御レジスタでデータタイプのチェックを行い、両者が等しくない、もしくは不整合を示す制御信号を受け取っていれば、不整合を示す信号を送る。
このように、ノード間で演算タイプ、データタイプの不整合を、リダクション演算装置が同期成立時に検出するため、不整合のある演算を未然に防止でき、処理が完了せずにハングアップとなることを防止でき、もしくは誤った計算結果を演算することを防止できる。
又、リダクション演算装置で検出するため、ノード間でリダクション演算データとは別に演算タイプ、データタイプの通信を行い、不整合を検出する手間を省くことができる。このため、リダクション演算の処理時間の長期化を防止できる。
(第2の実施の形態のリダクション演算装置の構成)
図12は第2の実施の形態のリダクション演算処理の説明図である。図12において、図5乃至図11で説明したものと同一のものは、同一の記号で示してある。図12は、3つのノード#1、#2、#3が、図10で説明したリダクション演算を実行する例を示す。
バタフライ(Butterfly)アルゴリズムにおいては、ノード数が2のべき乗でない場合には、2のべき乗に切り上げた時の追加ノードが持つ制御レジスタをいずれかのノードに持たせる。図12では、図10のノード#4の制御レジスタ82−3をノード#3が持つ。この制御レジスタ82−3は、ノード#4から制御信号を入力されないため、制御レジスタ82−3のシグナルレジスタ84Aの値を既に制御信号を1つ受け取ったときの値に設定する。これによって、ノード#3からの同期信号が制御レジスタ82−3に入力された時点で、同期成立となる。またこの制御レジスタ82−3は演算をしてはいけないため、後述するマスクレジスタを有効にする。
これにより、3つのノード#1、#2、#3を用いても、図10と同様のリダクション演算処理を実行できる。
図13は図12の第2の実施の形態のリダクション演算装置のブロック図である。図13において、図6で説明したものと同一のものは同一の記号で示してある。図13に示すように、リダクション演算装置6は、受信装置10と同期装置8とリダクション演算部7と送信装置12とを有する。
リダクション演算部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において、シグナルレジスタ84Aは符号Signalを付して表し、宛先レジスタ84Bは符号Destination を付して表し、演算タイプレジスタ84Cは符号OpTypeを付して表し、データタイプレジスタ84Dは符号DataTypeを付して表し、マスクレジスタ84Eは符号Maskを付して表す。
シグナルレジスタ84Aは、制御レジスタ82−0〜82−Nに対応するプロセス又はノードから同期信号を受信したか否かを示す情報を格納する。宛先レジスタ84Bは、制御レジスタ82−0〜82−Nが同期信号を送信すべき宛先であるプロセス又はノードを示す情報を格納する。即ち、宛先レジスタ84Bは、同期成立の後に同期信号の送信先を示す情報を格納する。
宛先レジスタ84Bは、同期信号の送信先が他のノードである場合、送信先となる宛先ノードアドレスおよび制御レジスタ番号を格納する。タイプレジスタ84Cは、リダクション演算の演算タイプを格納する。演算タイプは、例えば、総和(SUM),最大値演算(MAX),最小値演算(MIN)である。データタイプレジスタ84Dは、リダクション演算のデータのタイプを格納する。データタイプは、例えば、整数(Int)データか浮動小数点データか、倍精度か単精度か、バイト数等である。
第2の実施の形態では、制御レジスタ82−0〜82−Nにマスクレジスタ84Eを追加する。制御部80は、マスクレジスタ84Eが有効の時、同期が成立しても、不整合の検出、演算を行わない。即ち、図12で説明したノード#3の制御レジスタ82−4のような、ノード数を2のべき乗に切り上げた時に追加される制御レジスタに対して、マスクレジスタ84Eを有効にする。
受信装置10は、ネットワーク2を介して他ノードと接続され、同期信号を含む他ノードからのパケットを受信する。受信装置10は、ネットワーク2を介して他のノードのリダクション演算装置6から図7で説明したパケットを受信した場合、受信装置10は、受信したパケットに含まれる同期信号、演算タイプ、データタイプ、データ及び宛先の情報からを取り出し、同期信号、演算タイプ、データタイプ、及び宛先を同期装置8の制御部80に送信する。
宛先は、同期信号の宛先となる宛先ノードアドレス及び制御レジスタの制御レジスタ番号である。この宛先により、取出された宛先ノードアドレスに対応するノード及び取出された制御レジスタ番号に対応する制御レジスタ82−0〜82−Nを定めることができる。又、受信装置10は、パケットのデータをマルチプレクサ72に出力する。
リダクション演算の第1の対象データは、CPU3から、ライトデータとして入力データレジスタ70−0〜70−mに入力される。制御部80のリードアドレスに対応する入力データレジスタ70−0〜70−mからリードデータ(ライトデータ)が読みだされ、マルチプレクサ72に入力される。リダクション演算の第2の対象データは、ネットワーク2から受信装置10を介してパケットから取出されて、マルチプレクサ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も同様である。
ライトデータを書き込むべき入力データレジスタ70−0〜70−mは、CPU3からライトアドレスにより指定される。リードデータを読み出すべき入力データレジスタ70−0〜70−mは、制御部80からのリードアドレスにより指定される。入力データレジスタ70−0〜70−mのリードアドレスは、例えば受信装置10が受信したパケットにおける宛先が指示する制御レジスタ82−0〜82−Nに対応し、当該制御82−0〜82−Nの制御レジスタ番号に基づいて生成される。
ライトデータを書き込むべき出力データレジスタ79−0〜79−mは、制御部80からのライトアドレスにより指定される。出力データレジスタ79−0〜79−mのライトアドレスは、当該ライトデータのリダクション演算に用いられる制御レジスタ82−0〜82−Nに対応し、当該制御レジスタ82−0〜82―Nの制御レジスタ番号に基づいて生成される。リードデータを読み出すべき出力データレジスタ82−0〜82−Nは、CPU3からのリードアドレスにより指定される。
マルチプレクサ72は、制御部80からの入力部選択の指示に従って、入力データレジスタ70−0〜70mからのデータ、又は、受信装置10からのデータを選択する。選択されたデータは、スイッチ73を介して、記憶装置74又は演算器75に入力する。制御部80は、受信装置10から同期信号及び宛先が入力された場合には、受信装置10のデータをマルチプレクサ842が選択し、これ以外の場合には、入力データレジスタ70−0〜70−mのリードデータをマルチプレクサ842が選択するように入力部選択指示を行う。
スイッチ73は、制御部80からの入出力部選択の指示に従って、マルチプレクサ72又は演算器75からの入力を、記憶装置74又は演算器75に入力する。制御部80は、マルチプレクサ72からデータが入力された場合には、マルチプレクサ842のデータを選択し、これ以外の場合には、演算器75のデータを選択するようにスイッチ73を制御する。また、制御部80は、同期が成立した場合には、入力されたデータを演算器845に出力し、これ以外の場合には、入力されたデータを記憶装置844に出力するように、スイッチ73を制御する。
記憶装置74は、マルチプレクサ72、スイッチ73を介して入力されたデータを記憶する。即ち、記憶装置74は、リダクション演算中のデータを保持する。記憶装置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は、記憶装置74から入力するデータ(第1データ)と、入力データレジスタ70−0〜70−mから入力するデータと、受信装置10が受信したパケットのデータ又は演算器75が前ステージで行なった演算結果(第2データ)との間で、指示された種類の演算を行なう。制御部80は、演算の種類を示すタイプレジスタ84Cの値に基づいて、演算指示を生成する。
デマルチプレクサ76は、制御部80からの出力部選択指示に従って、演算器75からの入力を、出力データレジスタ79−0〜79−m又は送信装置12に出力する。制御部80は、リダクション演算が完了する以前には、演算器75からのデータを送信装置12に出力し、これ以外の場合(リダクション演算が完了した場合)には、出力データレジスタ79−0〜79−mに出力するようにデマルチプレクサ76を制御する。
又、制御部80は、同期成立の後に、第2の同期信号の送信を送信装置12に指示(図示「パケット送信指示」)すると共に、予め定められたリダクション演算をリダクション演算部84に指示する。また、送信装置12は、第2の同期信号送信の指示を受信した場合、第2の同期信号と共に、演算器75におけるリダクション演算の結果をネットワーク2に送信する。
(第2の実施の形態のリダクション演算処理)
図14及び図15は第2の実施の形態のリダクション演算処理フロー図である。
(S21)リダクション演算を実行する前に、CPU3は、リダクション演算装置の同期装置9内の各制御レジスタ82−0〜82−Nの宛先(Destination)レジスタ84Bに送信先を書き込む。即ち、CPU3は、宛先レジスタ84Bに、バタフライ(Butterfly)などのリダクション演算のアルゴリズムにより決定された次ステージに対応したノードアドレスと制御レジスタ番号を設定する。このノードアドレスとして、他ノードのみの、自ノードのみの場合がある事を書きこむ。又、CPU3は、リダクション演算装置の同期装置9内の各制御レジスタ82−0〜82−Nのシグナルレジスタ84A,マスクレジスタ84Eに設定値を書き込む。
(S22)CPU3はリダクション演算を開始するため、入力データを入力データレジスタ70−0〜70−mに、リダクション演算開始信号を同期装置8に送る。リダクション演算開始信号は、入力レジスタ番号と、最初のステージに対応した制御レジスタ番号と、演算タイプと、データタイプとを含む。
(S23)同期装置8の制御部80はリダクション演算開始の信号を受けると、演算タイプ、データタイプをリダクション開始信号で指定された制御レジスタ番号の制御レジスタのタイプレジスタ(OpType)84Cと、データタイプレジスタ(DataType)84Dとに書き込む。
(S24)制御レジスタへの書き込み後、同期装置8の制御部80はリダクション演算信号で指定された制御レジスタ82−0〜82−Nの宛先(Destination)レジスタ84Bの値を読む。
(S25)制御部80は、宛先(Destination)レジスタ84Bが自ノードを指定しているか、他のノードを指定しているかを判定する。制御部80は、宛先レジスタ84Bが他ノードを指定している場合には、送信装置12に対しデータとパケット送信指示信号を送る。送信装置12に送るデータは、指定された制御レジスタが最初のステージの時は、入力データレジスタ70−0の値である。又、指定された制御レジスタが後続のステージの時は、演算器75からの演算結果である。制御部80は、入力データレジスタ70−0の値を送信装置12に送る時は、演算器75の演算指示にバイパスを指定する。図7で示したように、制御部80が送るパケット送信指示信号は、送信先となるノードアドレス、送信先制御レジスタ番号、演算タイプ、データタイプである。送信装置12はデータと上記送信指示信号の情報を基にパケット(図7参照)を作成し、ネットワーク2へ送信する。
(S26)制御部80は、宛先レジスタ84Bが、自身の制御レジスタを指定している場合には、自身の同期装置8に同期信号を送るため、宛先(Destination)レジスタ84Bで指定された制御レジスタのシグナル(Signal)レジスタ84Aの値を読む。また、この時、制御部80は、不整合を検出するため、演算タイプ(OpType)レジスタ84Cとデータタイプ(DataType)レジスタ84Dの値も読む。
(S27)制御部80は、シグナルレジスタ84Aの値から同期成立か否かを判定する。シグナルレジスタ84Aに「1」が設定されている場合、制御部80は、同期成立と判定する。又、制御部80は、シグナルレジスタ84Aに「1」が設定されていないと、同期は成立していないと判定する。
(S28)制御部80は、同期が成立していないと判定した場合には、シグナルレジスタ84Aに「1」を書き込み、演算タイプレジスタ84C、データタイプレジスタ84Dに演算タイプ、データタイプを書き込む。演算タイプ、データタイプの値は、パケットの値又は前の制御レジスタの値である。即ち、直前に後述するステップS37、S25,S26を実行している場合には、ステップS37の値、もしくはS25で読み出した制御レジスタの演算タイプ、データタイプの値である。逆に、直前にステップS30、S31の処理をしている場合には、ステップS30で受け取ったパケットの値である。
(S29)制御部80は、データを記憶装置74の制御レジスタに対応するアドレスに格納する。格納するデータは制御レジスタ82−0が最初のステージである場合は、入力データレジスタ70−0の値、後続のステージである場合は、前ステージの演算結果である。
(S30)制御部80は、パケットの受信を待ち合わせる。受信装置10がネットワーク2からパケットを受信した場合、受信装置10は受信したパケットを元にデータ、同期信号、宛先、演算タイプ、データタイプを取り出し、マルチプレクサ72、同期装置8へ送信する。
(S31)制御部80は受信装置10から信号を受け取った場合、宛先で指定された制御レジスタのシグナルレジスタ84AのSignal、演算タイプレジスタ84CのOpType、データタイプレジスタ84DのDataTypeを読む。そして、ステップS27に戻り、以降、同期成立まで、ステップS27〜S31の処理を繰り返す。
(S32)ステップS27の判定で、制御部80は、同期が成立したと判定した場合、制御部80は、制御レジスタ82−0〜82−mのマスクレジスタ84Eの値を判定する。前述のように、マスクレジスタ84Eが有効(値{1})の時、同期が成立しても、不整合の検出、演算を行わないために設けられている。即ち、図12で説明したノード#3の制御レジスタ82−4のような、ノード数を2のべき乗に切り上げた時に追加される制御レジスタに対して、ステップS21でマスクレジスタ84Eを有効に設定する。制御部80は、マスクレジスタ84Eの値が「1」(有効)であると判断した制御レジスタに対し、ステップS36に進む。
(S33)一方、制御部80は、マスクレジスタ84Eの値が「1」(有効)であると判断した制御レジスタに対し、演算タイプ、データタイプの不整合の検出を行う。不整合の検出は、制御レジスタ82−0〜82−mの演算タイプレジスタ84CのOpType、データタイプレジスタ84DのDataTypeと、演算タイプ、データタイプとの比較によって行う。演算タイプ、データタイプの値は、直前に後述するステップS37、S25,S26を実行している場合には、ステップS37もしくはS25で読み出した制御レジスタの演算タイプ、データタイプの値である。逆に、直前にステップS30、S31の処理をしている場合には、ステップS30で受け取ったパケットの値である。制御部80は、比較により、不一致、もしくは比較した値の中で不整合を示す値があれば、不整合が発生していると判定する。制御部80は、比較により一致していれば、不整合は発生していないと判定する。
(S34)不整合が発生していないと判定した場合には、演算を行なう。演算対象となるデータは、(1)制御レジスタが最初のステージの次ステージに対応している場合、入力データレジスタ70−1の値、(2)制御レジスタがそれ以降のステージであり、同期成立の要因がパケットからの同期信号である場合には、パケットに含まれるデータ、(3)自身の同期装置からの同期信号である場合は、前ステージでの演算結果である。制御部80の制御により、演算器75は、これらの(1)〜(3)のいずれかのデータと、記憶装置74内で同期が成立した制御レジスタに対応するアドレスに格納するデータとの間での演算を行なう。
(S35)逆に、制御部80は、不整合が発生したと判定した場合、制御レジスタ82−0〜82−mの演算タイプレジスタ84C、データタイプレジスタ84Dに不整合を示す値をライトする。
(S36)制御部80は、同期が成立した制御レジスタが最終ステージに対応しているかを判定する。
(S37)制御部80は、同期が成立した制御レジスタが最終ステージに対応していないと判定した場合、ステップS27でリードしたシグナルレジスタ84Aと同じ制御レジスタの宛先(Destination)レジスタ84Bの値を読み、図14のステップS25に戻る。
(S38)制御部80は、同期が成立した制御レジスタが最終ステージに対応していると判定した場合、制御部80は、演算タイプレジスタ84C、データタイプレジスタ84Dの値を基に、リダクション演算完了信号をCPU3に送信する。又、制御部80は、演算器75の演算結果を出力データレジスタ79−0〜79−mに格納する。リダクション演算完了信号は、演算タイプレジスタ84C、データタイプレジスタ84Dの値を基に作成されるため、不整合の有無の情報を持つ。即ち、制御部80は、演算タイプレジスタ84C、データタイプレジスタ84Dの値が不整合を示している場合には、リダクション演算完了信号とともに、不整合をCPU3に通知する。
(S39)CPU3はリダクション演算完了の信号を受け取り、リダクション演算完了、もしくは不整合発生を検出する。
このように、制御部80は、同期成立時に複数の演算データ(制御レジスタ)の演算タイプ及びデータタイプの整合性を判定するため、同期成立時の演算前に不整合を判定でき、演算処理の誤りやハングアップを未然に防止できる。実施の形態では、演算タイプとデータタイプとの両方の整合性を検出しているが、演算タイプとデータタイプのいずれかであっても良い。
又、1の処理でノード数が2のべき乗でない時は、ノード数を2のべき乗に切り上げた時の追加ノードが持つ制御レジスタを他のノードに持たせる。この制御レジスタ82−3のマスクレジスタ84Eは「1」に、シグナル(Signal)レジスタ84Aは「1」に設定する。シグナルレジスタ84Aを「1」に設定する理由は、この制御レジスタ82−3が1つの同期信号しか受け取らないように制御するためである。シグナルレジスタ84Aの値が「1」になった後、マスクレジスタ84Eの値の判定を行う。マスクレジスタ84Eの値が「1」であれば、不整合の検出、演算処理を行なわない。このため、1の処理でノード数が2のべき乗でない時は、ノード数を2のべき乗に切り上げた時の追加ノードが持つ制御レジスタを他のノードに持たせても、不整合の検出が可能となる。
(第3の実施の形態のリダクション演算処理)
図16は第3の実施の形態のリダクション演算処理の説明図である。図16は図5乃至図6におけるパケットフォーマットの変形例を示す。図16に示すように、パケットフォーマットは、送信先となるノードアドレス、送信先制御レジスタ番号、演算タイプ、データタイプを有する。更に、第3の実施の形態では、パケットフォーマットにフィールドを追加し、追加フィールドに不整合が発生したノードアドレス、不整合発生制御レジスタ番号を通知する欄を設けた。
第3の実施の形態において、ノードの構成は、図2で説明した構成と同じである。又、リダクション演算装置の構成は、図6で説明した構成と同一である。
制御部80は、図9の処理フローのステップS12において、演算タイプとデータタイプの値の不整合を検出した場合に、図16のパケットの追加フィールドの不整合発生ノードアドレスと、不整合発生制御レジスタ番号に、自ノードのアドレスとリードした制御レジスタ番号の値を設定する。
また、第1の実施の形態の図9の処理フローのステップS17において、不整合が発生している場合には、制御部80が、図16のパケットの追加フィールドの値を出力レジスタに書きこみ、CPU3に、不整合が発生したノードアドレスと、制御レジスタ番号の通知を行う。その他の処理フローは第1の実施の形態の図8及び図9と同一である。
このように、リダクション演算装置が不整合の通知の際、不整合が発生したノード、制御レジスタ番号を共に通知するため、デバッグが容易となる。
(他の実施の形態)
前述の実施の形態では、並列処理のバリア同期として、バタフライアルゴリズムを例に説明したが、ペアワイズエクスチェンウィズリカーシブダブリング(Pair Wise exchange with Recursive Doubling)によるアルゴリズム等、他のアルゴリズムを適用できる。
以上、本発明を実施の形態により説明したが、本発明の趣旨の範囲内において、本発明は、種々の変形が可能であり、本発明の範囲からこれらを排除するものではない。
以上の実施の形態1〜3を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置において、前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、前記同期が成立した組のn個のデータ間で演算を行う演算器と、データと演算結果を保持する記憶装置と、前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行することを特徴としたリダクション演算装置。
(付記2)
付記1のリダクション演算装置において、同期装置の各組ごとにマスクレジスタを設け、前記同期装置は、前記マスクレジスタが有効な値を示す場合は、前記演算タイプ又はデータタイプの比較と、前記演算との実行を禁止することを特徴としたリダクション演算装置。
(付記3)
付記1のリダクション演算装置において、前記同期装置は、前記送信装置を介し、前記不整合を示す信号と前記不整合が発生した同期装置の番号を送ることを特徴としたリダクション演算装置。
(付記4)
付記1のリダクション演算装置において、前記同期装置は、複数の組の同期信号と前記送信先と前記演算タイプと前記データタイプとのいずれか一方とを格納する複数の制御レジスタと、前記受信した同期信号に基づき、前記同期成立を判定し、前記同期成立後、前記受信した演算タイプと前記データタイプとのいずれか一方と前記制御制御レジスタに格納された前記演算タイプと前記データタイプとのいずれか一方と比較し、不整合を検出する制御部とを有することを特徴とするリダクション演算装置。
(付記5)
付記2のリダクション演算装置において、前記同期装置は、前記同期成立後に、前記マスクレジスタを参照し、前記マスクレジスタが有効な値を示す場合は、前記演算タイプ又はデータタイプの比較と、前記演算との実行を禁止することを特徴としたリダクション演算装置。
(付記6)
付記1のリダクション演算装置において、前記同期装置は、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を少なくとも前記入力データを入力した送信先に送信することを特徴とするリダクション演算装置。
(付記7)
処理ユニットと、前記処理ユニット及びネットワークを介し複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置とを有し、前記リダクション演算装置は、前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、前記同期が成立した組のn個のデータ間で演算を行う演算器と、データと演算結果を保持する記憶装置と、前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行することを特徴とした処理装置。
(付記8)
付記7の処理装置において、前記リダクション演算装置は、前記同期装置の各組ごとにマスクレジスタを有し、前記同期装置は、前記マスクレジスタが有効な値を示す場合は、前記演算タイプ又はデータタイプの比較と、前記演算との実行を禁止することを特徴とした処理装置。
(付記9)
付記7の処理装置において、前記同期装置は、前記送信装置を介し、前記不整合を示す信号と前記不整合が発生した同期装置の番号を送ることを特徴とした処理装置。
(付記10)
付記7の処理装置において、前記同期装置は、複数の組の同期信号と前記送信先と前記演算タイプと前記データタイプとのいずれか一方とを格納する複数の制御レジスタと、前記受信した同期信号に基づき、前記同期成立を判定し、前記同期成立後、前記受信した演算タイプと前記データタイプとのいずれか一方と前記制御制御レジスタに格納された前記演算タイプと前記データタイプとのいずれか一方と比較し、不整合を検出する制御部とを有することを特徴とする処理装置。
(付記11)
付記8の処理装置において、前記同期装置は、前記同期成立後に、前記マスクレジスタを参照し、前記マスクレジスタが有効な値を示す場合は、前記演算タイプ又はデータタイプの比較と、前記演算との実行を禁止することを特徴とした処理装置。
(付記12)
付記7の処理装置において、前記同期装置は、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を少なくとも前記入力データを入力した送信先に送信することを特徴とする処理装置。
(付記13)
ネットワークを介し接続された複数の処理装置を有するコンピュータシステムにおいて、前記処理装置の各々は、処理ユニットと、前記処理ユニット及びネットワークを介し複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置とを有し、前記リダクション演算装置は、前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、前記同期が成立した組のn個のデータ間で演算を行う演算器と、データと演算結果を保持する記憶装置と、前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行することを特徴としたコンピュータシステム。
(付記14)
付記13のコンピュータシステムにおいて、前記リダクション演算装置は、前記同期装置の各組ごとにマスクレジスタを有し、前記同期装置は、前記マスクレジスタが有効な値を示す場合は、前記演算タイプ又はデータタイプの比較と、前記演算との実行を禁止することを特徴としたコンピュータシステム。
(付記15)
付記13のコンピュータシステムにおいて、前記同期装置は、前記送信装置を介し、前記不整合を示す信号と前記不整合が発生した同期装置の番号を送ることを特徴としたコンピュータシステム。
(付記16)
付記13のコンピュータシステムにおいて、前記同期装置は、複数の組の同期信号と前記送信先と前記演算タイプと前記データタイプとのいずれか一方とを格納する複数の制御レジスタと、前記受信した同期信号に基づき、前記同期成立を判定し、前記同期成立後、前記受信した演算タイプと前記データタイプとのいずれか一方と前記制御制御レジスタに格納された前記演算タイプと前記データタイプとのいずれか一方と比較し、不整合を検出する制御部とを有することを特徴とするコンピュータシステム。
(付記17)
付記14のコンピュータシステムにおいて、前記同期装置は、前記同期成立後に、前記マスクレジスタを参照し、前記マスクレジスタが有効な値を示す場合は、前記演算タイプ又はデータタイプの比較と、前記演算との実行を禁止することを特徴としたコンピュータシステム。
(付記18)
付記13のコンピュータシステムにおいて、前記同期装置は、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を少なくとも前記入力データを入力した送信先に送信することを特徴とするコンピュータシステム。
各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置において、組内の演算タイプ又はデータタイプの不整合を検出し、演算制御するため、処理が完了せず、ハングアップ、もしくは誤った計算結果を返すことを防止でき、且つリダクション演算完了の処理時間の長期化も防止できる。
1 ノード(処理装置)
2 ネットワーク
3 処理ユニット(CPU)
4A メモリ
4B 入出力装置
5 システム制御装置
6 リダクション演算装置
7 リダクション演算部
8 同期装置
10 受信装置
12 送信装置
70−0〜70−m 入力データレジスタ
72 マルチプレクサ
73 スイッチ
74 記憶装置
75 演算器
76 デマルチプレクサ
79−0〜79−m 出力データレジスタ
80 制御部
82−0〜82−N 制御レジスタ
84C 演算タイプレジスタ
84D データタイプレジスタ

Claims (5)

  1. 複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置であって、
    前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、
    前記同期が成立した組のn個のデータ間で演算を行う演算器と、
    データと演算結果を保持する記憶装置と、
    前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、
    受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、
    前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行する
    ことを特徴としたリダクション演算装置。
  2. 請求項1のリダクション演算装置において、
    同期装置の各組ごとにマスクレジスタを設け、
    前記同期装置は、前記マスクレジスタが有効な値を示す場合は、前記演算タイプ又はデータタイプの比較と、前記演算との実行を禁止する
    ことを特徴としたリダクション演算装置。
  3. 請求項1のリダクション演算装置において、
    前記同期装置は、前記送信装置を介し、前記不整合を示す信号と前記不整合が発生した同期装置の番号を送る
    ことを特徴としたリダクション演算装置。
  4. 処理ユニットと、
    前記処理ユニット及びネットワークを介し複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置とを有し、
    前記リダクション演算装置は、
    前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、
    前記同期が成立した組のn個のデータ間で演算を行う演算器と、
    データと演算結果を保持する記憶装置と、
    前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、
    受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、
    前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行する
    ことを特徴とした処理装置。
  5. ネットワークを介し接続された複数の処理装置を有するコンピュータシステムであって、
    前記処理装置の各々は、
    処理ユニットと、
    前記処理ユニット及びネットワークを介し複数の組の同期信号とデータが入力され、前記各組の同期信号及びデータの送信先をリダクション演算のアルゴリズムにおける次ステージに対応して設定し、リダクション演算を行うリダクション演算装置とを有し、
    前記リダクション演算装置は、
    前記各組に対し複数個の同期信号の入力を待ち合わせ、同期成立後に、演算指示と、m(m>1で整数)個の送信先に演算結果と同期信号の送信先とを出力する同期装置と、
    前記同期が成立した組のn個のデータ間で演算を行う演算器と、
    データと演算結果を保持する記憶装置と、
    前記同期装置で指定された送信先に前記データ及び同期信号を送信する送信装置と、
    受信した同期信号と宛先を前記同期装置に、受信したデータを記憶装置に送る受信装置とを有し、
    前記同期装置は、前記同期信号と、少なくとも演算タイプ及びデータタイプのいずれかを受信し、前記同期成立後、前記n個の演算タイプ又はデータタイプ間で比較を行い、前記比較結果が良好でない場合に、前記演算結果の代わりに不整合を示す信号を前記m個の送信先に送り、前記比較結果が良好な場合に前記指定された演算を実行する
    ことを特徴としたコンピュータシステム。
JP2010200807A 2010-09-08 2010-09-08 リダクション演算装置、処理装置及びコンピュータシステム Active JP5664039B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2010200807A JP5664039B2 (ja) 2010-09-08 2010-09-08 リダクション演算装置、処理装置及びコンピュータシステム
EP11170442.5A EP2428893A3 (en) 2010-09-08 2011-06-17 A reduction operation device, a processor, and a computer system
US13/166,114 US9619300B2 (en) 2010-09-08 2011-06-22 Reduction operation device, a processor, and a computer system
CN201110201689.0A CN102402421B (zh) 2010-09-08 2011-07-14 归约运算装置、处理器和计算机系统

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2012058958A true JP2012058958A (ja) 2012-03-22
JP5664039B2 JP5664039B2 (ja) 2015-02-04

Family

ID=45001561

Family Applications (1)

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

Country Status (4)

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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020067722A (ja) * 2018-10-22 2020-04-30 富士通株式会社 並列処理装置、並列演算実行プログラムおよびバックアップ方法
US10848551B2 (en) 2018-08-28 2020-11-24 Fujitsu Limited Information processing apparatus, parallel computer system, and method for control
US10983932B2 (en) 2018-04-19 2021-04-20 Fujitsu Limited Processor and information processing apparatus

Families Citing this family (5)

* 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 ルネサスエレクトロニクス株式会社 検査システム、検査装置、及び検査方法
JP2021043737A (ja) * 2019-09-11 2021-03-18 富士通株式会社 バリア同期システム、バリア同期方法及び並列情報処理装置
CN111105042B (zh) * 2019-12-13 2023-07-25 广东浪潮大数据研究有限公司 一种并行消息处理方法、系统及相关装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07114515A (ja) * 1993-10-19 1995-05-02 Hitachi Chem Co Ltd 同期通信用ネットワークを有する分散メモリ計算機
JPH1049507A (ja) * 1996-07-31 1998-02-20 Fujitsu Ltd 並列計算機
JP2010122848A (ja) * 2008-11-19 2010-06-03 Fujitsu Ltd バリア同期装置、バリア同期処理システム及び方法、リダクション演算装置、リダクション演算処理システム及び方法

Family Cites Families (11)

* 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 ブロードキャスト・バリアによるデータ通信方式
DE69424626T2 (de) 1993-11-23 2001-01-25 Hewlett Packard Co Parallele Datenverarbeitung in einem Einzelprozessor
JPH07152712A (ja) 1993-11-30 1995-06-16 Fujitsu Ltd バリア同期を行うマルチプロセッサ
ES2200899T3 (es) 1999-06-30 2004-03-16 Aventis Pharma S.A. Nuevos derivados de benzo (f)naftiridina, su preparacion y las composiciones que los contienen.
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 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
JP5621918B2 (ja) * 2011-04-07 2014-11-12 富士通株式会社 情報処理装置、並列計算機システムおよび演算処理装置の制御方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07114515A (ja) * 1993-10-19 1995-05-02 Hitachi Chem Co Ltd 同期通信用ネットワークを有する分散メモリ計算機
JPH1049507A (ja) * 1996-07-31 1998-02-20 Fujitsu Ltd 並列計算機
JP2010122848A (ja) * 2008-11-19 2010-06-03 Fujitsu Ltd バリア同期装置、バリア同期処理システム及び方法、リダクション演算装置、リダクション演算処理システム及び方法

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10983932B2 (en) 2018-04-19 2021-04-20 Fujitsu Limited Processor and information processing apparatus
US10848551B2 (en) 2018-08-28 2020-11-24 Fujitsu Limited Information processing apparatus, parallel computer system, and method for control
JP2020067722A (ja) * 2018-10-22 2020-04-30 富士通株式会社 並列処理装置、並列演算実行プログラムおよびバックアップ方法
JP7192388B2 (ja) 2018-10-22 2022-12-20 富士通株式会社 並列処理装置、並列演算実行プログラムおよびバックアップ方法

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5664039B2 (ja) リダクション演算装置、処理装置及びコンピュータシステム
US10659345B2 (en) Service path protection method, controller, device and system
US8654798B2 (en) Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method
JP3640187B2 (ja) マルチプロセッサシステムの障害処理方法、マルチプロセッサシステム及びノード
US10127095B2 (en) Seamless automatic recovery of a switch device
JP5549574B2 (ja) 並列計算機システム、同期装置、並列計算機システムの制御方法
CN101595668A (zh) 建立协调定时网络中的服务器之间的逻辑路径的方法和系统
JP5549575B2 (ja) 並列計算機システム、同期装置、並列計算機システムの制御方法
JP2017501657A (ja) リンクのヘルスチェック方法および装置
US8755287B2 (en) Network managing device and network managing method
CN113094309A (zh) 一种数据位宽转换方法和装置
JP6431197B2 (ja) スナップショット処理方法および関係付けられたデバイス
US11258666B2 (en) Method, device, and system for implementing MUX machine
JP5921782B2 (ja) 通信システム、待機装置、通信方法及び待機プログラム
US20150098317A1 (en) Linear protection switching method and apparatus for protecting network segmented into multi-domain
EP3185489B1 (en) Communication device, communication system and communication method
WO2019119269A1 (zh) 一种网络故障探测方法及控制中心设备
JP2009294881A (ja) 情報処理装置および情報処理方法
US20130226880A1 (en) Information processing system, memory device, information processing apparatus, and method of controlling information processing system
JP2018182688A (ja) 情報処理装置、情報処理システムおよび情報処理システムの制御方法
JP6601198B2 (ja) 中継装置、設定方法、設定プログラム及び情報処理システム
JP2019046379A (ja) 計算ノード装置、並列計算機システム、および計算ノード装置の制御方法
JP4117721B2 (ja) 並列計算機のバリア同期制御方法
JPH01252047A (ja) 通信制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130702

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140319

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140530

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141007

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141022

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141124

R150 Certificate of patent or registration of utility model

Ref document number: 5664039

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150