JP5304194B2 - バリア同期装置、バリア同期システム及びバリア同期装置の制御方法 - Google Patents

バリア同期装置、バリア同期システム及びバリア同期装置の制御方法 Download PDF

Info

Publication number
JP5304194B2
JP5304194B2 JP2008295115A JP2008295115A JP5304194B2 JP 5304194 B2 JP5304194 B2 JP 5304194B2 JP 2008295115 A JP2008295115 A JP 2008295115A JP 2008295115 A JP2008295115 A JP 2008295115A JP 5304194 B2 JP5304194 B2 JP 5304194B2
Authority
JP
Japan
Prior art keywords
synchronization
destination
node
register
barrier
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.)
Active
Application number
JP2008295115A
Other languages
English (en)
Other versions
JP2010122848A (ja
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
Priority to JP2008295115A priority Critical patent/JP5304194B2/ja
Priority to EP09173531.6A priority patent/EP2189903B1/en
Priority to US12/582,119 priority patent/US8654798B2/en
Priority to KR1020090106255A priority patent/KR101029769B1/ko
Priority to CN2009102247633A priority patent/CN101739381B/zh
Publication of JP2010122848A publication Critical patent/JP2010122848A/ja
Application granted granted Critical
Publication of JP5304194B2 publication Critical patent/JP5304194B2/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
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/04Generating or distributing clock signals or signals derived directly therefrom
    • G06F1/12Synchronisation of different clock signals provided by a plurality of clock generators
    • 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
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system

Description

本発明は、バリア同期装置、バリア同期システム及びバリア同期装置の制御方法に関し、例えば、並列演算を実行する複数のノードの各々に設けられるバリア同期装置、バリア同期システム及びバリア同期装置の制御方法に関する。
並列処理されている複数のプロセス間の同期をとる方法として、バリア同期が知られている。バリア同期では同期を取るポイント、つまりバリアポイントが設定され、バリア同期を行なうプロセスはバリアポイントに処理が到着した場合、処理を一時的に停止する。バリア同期を行なうプロセスは、バリア同期を行なう、並列処理されている全てのプロセスがバリアポイントに到着した時点で、停止した処理を再開する。これにより、並列処理されている複数のプロセス間で、並列処理の同期をとることができる。
一方、複数のプロセスが持つデータを対象とした演算として、リダクション演算が知られている。代表的なリダクション演算としては、例えば、データの総和を求める演算、最大値、最小値を求める演算等がある。リダクション演算には、演算結果を特定のプロセスのみが持つ場合と、全てのプロセスが持つ場合とがある。しかし、いずれの場合でもプロセス間でデータの通信が行なわれるので、リダクション演算は、バリア同期と同じアルゴリズムを用いて実行することができる。
なお、あるプロセッサから他の全てのプロセッサにツリー上に通信するブロードキャストを行い、これらブロードキャストを最後に受けたプロセッサ間で相互に通信するバタフライバリアを行い、このバタフライバリアに参加したプロセッサからバタフライバリアに参加しない全プロセッサに終了通知を行うデータ通信方法が提案されている。
特開平03−098152号公報 特開平07−152712号公報
バリア同期を実行する際、アルゴリズムによっては、プロセスはバリアポイント到着の信号の送信先をステージ毎に変更する必要がある。リダクション演算においても、プロセスは演算の中間結果の送信先をステージ毎に変更する必要がある。本発明者は、バリア同期及びリダクション演算の高速化のために、送信先の変更処理を高速で行う手段について検討した。
本発明者の検討によれば、バリア同期、リダクション演算を全てソフトウェアによって実現する場合、ステージ毎の送信先変更処理にCPUが介在するため、オーバーヘッドが発生し易くなる。従って、結果として、バリア同期、リダクション演算を高速化する事はできない。一方、送信先変更処理をハードウェアによって実現すれば、ステージ毎のCPUの介在がなくなるため、バリア同期、リダクション演算の高速化が見込まれる。従って、送信先の変更処理はハードウェアにより実現することが望ましい。
しかし、この場合、高速化のために採用されるハードウェアの構成によっては、複数のノードをネットワークにより接続する場合、ノード間のネットワークの構成が限定される場合がある。
本発明は、かかる問題を解決すべく、並列演算を実行する複数のノードにおいて、複数組の信号の同期をとる同期部を備えることにより、ノード間のネットワーク構成を限定せず、高速でバリア同期処理を実行するバリア同期装置を提供することを目的とする。
また、本発明は、並列演算を実行する複数のノードにおいて、複数組の信号の同期をとる同期部を備えることにより、ノード間のネットワーク構成を限定せず、高速でバリア同期処理を実行するバリア同期システムを提供することを目的とする。
また、本発明は、並列演算を実行する複数のノードにおいて、複数組の信号の同期をとる同期部を備えることにより、ノード間のネットワーク構成を限定せず、高速でバリア同期処理を実行するバリア同期装置の制御方法を提供することを目的とする。
発明の一実施態様であるバリア同期装置は、互いに接続される複数のノードの各々が有するバリア同期装置において、自ノードに含まれる情報処理装置から設定されたバリア同期のアルゴリズムに従って、同期成立後の宛先である宛先ノードを特定する宛先ノード情報と、宛先ノード情報に対応する宛先ノードにおける制御レジスタを特定する宛先レジスタ情報とをそれぞれ保持する複数の宛先レジスタと、制御レジスタを特定する制御レジスタ情報をそれぞれ含むn個(nは正の整数)の受信パケットを受信する受信部と、複数の制御レジスタを有し、前記複数の制御レジスタのうち前記受信部が受信するn個の受信パケットの各々に含まれる制御レジスタ情報に対応する制御レジスタが前記n個の受信パケットを全て受信した場合、送信指示を出力する同期部と、前記同期部が前記送信指示を出力した場合、前記n個の受信パケットを受信した各制御レジスタに対応する各宛先レジスタに設定された宛先ノード情報と宛先レジスタ情報とに基づき、各宛先ノードにおける宛先レジスタ情報をそれぞれ含むm個(mは正の整数)の送信パケットをそれぞれの宛先ノードに送信する送信部を有する。
本発明の一実施態様であるバリア同期システムは、互いに接続される複数のノードを有するバリア同期システムにおいて、前記複数のノードの各々は、各々のノードが有する情報処理装置に接続されるとともに、各々自ノードに含まれる情報処理装置から設定されたバリア同期のアルゴリズムに従って、同期成立後の宛先である宛先ノードを特定する宛先ノード情報と、該宛先ノード情報に対応する宛先ノードにおける制御レジスタを特定する宛先レジスタ情報とをそれぞれ保持する複数の宛先レジスタを有するバリア同期装置を有し、前記複数のバリア同期装置は、各々、制御レジスタを特定する制御レジスタ情報をそれぞれ含むn個(nは正の整数)の受信パケットを受信する受信部と、複数の制御レジスタを有し、前記複数の制御レジスタのうち前記受信部が受信するn個の受信パケットの各々に含まれる制御レジスタ情報に対応する制御レジスタが前記n個の受信パケットを全て受信した場合、送信指示を出力する同期部と、前記同期部が前記送信指示を出力した場合、前記n個の受信パケットを受信した各制御レジスタに対応する各宛先レジスタに設定された宛先ノード情報と宛先レジスタ情報とに基づき、各宛先ノードにおける宛先レジスタ情報をそれぞれ含むm個(mは正の整数)の送信パケットをそれぞれの宛先ノードに送信する送信部とを有する。
本発明の一実施態様であるバリア同期装置の制御方法は、互いに接続される複数のノードに各々接続されるとともに、自ノードに含まれる情報処理装置から設定されたバリア同期のアルゴリズムに従って、同期成立後の宛先である宛先ノードを特定する宛先ノード情報と、宛先ノード情報に対応する宛先ノードにおける制御レジスタを特定する宛先レジスタ情報とをそれぞれ保持する複数の宛先レジスタとを有するバリア同期装置の制御方法であって、前記バリア同期装置の受信部が、制御レジスタを特定する制御レジスタ情報をそれぞれ含むn個(nは正の整数)の受信パケットを受信し、前記バリア同期装置の同期部が、複数の制御レジスタのうち前記受信部が受信するn個の受信パケットの各々に含まれる制御レジスタ情報に対応する制御レジスタが前記n個の受信パケットを全て受信した場合、送信指示を出力し、記同期部が前記送信指示を出力した場合、前記バリア同期装置の送信部が、前記n個の受信パケットを受信した各制御レジスタに対応する各宛先レジスタに設定された宛先ノード情報と宛先レジスタ情報とに基づき、各宛先ノードにおける宛先レジスタ情報をそれぞれ含むm個(mは正の整数)の送信パケットをそれぞれの宛先ノードへ送信する。
本発明の一実施態様であるバリア同期装置、バリア同期システム及びバリア同期装置の制御方法によれば、第1の同期信号についての同期成立の後に、第2の同期信号が送信されるので、バリア同期を行うことができる。
また、前記設定条件に応じて、バリア同期装置において、ステージ毎にバリアポイント到着の信号の送信先を変更することができる。これにより、送信先の変更処理を実行するためのソフトウェアを不要とすることができる。従って、当該変更処理を実行するためにCPU及びメモリを使用する必要を無くし、ステージ毎のデータ転送を無くすことができる。
また、ステージ毎のバリアポイント到着の信号の送信先は、バリア同期装置において設定されるので、例えばスイッチによって送信先を変更する必要を無くすことができる。この結果、例えば、ネットワークによりバリア同期装置を備えるノード(コンピュータ)を接続する場合でも、ノード間のネットワーク構成が多段結合網に限定されることを避けることができる。
また、バリア同期装置は、n個の第1の同期信号についての同期をとることができるので、異なるノードに対するバリア同期を、同時に複数行なうことができる。
(第1の実施態様)
第1の実施態様は、本発明の一実施態様であるバリア同期装置であって、バタフライによりバリア同期を行うバリア同期装置である。
図1は、本発明の一実施態様であるバリア同期装置を備えるノードを複数有するコンピュータネットワークの構成の一例を示す。図2は、本発明の一実施態様であるバリア同期装置を備えるノードの構成の一例を示す。
コンピュータネットワークは、複数のノードつまりコンピュータ1と、これらのノードを接続するネットワーク2とを含む。図1の例においては、4個のノード#1〜#4がコンピュータネットワークに設けられる。ネットワーク2により接続された複数のノード1は、並列演算を実行する。複数のノード1は、各々、並列演算におけるバリア同期のために、バリア同期装置6を備える。バリア同期装置6は高速でバリア同期を行う。
ノード1は、CPU3と、メモリ4と、システム制御部5と、バリア同期装置6と、入出力装置7とを備える。システム制御部5はノード1を制御する。即ち、システム制御部5は、CPU3、メモリ4、バリア同期装置6、入出力装置7を制御する。CPU3は、設定処理部31を備える。
設定処理部31は、システム制御部5を介して、入出力装置7との間において、必要なデータの送受信を行う。これにより、入出力装置7は、バリア同期のアルゴリズムと実行条件とを含む設定条件を、CPU3の設定処理部31に入力する。また、入出力装置7は、必要に応じて、設定処理部31から出力されたデータを出力する。
設定処理部31は、システム制御部5を介して、バリア同期装置6に対してバリアポイント到達の信号を送信し、また、バリア同期装置6からバリア同期成立の信号を受信する。これにより、設定処理部31は、入出力装置7から入力された設定条件に従って、バリア同期装置6における第1の同期信号の送信先及び第2の同期信号の送信先を、バリア同期装置6に設定する。バリア同期装置6は、設定条件に従って、ネットワーク2を介して、他のノード1のバリア同期装置6との間で通信を行ない、当該通信に基づいて、バリア同期を行なう。
設定処理部31は、システム制御部5を介して、メモリ4との間において、必要なデータの送受信を行う。これにより、設定処理部31は、メモリ4にデータを書き込み、また、設定制御部31はメモリ4からデータを読み出す。このデータは、例えば、後述するリダクション演算に用いられるデータである。
ここで、バリア同期について簡単に説明する。バリア同期は、図3に示すように、バリア同期を行なう複数のプロセス#0〜#2は、その処理が同期をとるポイントつまりバリアポイントに到着した場合、自身の処理を停止する。即ち、複数のプロセス#0〜#2は自身がバリアポイントに到達した場合、各々、他のプロセスがバリアポイントに到着するのを待ち合わせる。複数のプロセス#0〜#2は、各々、バリア同期を行なう全てのプロセス#0〜#2がバリアポイントに到着した時点で、即ち、バリア同期が成立した時点で、停止した処理を再開する。これにより、並列処理されている複数のプロセス間で、並列処理の同期をとることができる。
このようなバリア同期を実現するアルゴリズムの一つに、バタフライ演算がある。以下、バタフライ演算を単に「バタフライ」と称する。バタフライにおいては、処理を複数のステージに分割し、ステージ毎に他のプロセスと信号の通信を行なう。この例においては、バリア同期のアルゴリズムとして、バタフライが用いられる。
図4は、4個のプロセス#0〜#3の間において、バタフライによるバリア同期を行なう例を示す。図4において、例えば、プロセス#0を円の中に数字の0を付して表し、他のプロセス#1〜#3も同様に表す。他の図においても同様とする。
各々のステージにおけるバリアポイント到着の信号の送信先は、ステージ番号をk、自プロセス又は自ノード1のプロセス番号をiとすると、i XOR 2^(k−1)となる。ステージ数は、プロセス数Nが2のべき乗のとき、log(N)となる。
例えば、図4において、プロセス#0に着目すると、以下のように送信先が予め定められる。即ち、ステージ#1において、バリアポイント到着を示す信号の送信先はプロセス#1である。ステージ#2において、プロセス#0からのバリアポイント到達を示す信号の受信元はプロセス#1であり、プロセス#0からのバリアポイント到達を示す信号の送信先はプロセス#2である。
これらの信号の送信先及び受信元は、設定条件において、バリア同期のアルゴリズム及び実行条件つまりプロセスの構成が定まることにより、一意に定めることができる。この例においては、バリア同期のアルゴリズムはバタフライであり、実行条件は4個のプロセスであるので、前述したように定めることができる。
そこで、入出力装置7から設定処理部31に、設定条件が入力される。この例においては、設定条件において、バリア同期のアルゴリズムはバタフライとされ、実行条件は4個のプロセスとされる。これに加えて、実行条件として、当該演算つまりバリア同期におけるステージ数kと、各々のプロセス自身つまり自ノード1のプロセス番号iも入力される。ステージ数kはステージ番号の最大値を示している。
なお、設定処理部31への設定条件の入力は、これに限られない。例えば、いずれか1個のノード1が、ネットワーク2を介して、他のノード1に各々の設定条件を入力するようにしても良い。また、ネットワーク2に接続された管理用のコンピュータが、ネットワーク2を介して、全てのノード1に各々の設定条件を入力するようにしても良い。
各プロセスは、ステージ毎に他のプロセスとの間でバリアポイント到着の信号を通信し合う。例えば、最初のステージ#1において、各プロセスは、バリア同期ポイントに到着する。到着のタイミングは、各プロセスで異なる。この場合、各プロセスは、バタフライネットワーク上における次ステージの予め設定されたプロセスに信号を送る。バタフライネットワークは、図1に示すネットワーク2であって、バタフライによりバリア同期を行う、図2に示すノード1が接続されたネットワークである。これは以下の図においても同じである。
次のステージ#2において、各プロセスは、バタフライネットワークの前のステージ#1の予め設定されたプロセスからの信号を待ち合わせる。各プロセスは、他のプロセスから信号を受信した場合、次のステージ#3の予め設定されたプロセスに信号を送る。
最後のステージ#3において、各プロセスは、前ステージ#2の予め設定されたプロセスからの信号を待ち合わせる。各プロセスが他のプロセスからの信号を受けると、全てのプロセス#0〜#3がバリアポイントに到着した後にバリア同期が成立した事を知る。この後、各プロセスは、バリア同期が成立したので、次の処理を開始する。
なお、前述したように、バリア同期信号を行なう他の方法として、各プロセスはある特定のプロセスに、バリアポイント到着の信号を送る方法がある。この方法においては、全てのプロセスからバリアポイント到着の信号を受信した後、バリア同期成立を全プロセスに対してブロードキャストを行なう。バタフライネットワークによるバリア同期方式によれば、このブロードキャストは必要ない。
図5は、本発明の一実施態様であるバリア同期装置の構成の一例を示す。図6は、主として、図5のバリア同期装置が備える同期装置の構成の一例を示す。なお、図6において、図5に示す受信装置61及び送信装置63を重複して図示している。
バリア同期装置6は、受信装置61と、同期装置(以下、同期部という)62と、送信装置63とを備える。同期部62は、制御部621と、複数の制御レジスタ622とを備える。複数の制御レジスタ622の各々は、複数のレジスタを含むレジスタ群である。
複数の制御レジスタ622は各々、同期信号の組に対応する。換言すれば、複数の制御レジスタ622を備えることにより、各々の演算毎に同期信号を制御レジスタに保持し、バリア同期を実行することが可能となる。従って、1組の演算がn個の第1の同期信号で構成される場合、同期部62は、各々がn個の第1の同期信号で構成される複数の組について、各々、バリア同期を実行する。この場合、1個のノード1上で複数のプロセスが動作する。
第1の実施態様においては、1個のノード1上で複数のプロセスが動作し、また、1組の演算が実行され、この1組の演算についてバリア同期を実行することができる。また、第1の実施態様においては、1個のノード1上で複数のプロセスが動作する実施態様に代えて、1個のノード1上で1個のプロセスを動作させることができる。この場合、プロセスとノード1とは同一と考えて良い。
第1の実施態様においては、制御レジスタ622は、例えばシグナルレジスタと宛先レジスタとを含む。なお、図6において、シグナルレジスタは符号Signalを付して表し、宛先レジスタは符号Destination を付して表す(他の図においても同じ)。
制御部621は、複数の制御レジスタ622を参照して、その参照結果に基づいて、バリア同期のための同期信号を送信する。シグナルレジスタは、制御レジスタ622に対応するプロセス又はノードから同期信号を受信したか否かを示す情報を格納する。これにより、シグナルレジスタは、同期信号の待ち合わせ状況を示す情報を格納する。宛先レジスタは、制御レジスタ622が同期信号を送信すべき宛先であるプロセス又はノードを示す情報を格納する。これにより、宛先レジスタは、同期成立の後に同期信号の送信先を示す情報を格納する。
宛先レジスタは、同期信号の送信先が他のノードである場合、送信先となる宛先ノードアドレスおよび制御レジスタ番号を格納する。宛先ノードアドレスは、ノードのネットワークアドレスであり、一意に定まる。制御レジスタ番号は、制御レジスタ622の番号であり、ノードにおいて一意に定まる。宛先ノードアドレスは、ノードに予め付与されたノード番号であっても良い。制御レジスタ番号は、制御レジスタ622に予め付与された番号又は組番号であっても良い。
宛先ノードアドレス及び制御レジスタ番号を指定することにより、1個のノードにおける1個の制御レジスタが定まる。宛先レジスタは、同期信号の送信先が自ノード1である場合、自プロセス又は自ノード1の同期部62の制御レジスタ番号を格納する。
バリア同期の実行に先立って、CPU3の設定処理部31は、制御部621を介して、制御レジスタ622に、設定条件に基づいて、必要なパラメータを設定する。制御レジスタ622に設定されるパラメータとしては、例えば、当該制御レジスタ622の次ステージの宛先ノードアドレスと、制御レジスタの制御レジスタ番号とが含まれる。前述したように、設定条件は、バリア同期のアルゴリズムと実行条件とを含む。
この設定の後、設定処理部31が、制御部621にバリア同期開始信号を送信することにより、バリア同期が開始される。プロセスの最後のステージにおいて同期が成立した場合、同期部62は、バリア同期成立、つまりバリア同期完了を示す信号を設定処理部31に送る。
受信装置61は、ネットワーク2を介して他ノードと接続され、同期信号を含む他ノードからのパケットを受信する。受信装置61は、バリア同期のアルゴリズムと実行条件とを含む設定条件に従ってその送信先が予め設定された第1の同期信号を他ノードから受信した場合、受信した第1の同期信号を同期部62に送信する。このため、受信装置61は、ネットワーク2を介して、他のノードのバリア同期装置から、バリア同期のためのパケットを受信する。他ノードからのパケットを受信した場合、受信装置61は、受信したパケットに基づいて、同期信号と宛先を生成して、同期部62に送信する。具体的には、受信装置61は、受信したパケットに含まれる同期信号及び宛先の情報を取り出し、同期部62に送信する。宛先は、同期信号の宛先となる宛先ノードアドレス及び制御レジスタの制御レジスタ番号である。この宛先により、取出された宛先ノードアドレスに対応するノード及び取出された制御レジスタ番号に対応する制御レジスタ622を定めることができる。
なお、送信元のノードが複数存在する場合において、受信装置61が送信元となるノードの数に対応した数だけのネットワークインタフェースを備える場合、複数の受信装置61を用いて複数のノードから送信されるパケットを同時に受信することができる。これは送信装置63においても同様である。
同期部62は、受信装置61からの同期信号と宛先に基づいて、バリア同期の処理を行なう。このために、同期部62は、複数組の同期信号の待ち合わせを行ない、各組で同期成立の後、同期信号を宛先により指定された送信先に送信する。これにより、バリア同期を行なうアルゴリズムにおいて、ステージ毎にバリアポイント到着の信号の送信先を変更する処理を高速に行なうことができる。同期信号の各組に対しては、一意に定まる制御レジスタ番号が割り当てられる。同期部62は、同期信号と制御レジスタ番号の双方を受信装置61から受信し、同期が成立した組について、対応する同期信号を送信装置63に出力する。
例えば、同期部62は、各々の同期信号の組について、設定条件に従って予め設定されたn(nは正の整数)個の第1の同期信号についての同期を取る。各組において、n個の同期信号が入力された場合、同期成立となる。同期部62は、同期成立の後に、第2の同期信号の送信を送信装置63に指示する。第2の同期信号は、m(mは正の整数)個とされ、各々について設定条件に従ってその送信先が予め設定される。
同期が成立した場合、同期部62は、各組について、予め設定された送信先に同期信号を送信する。送信先は、他ノードの同期部、又は、自ノードの同期部62である。同期信号の送信先が他のノード1である場合、送信先ノードの宛先ノードアドレスと制御レジスタ番号が同期部62に予め設定されている。この場合、同期部62は、送信装置63にパケットの送信指示の信号を送る。同期部62からのパケット送信指示を受けた送信装置63は、ネットワーク2を介して、宛先ノードアドレスで指定される他ノードのバリア同期装置に、バリア同期のためのパケットを送信する。一方、同期信号の送信先が自ノードである場合、同期部62には制御レジスタ番号又は制御レジスタ番号が予め設定されている。同期部62は、自プロセス又は自ノード1の同期部62の指定された制御レジスタ622に同期信号を送信する。
なお、同期部62は、CPU3の設定処理部31からバリア同期開始の信号を受信した場合、指定された送信先に対して同期信号を送る。同期部62は、同期信号の最後の組で同期が成立した場合、バリア同期完了の信号をCPU3の設定処理部31に通知する。
送信装置63は、同期部62からの送信の指示を受信した場合、予め設定されたm個の送信先に、第2の同期信号を送信する。このため、送信装置63は、同期部62からパケット送信指示の信号を受け取り、指定された送信先に基づいて、パケットを生成して、ネットワーク2を介して、他のノードに送信する。前述したように、送信先となるノードは、送信先宛先ノードアドレスおよび制御レジスタ番号に基づいて定められる。
図7は、図5のバリア同期装置が実行する、バタフライによるバリア同期処理の処理フローを示す。
CPU内に設定された設定処理部31は、バリア同期を開始する前に、バリア同期のアルゴリズムと設定条件とに基づいて、制御レジスタ622の役割を決定し、各々の制御レジスタ622の宛先レジスタに、バタフライでの次ステージに対応した宛先ノードアドレスと制御レジスタ番号を設定する(ステップS11)。
このために、設定処理部31は、宛先ノードアドレス及び制御レジスタ番号を設定すべき制御レジスタ622の制御レジスタ番号を、ライトアドレスとして同期部62に入力する。また、設定処理部31は、制御レジスタ622の宛先レジスタに設定すべき宛先ノードアドレスと制御レジスタ番号とを、ライトデータとして同期部62の制御部621に入力する。ライトアドレス及びライトデータは、制御レジスタ622毎に入力される。これに応じて、制御部621は、入力されたライトデータである宛先ノードアドレス及び制御レジスタ番号を、ライトアドレスにより指定された制御レジスタ622の宛先レジスタに格納する。ライトデータの格納は、実際には、設定処理部31からのライトアドレス及びライトデータを受信した制御部621により実行される。一方、これとは別に、シグナルレジスタの初期値は、例えば予め「0」とされる。
宛先ノードアドレスと制御レジスタ番号との設定は、例えば以下のように行われる。ノード数が2のべき乗である場合、バタフライにおいては、同期成立の後、自プロセス又は自ノードの次ステージと、他ノードでの次ステージの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は、バリア同期開始の信号を受信すると、バリア同期開始信号にて指定された番号に対応する制御レジスタ622の宛先レジスタの値を読む(ステップS13)。以下、宛先レジスタの値を「Destination」とも言う。この読取のために、制御部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)。即ち、自ノードの次ステージにおける制御レジスタ622のシグナルレジスタの値が読み出される。これは、自ノードの同期部62に同期信号を送り、自ノードでの同期の待ち合わせを行うためである。以下、シグナルレジスタの値を「signal」とも言う。
続いて、同期部62が、次ステージのシグナルレジスタに同期状態を示す「1」が設定されているか否かを調べる(ステップS15)。シグナルレジスタに「1」が設定されている場合(S15 Yes)、同期成立となる。一方、シグナルレジスタに「1」が設定されていない場合(S15 No)、同期は成立していない。
同期が成立していない場合(S15 No)、同期部62が、次ステージの制御レジスタ622のシグナルレジスタの値Signalを「1」に設定し、これ以後、パケットの受信を待ち合わせる(ステップS16)。この設定のために、制御部621は、読み出した宛先レジスタの値の中の自ノードを指定する値をライトアドレスとして用いて、当該アドレスの制御レジスタ622のシグナルレジスタに「1」をライトデータとして書き込む。例えば、図8のノード#2において、制御レジスタ#1のシグナルレジスタの値は、「1」とされる。これにより、待ち合わせすべき同期信号の一方を受信したことが示される。
この後、受信装置61は、パケットを受信した場合、受信したパケットに基づいて、同期信号と宛先となる制御レジスタ番号とを取り出し、同期部62に送信する(ステップS17)。
同期部62の制御部621は、受信装置61からの信号を受信した場合、指定された制御レジスタ622のシグナルレジスタの値を読み取る(ステップS18)。この後、ステップS15以下を繰り返す。例えば、制御部621は、受信装置61からの同期信号と宛先とを受信すると、受信した制御レジスタ番号に基づいて、制御レジスタ622のシグナルレジスタの値を読取る。この読取のために、制御部621は、指定された制御レジスタ番号をリードアドレスとして用いて、当該アドレスの制御レジスタ622のシグナルレジスタの値を、リードデータとして読み出す。
一方、ステップS15において同期が成立している場合(S15 Yes)、制御部621は、更に、制御レジスタ622が最後のステージに対応したものか否かを調べる(ステップS19)。例えば、図8のノード#1において、ステップS16の実行の後は、制御レジスタ#2のシグナルレジスタの値は、「1」である。従って、この場合、同期が成立している。
最後のステージに対応する制御レジスタ622で同期が成立した場合(S19 Yes)、制御部621は、バリア同期成立の信号をCPUの設定処理部31に送る(ステップS110)。
設定処理部31は、制御部621からのバリア同期成立の信号を受け取り、バリア同期成立を知る(ステップS111)。
また、ステップS19において制御レジスタ622が最後のステージに対応したものでない場合(S19 No)、制御部621は、同期が成立した制御レジスタ622の宛先レジスタの値を読み(ステップS112)、ステップS14以下の処理を繰り返す。例えば、図8のノード#1において、制御レジスタ#2は最後のステージに対応したものでないので、ステップS14以下の処理が繰り返される。
図8は、図7のバタフライによるバリア同期処理における各ステージ間での同期信号の流れを示す。なお、図8において、同期装置6内の符号#1等はそれぞれ複数の制御レジスタ622のレジスタ番号を示し、また、図示左から順に時間の経過と共に同期信号が送信される状態を示す(他の図においても同じ)。
図8において、ノード#1に着目すると、以下のように同期信号が流れる。例えば、ノード#1は、バリアポイントに到達した場合、バリア同期開始信号の入力により同期開始を指示される。これに応じて、ノード#1は、ステージ#1において、予め指示された宛先であるノード#1及びノード#2に、同期信号を送信する。
ステージ#2において、自己の同期信号を受信したノード#1は、予め指示されたノード#2からの同期信号を待ち合わせる。ステージ#2の同期信号は、ノード#2がバリアポイントに到達した後に、同様にして、ノード#2からノード#1に到達する。ノード#2からの同期信号が到達した場合、ノード#1において、自己の同期信号と、ノード#2からの同期信号との待ち合わせつまり2つの信号の同期が成立する。この同期が成立すると、ノード#1は、ステージ#2において、予め指示された宛先であるノード#1及びノード#3に同期信号を送信する。
ステージ#3において、自己の同期信号を受信したノード#1は、予め指示されたノード#3からの同期信号を待ち合わせる。ステージ#3の同期信号は、ノード#3がバリアポイントに到達し、かつ、バリアポイントに到達したノード#4からの同期信号を受信した後に、同様にして、ノード#3からノード#1に到達する。ノード#3からの同期信号が到達した場合、ノード#1において、自己の同期信号と、ノード#3からの同期信号との同期が成立する。この同期が成立すると、ノード#1は、ステージ#3において、バリア同期が成立したと判定して、バリア同期成立信号を出力する。
ノード#2〜4においても、同様にして、ステージ#3において、バリア同期が成立し、バリア同期成立信号が出力される。これにより、バタフライによるバリア同期が実行される。
従って、図8における同期信号の流れは図4と同じ流れとなり、バタフライによるバリア同期が実行されていることが判る。
(第2の実施態様)
第2の実施態様は、本発明の一実施態様である、バタフライによりバリア同期を行いつつリダクション演算を行うリダクション演算装置に関する。
図9は、第2の実施態様であるリダクション演算装置の構成の一例を示す。図10は、図9のリダクション演算装置が備える同期部82及びリダクション演算部の構成の一例を示す。図11は、図10のリダクション演算部が備える演算器845の構成の一例を示す。
第2の実施態様において、リダクション演算装置8は、図1に示すコンピュータネットワークを構成するノード1に設けられる。第2の実施態様において、ノード1は、図2に示すノード1のバリア同期装置6を、リダクション演算装置8で置き換えた構成を備える。即ち、第2の実施態様のノード1は、バリア同期装置6以外は、図2に示すノード1と同様の構成を備える。以下、図2に示すノード1と同じ要素については、一部図示を省略する。
リダクション演算装置8は、バリア同期を取りつつリダクション演算を行う。リダクション演算装置は、リダクション演算部84と、同期装置(以下「同期部」)82とを備える。同期部82は、制御部821と、制御レジスタ822とを備える。リダクション演算部84は、入力データレジスタ841、マルチプレクサ842、スイッチ843、記憶装置844、演算器845、デマルチプレクサ846、出力データレジスタ847を備える。
リダクション演算装置8は、リダクション演算部84を備える以外は、バリア同期装置6と同様の構成を備える。リダクション演算部84を備えるので、リダクション演算装置8は、バリア同期開始の信号に代えてリダクション演算開始の信号を入力され、また、バリア同期成立の信号に代えてリダクション演算完了の信号を出力する。
また、リダクション演算部84を備えるので、リダクション演算装置8は、ネットワーク2との間で、パケットの送受信に加えて、データの送受信も行い、また、CPU3の設定処理部31との間で、制御信号に加えて、データの送受信も行う。
また、リダクション演算部84を備えるので、リダクション演算装置8は、リダクション演算の対象データを外部から入力され、また、リダクション演算の結果を外部に出力する。
リダクション演算の第1の対象データは、CPU3の設定処理部31から、ライトデータとして入力データレジスタ841に入力され、リードデータとして入力データレジスタ841からマルチプレクサ842に入力される。リダクション演算の第2の対象データは、ネットワーク2から受信装置81を介してパケットとして入力され、パケットから取出されて、マルチプレクサ842に入力される。
一方、リダクション演算の結果は、デマルチプレクサ846から、ライトデータとして出力データレジスタ847に出力され、リードデータとして出力データレジスタ847から設定処理部31に出力される。また、リダクション演算の結果は、デマルチプレクサ846から送信装置83に出力され、送信装置83からネットワーク2へパケットとして送信される。
入力データレジスタ841及び出力データレジスタ847は、複数設けられる。入力データレジスタ841は、各々、制御レジスタ822と対応する。出力データレジスタ847も同様である。
ライトデータを書き込むべき入力データレジスタ841は、設定処理部31からライトアドレスにより指定される。リードデータを読み出すべき入力データレジスタ841は、制御部821からリードアドレスにより指定される。入力データレジスタ841のリードアドレスは、例えば受信装置81が受信したパケットにおける宛先が指示する制御レジスタ822に対応し、当該制御レジスタ822の制御レジスタ番号に基づいて生成される。ライトデータを書き込むべき出力データレジスタ847は、制御部821からライトアドレスにより指定される。出力データレジスタ847のライトアドレスは、当該ライトデータのリダクション演算に用いられる制御レジスタ822に対応し、当該制御レジスタ822の制御レジスタ番号に基づいて生成される。リードデータを読み出すべき出力データレジスタ847は、設定処理部31からリードアドレスにより指定される。
リダクション演算を実行するために、設定処理部31は、入出力装置7から入力された設定条件に従って、リダクション演算装置8における第1の同期信号の送信先及び第2の同期信号の送信先を、リダクション演算装置8に設定する。
また、設定処理部31は、システム制御部5を介して、リダクション演算の開始時にリダクション演算装置8に対して演算対象のデータを送信し、また、リダクション演算装置8からリダクション演算結果を受信する。リダクション演算装置8は、ネットワーク2(図示「Network」)を介して、他のノードのリダクション演算装置との間で通信を行ない、当該通信に基づいて、リダクション演算を行なう。
更に、リダクション演算を実行するために、リダクション演算装置8の備える同期部82は、同期成立の後に、第2の同期信号の送信を送信装置83に指示(図示「パケット送信指示」)すると共に、予め定められたリダクション演算をリダクション演算部84に指示する。また、送信装置83は、第2の同期信号送信の指示を受信した場合、第2の同期信号と共に、演算器845におけるリダクション演算の結果を設定処理部31に送信する。
また、同期部82は、制御レジスタ822に、タイプレジスタを備える。図10において、タイプレジスタは符号typeを付して表す(他の図においても同じ)。タイプレジスタは、演算器845におけるリダクション演算の制御のために、演算の種類を示す情報を格納する。タイプレジスタに格納される情報も、設定条件の一部として、入出力装置7から入力される。
ここで、リダクション演算について簡単に説明する。リダクション演算は、前述したように、バリア同期と同一のアルゴリズムを用いて実行することができる。即ち、リダクション演算は、バタフライによるバリア同期を実行するバタフライネットワークにより実行することができる。
従って、リダクション演算は、図3及び図4に示すように、処理を複数のステージに分割し、各プロセスはステージ毎に他のプロセスと信号の通信を行なう。1個のノード上で1個のプロセスが動作する場合、プロセスとノードとは同一と考えて良い。各ステージにおけるプロセスの処理及び送信先は、基本的に、バリア同期と同じである。
リダクション演算は、図12に示すように、最初のステージ#1においては、各プロセスは、演算の対象となるデータを次のステージ#2のプロセスに送信する。ステージ#2において各プロセスは、前のステージ#1のプロセスからのデータを受信した場合、例えば、自身が持っているデータとの加算を行い、演算結果を次のステージ#3のプロセスに送信する。最後のステージ#3において各プロセスは、前のステージ#2のプロセスからデータを受信した場合、例えば、受信したデータと前のステージ#2での自身の演算結果との加算を行う。この加算の結果が、総和演算の結果となる。
なお、リダクション演算の他の実現方法として、特定のプロセスにデータを送信し、演算を行わせる方法がある。この方法においては、全てのプロセスが演算結果を持つには、特定のプロセスからのブロードキャストが必要となる。バタフライネットワークによるリダクション演算によれば、ブロードキャストは必要ない。
第2の実施態様におけるリダクション演算は、以下のように行われる。
設定処理部31は、バリア同期装置6と同様にして、同期部82におけるリダクション演算の各組に対応する制御レジスタ822に、設定条件に基づいて、次ステージの宛先ノードアドレス、制御レジスタ番号等を設定する。この後、設定処理部31は、入力データ及びリダクション同期開始信号をリダクション演算部84に送信する。これにより、リダクション演算部84によるリダクション演算が開始される。最後のステージに対応した制御レジスタ822において同期が成立した場合、リダクション演算装置8は、演算結果とリダクション演算完了の信号とを、設定処理部31に送る。
受信装置81はネットワーク2を介してパケットをCPU3から受信し、受信したパケットに基づいて、同期信号及び宛先との組を同期信号を同期部82に送信し、パケットとして受信したデータをリダクション演算部84に送信する。
リダクション演算部84において、入力データレジスタ841は、CPU3から送信されたリダクション演算の対象である入力データ(図10図示「ライトデータ」)を一時格納し、制御部821からの指示に応じて、格納したデータを「リードデータ」としてマルチプレクサ842を介して、記憶装置844に入力する。CPU3からのデータは、前述したように、リダクション演算の開始時に入力される。
記憶装置844は、入力データレジスタ841を介して入力されたデータを記憶する。これにより、記憶装置844は、リダクション演算中のデータを保持する。記憶装置844の記憶容量は、例えば、(制御レジスタ822の数)×(データのビット数)とされる。リダクション演算中のデータを保持すべき記憶装置844のアドレスは、制御部821からライトアドレスにより指定される。記憶装置844のライトアドレスは、当該リダクション演算に用いられる制御レジスタ822に対応し、当該制御レジスタ822の制御レジスタ番号に基づいて生成される。
記憶装置844に格納されたリダクション演算中のデータは、制御部821からリードアドレスを指定することにより、読み出されて演算器845に入力される。記憶装置844のリードアドレスは、当該リダクション演算に用いられる制御レジスタ822に対応し、当該制御レジスタ822の制御レジスタ番号に基づいて生成される。
マルチプレクサ842は、制御部821からの入力部選択の指示に従って、入力データレジスタ841からのデータ、又は、受信装置1からのデータを選択して、スイッチ843を介して、記憶装置844又は演算器845に入力する。入力部選択の指示は、受信装置81から同期信号及び宛先が入力された場合には、受信装置81のデータをマルチプレクサ842に出力するようにされ、これ以外の場合には、入力データレジスタ841のリードデータをマルチプレクサ842に出力するようにされる。
スイッチ843は、制御部821からの入出力部選択の指示に従って、マルチプレクサ842又は演算器845からの入力を、記憶装置844又は演算器845に入力する。入出力部選択の指示は、マルチプレクサ842からデータが入力された場合には、マルチプレクサ842のデータを入力するようにされ、これ以外の場合には、演算器845のデータを入力するようにされる。また、入出力部選択の指示は、同期が成立した場合には、入力されたデータを演算器845に出力するようにされ、これ以外の場合には、入力されたデータを記憶装置844に出力するようにされる。
演算器845は、同期が成立した場合、記憶装置844で待ち合わせているデータと、マルチプレクサ842を介して入力するパケットからのデータ又は先の演算結果とについて、所定の演算を行なう。即ち、演算器845は、同期部82の制御部821からの指示を受信した場合、記憶装置844に記憶されたデータを用いて、リダクション演算を行う。具体的には、演算器845は、制御部821からの演算指示に従って、所定の演算を実行して、その結果を、デマルチプレクサ846に入力すると共に、スイッチ843に入力する。
演算器845は、図11に示すように、演算ユニット8451〜8454と、マルチプレクサ8455とを備える。加算部(ADD)8451、論理和演算部(Logical)8452、最大値算出部(MAX)8453、最小値算出部(MIN)8454が、演算ユニットを構成する。演算ユニット8451〜8454は、各々、予め定められた演算を実行する。
演算器845は、記憶装置844から入力するデータつまり第1データと、入力データレジスタ841から入力するデータ、受信装置81が受信したパケットからのデータ又は演算器845が前ステージで行なった演算結果つまり第2データとの間で、指示された種類の演算を行なう。演算ユニット8451〜8454は、第1データ及び第2データを入力されて、これらについての演算を行い、演算結果をマルチプレクサ8455に出力する。演算の種類は、制御部821からの演算指示により指示される。この演算指示は、演算の種類を示すタイプレジスタの値に基づいて、制御部821により生成される。マルチプレクサ8455は、演算指示に従って、演算ユニット8451〜8454での演算結果のいずれかを選択して出力する。
デマルチプレクサ846は、出力部選択を指示する制御部821からの制御に従って、演算器845からの入力を、出力データレジスタ847又は送信装置83に入力する。出力部選択の指示は、リダクション演算が完了する以前には、演算器845からのデータを送信装置83に出力するようにされ、これ以外の場合には、出力データレジスタ847に出力するようにされる。
出力データレジスタ847は、リダクション演算の結果を、CPU3に出力する。出力データレジスタ847から出力されるリダクション演算結果は、リダクション演算完了時にCPU3に入力される。
送信装置83は、リダクション演算部のデマルチプレクサ846から、演算結果、パケット送信指示で指定された宛先ノードアドレス、制御レジスタ番号を受信した場合、これらに基づいて、パケットを生成し、生成したパケットをネットワーク2へ送信する。
同期部82は、バリア同期装置6の同期部62と同様にして、ステージ毎に演算の中間結果の送信先を変更する処理を行う。同期部82の制御部821は、同期信号及び制御レジスタ番号を受信装置81から受信した場合、受信した制御レジスタ番号に対応する制御レジスタ822に同期信号を送る。
制御部821は、同期が成立した場合、送信装置83へ同期信号の送信指示を出す。同期信号の送信指示は、図10では「パケット送信指示」と示す。この時、制御部821は、自プロセス又は自ノードの同期部82内の指定された制御レジスタ822に同期信号を送信することに加えて、リダクション演算部84を制御する。即ち、制御部821は、リダクション演算部84に入力されているデータと、記憶装置844で待ち合わせているデータとの間で、リダクション演算を行なわせる。一方、同期が成立していない場合、制御部821は、データを記憶装置844に保持させる。
自プロセス又は自ノードの同期部82の指定された制御レジスタ822に同期信号を送信した場合において、同期が成立した場合、制御部821は、更に、演算結果と記憶装置844で待ち合わせているデータとの演算を繰り返すようリダクション演算部84を制御する。一方、同期が成立しない場合、制御部821は、演算結果を記憶装置844に送信する。
制御部821は、設定処理部31からリダクション演算開始の信号を受け取ると、指定された組つまり制御レジスタ822の送信先に、同期信号と設定処理部31から入力されたデータとを送信する。この後、最後の組で同期が成立した場合、制御部821は、演算結果とリダクション演算完了の信号とを、設定処理部31に送信する。
図13は、図9のリダクション演算装置8が実行する、バタフライによるバリア同期を行いつつリダクション演算を行う処理の処理フローを示す。
このリダクション演算はバリア同期を利用する。従って、図13の処理フローは、リダクション演算対象のデータの送受信処理及びリダクション演算処理(ステップS29)以外は、図7の処理フローとほぼ同一である。
設定処理部31は、リダクション演算を開始する前に、リダクション演算を行なうノード数から使用する制御レジスタ822の数を決定し、各制御レジスタ822の宛先レジスタにバタフライでの次ステージに対応した宛先ノードアドレスと制御レジスタ番号とを、タイプレジスタに演算種類を設定する(ステップS21)。
レジスタの設定は、以下のように行われる。ノード数が2のべき乗である場合、バタフライにおいては、同期成立の後、自プロセス又は自ノードの次ステージと他ノードでの次ステージの2箇所に対して、同期信号を送信する。従って、宛先レジスタに指定する宛先は、自プロセス又は自ノードの制御レジスタ番号と、他ノードの宛先ノードアドレス及び制御レジスタ番号とを含む。最初のステージにおいては、信号の待ち合わせを行なわないので、シグナルレジスタは使わず、最後のステージにおいては、宛先レジスタは使わない。そのため、最初と最後のステージにおいては同一の制御レジスタ822を指定する。
ノード数が2のべき乗でない場合、第1の実施態様と同様に、追加ノードの中継ステージにあたる制御レジスタ822を、他のノードつまり追加ノードに設ける。追加ノードにおいて、最初のステージの制御レジスタ822と、最後のステージの制御レジスタ822とが、通信しないように設定する。更に、追加ノードの制御レジスタ822のタイプレジスタを通過(バイパス)に設定し、追加ノードに演算を行なわせないように設定する。
設定処理部31は、リダクション演算を開始するため、入力データを入力データレジスタへ送信し、リダクション演算開始信号を同期部82に送信する(ステップS22)。リダクション演算開始信号は、入力レジスタ番号と、最初のステージに対応した制御レジスタ番号とを含む。
同期部82の制御部821は、リダクション演算開始の信号が送られると、リダクション演算信号で指定された制御レジスタ822の宛先レジスタの値を読む(ステップS23)。
宛先レジスタにおいて他ノードが指定されている場合、制御部821は、送信装置83に対してパケット送信指示の信号を出し、送信装置83に対しデータを送る。送信装置83に送られるデータは、制御レジスタ822が最初のステージである場合には入力データレジスタの値であり、後続のステージである場合には演算器845からの演算結果である。入力データレジスタの値を送信装置83に送信する場合、演算指示としてバイパスを指定する。送信装置83は、データと、パケット送信指示で指定された宛先ノードアドレス及び制御レジスタ番号とに基づいて、パケットを生成し、これをネットワーク2へ送信する。
また、自プロセス又は自ノードの制御レジスタ822を指定されている場合、制御部821は、自プロセス又は自ノードの同期部82に同期信号を送るため、宛先レジスタにおいて指定された制御レジスタ822のシグナルレジスタの値を読む(ステップS24)。
制御部821が、シグナルレジスタに「1」が設定されているか否かを調べる(ステップS25)。シグナルレジスタに「1」が設定されている場合(S25 Yes)、同期成立となる。一方、シグナルレジスタに「1」が設定されていない場合(S25 No)、同期は成立していない。
同期が成立していない場合、制御部821は、シグナルレジスタに「1」を設定し、データを記憶装置844の制御レジスタ822に対応するアドレスに格納する。データは、制御レジスタ822が最初のステージである場合には入力データレジスタの値であり、後続のステージである場合には前ステージの演算結果である。この後、制御部821は、他のプロセスからのパケットの受信を待ち合わせる(ステップS26)。
受信装置81は、他のプロセスからパケットを受信した場合、受信したパケットに基づいて、データ、同期信号、宛先となる制御レジスタ番号を取り出し、デマルチプレクサ846、同期部82へ対応する情報を送信する(ステップS27)。
同期部82は、受信装置81から同期信号、制御レジスタ番号を受信した場合、指定された制御レジスタ822のSignalの値を読取る(ステップS28)。この後、ステップS25以下を繰り返す。
一方、ステップS25において同期が成立している場合、演算を行なう(ステップS29)。演算対象となるデータは、制御レジスタ822が最初のステージの次ステージに対応している場合には入力データレジスタの値である。また、制御レジスタ822がそれ以降のステージに対応しており、同期成立の要因がパケットからの同期信号である場合には、当該データはパケットに含まれるデータである。受信した同期信号が自プロセス又は自ノードの同期装置からの同期信号である場合、前ステージにおける演算結果と、同期が成立した制御レジスタ822に対応する記憶装置844内のアドレスに格納するデータとの間で演算を行なう。受信した情報が演算結果の場合はタイプレジスタの値から演算の種類を指定する。
更に、制御部821は、制御レジスタ822が最後のステージに対応したものか否かを調べる(ステップS210)。
最後のステージに対応する制御レジスタ822で同期が成立した場合(S210 Yes)、制御部821は、演算結果を出力データレジスタに格納し、設定処理部31にリダクション演算完了の信号を送信する(ステップS211)。
設定処理部31は、制御部821からのリダクション演算完了の信号を受け取り、出力データレジスタから演算結果を読み取る(ステップS212)。
ステップS210において制御レジスタ822が最後のステージに対応したものでない場合(S210 No)、同期が成立した制御レジスタ822の宛先レジスタの値を読取る(ステップS213)。この後、ステップS24以下の処理を繰り返す。
図14は、図13のバタフライによるリダクション演算処理における各ステージ間での同期信号の流れを示す。
図14において、ノード#1に着目すると、以下のように同期信号リダクション及び演算対象のデータが流れる。例えば、ノード#1は、演算対象のデータである入力データを受信した場合、リダクション演算開始信号の入力によりリダクション演算開始を指示される。これに応じて、ノード#1は、ステージ#1において、予め指示された宛先であるノード#1及びノード#2に、同期信号及び演算対象のデータを送信する。
ステージ#2において、自己の同期信号及び演算対象のデータを受信したノード#1は、予め指示されたノード#2からの同期信号を待ち合わせ、また、受信した演算対象のデータを記憶装置及び演算器に保持する。ステージ#2の同期信号及び演算対象のデータは、ノード#2が入力データを受信した後に、同様にして、ノード#2からノード#1に到達する。ノード#2からの同期信号が到達した場合、ノード#1において、自己の同期信号と、ノード#2からの同期信号との待ち合わせつまり2つの信号の同期が成立する。この同期が成立すると、ノード#1は、ステージ#2において、自己の演算対象のデータとノード#2からの演算対象のデータとの間の演算を実行し、予め指示された宛先であるノード#1及びノード#3に、同期信号及び演算結果を送信する。この演算結果は、ノード#1及びノード#3において、演算対象のデータとして用いられる。
ステージ#3において、自己の同期信号及び演算対象のデータを受信したノード#1は、予め指示されたノード#3からの同期信号を待ち合わせ、また、受信した演算対象のデータを記憶装置及び演算器に保持する。ステージ#3の同期信号及び演算対象のデータは、ノード#3が入力データを受信し、かつ、入力データを受信したノード#4からの同期信号を受信した後に、同様にして、ノード#3からノード#1に到達する。ノード#3からの同期信号が到達した場合、ノード#1において、自己の同期信号と、ノード#3からの同期信号との同期が成立する。この同期が成立すると、ノード#1は、ステージ#3において、自己の演算対象のデータとノード#3からの演算対象のデータとの間の演算を実行し、予め指示された出力データレジスタに、演算結果を出力する。この後、ノード#1は、リダクション演算完了信号を出力すると共に、出力データレジスタの保持されたデータをリダクション演算結果として出力する。 ノード#2〜4においても、同様にして、ステージ#3において、同期が成立し、リダクション演算完了信号とリダクション演算結果が出力される。これにより、バタフライによるリダクション演算が実行される。
従って、図14における同期信号及び演算対象のデータの流れは図4と同じ流れとなり、バタフライによるバリア同期を利用したリダクション演算が実行されていることが判る。
(第3の実施態様)
第3の実施態様は、本発明の他の実施態様である、ディスエミネーションによりバリア同期を行うバリア同期装置に関する。即ち、この例においては、バリア同期のアルゴリズムはディスエミネーションである。
第1の実施態様が採用するバタフライによるバリア同期は、プロセス数が2のべき乗でない場合に対応できない。このような場合、バタフライによるバリア同期を実行するためには、仮想的にプロセスを追加し、プロセス数を2のべき乗とする。仮想プロセスの通信は、実プロセスが代行する。このため、仮想プロセスに割り当てられた実プロセスは、仮想プロセスとしての通信も行なわなければならないので、ステージ数が増加する。
図15は、6個のプロセス#0〜#5でバタフライによるバリア同期を行なう例を示す。この場合、実プロセス#0〜#5に加えて、仮想プロセス#6及び#7が追加される。これにより、プロセス数が2のべき乗とされる。この場合、実プロセス#0及び#1は、仮想プロセス#6及び#7としての通信も行なう。実プロセス#0及び#1が、実プロセスとしての通信と、仮想プロセスとしての通信とを行う。このため、図15の例ではステージ数は6になる。
ステップ1において、実プロセス#0及び#1、実プロセス#2及び#3、実プロセス#4及び#5が、各々、相互に通信を行う。この後、仮想プロセス#6及び#7である実プロセス#0及び#1が、相互に通信を行う。実プロセス#0及び#1の間の通信と、仮想プロセス#6及び#7との間の通信は、同時に行うことはできない。従って、ステップ1におけるステージ数は、前者の通信及び後者の通信を合わせて、2となる。
なお、ステップ1において、プロセス#0、#1、#6及び#7が、各々、独立したプロセスとして図示される。プロセス#0及び#6を点線で囲んだプロセスが、実際の実プロセス#0である。プロセス#1及び#7も同様である。ステップ2及びステップ3において、仮想プロセス#6及び#7の図示を省略している。
ステップ2において、実プロセス#0は、実プロセス#2と通信を行い、また、仮想プロセス#6として実プロセス#4と通信を行う。これらの通信は、同時に行うことはできない。実プロセス#1についても、同様である。従って、ステップ2におけるステージ数は2となる。同様に、ステップS3においても、ステージ数は2となる。従って、全体の
ステージ数は6となる。
この問題を解決するため、バリア同期のアルゴリズムとして、バタフライに代えて、ディスエミネーションが提案されている。
図16は、6個のプロセス数でディスエミネーションによるバリア同期を行なう例を示す。ディスエミネーションは、ステージ番号をk、自プロセス又は自ノード1のプロセス番号をi、全プロセス数をNとした場合、バリアポイント到着の信号の送信先をi+2^(k−1)modNとするアルゴリズムである。
ステップ1において、各実プロセスは、1個隣の実プロセスに同期信号を送信する。例えば、実プロセス#0は実プロセス#1に同期信号を送信する。最後の実プロセスは、実プロセス#0に同期信号を送信する。ステップ2において、各実プロセスは、2個隣の実プロセスに同期信号を送信する。ステップ3において、各実プロセスは、3個隣の実プロセスに同期信号を送信する。
これにより、log(N)(但し、対数の底=2)回の同期信号の送信の後に、ある実プロセスは、他の全ての実プロセスからの同期信号を受信する。この結果、ステージ数は常にlog(N)(但し、対数の底=2)となるので、プロセス数が2のべき乗でない場合にも、図15の場合よりも効率が良い。
第3の実施態様によるコンピュータネットワークは、第1の実施態様と同様の構成を備える。即ち、第3の実施態様においては、図1に示すコンピュータネットワークにおいて図2に示すノード1が設けられ、ノード1において図5に示すバリア同期装置6が設けられ、バリア同期装置6において図6に示す同期部62が設けられる。
第3の実施態様では、制御レジスタ622の宛先レジスタに、ディスエミネーションによるバリア同期において次ステージとなる制御レジスタ622が設定される。これにより、ディスエミネーションによるバリア同期を行うことができる。
第3の実施態様において、バリア同期は、図7に示す処理フローと同様の処理フローにより実行される。しかし、第3の実施態様において、同期部62の制御部621は、図7のステップS14における、読取った対応する制御レジスタ622の宛先レジスタの値についての判定を省略する。即ち、自ノード1の制御レジスタ622又は他ノードの制御レジスタのいずれが指定されているかは、第3の実施態様では判定されない。これは、ディスエミネーションによるバリア同期においては、常に、各ステージの通信元及び通信先は、自ノード1の制御レジスタ622又は他ノードの制御レジスタの2つであるからである。
図17は、ディスエミネーションによるバリア同期処理における各ステージ間での同期信号の流れを示す。なお、図17は、4個のプロセス数でディスエミネーションによるバリア同期を行なう例である。従って、図16に現れる符号dは、図17には現れない。
図17において、ノード#1に着目すると、以下のように同期信号が流れる。即ち、同期信号がノード#1に到達した場合、ステージ#1において、ノード#1からノード#1及びノード#2に同期信号が送信される。ステージ#2の同期信号は、図17において符号aで示すように、ノード#4からノード#1に到達する。ノード#4からの同期信号が到達した場合、ステージ#2において、ノード#1からノード#1及びノード#3に同期信号が送信される。ステージ#3の同期信号は、図17において符号cで示すように、ノード#3からノード#1に到達する。ノード#3からの同期信号が到達した場合、ステージ#3において、同期が成立したと判定され、ノード#1から同期信号が出力される。
ノード#2〜4においても、同様にして、ステージ#3において、同期が成立し、同期信号が出力される。これにより、ディスエミネーションによるバリア同期が実行される。
(第4の実施態様)
第4の実施態様は、本発明の他の実施態様である、ディスエミネーションによりバリア同期を行いつつリダクション演算を行うリダクション演算装置に関する。
図18は、第4の実施態様のリダクション演算装置が備える同期部82及びリダクション演算部の構成の一例を示す。
第4の実施態様は、基本的には、第2の実施態様と同様の構成を備える。即ち、第4の実施態様においては、図1に示すコンピュータネットワークにおいて図2に示すノード1が設けられ、ノード1において図9に示すリダクション演算装置8が設けられる。
一方、第4の実施態様では、図10に示すリダクション演算装置8に代えて、図18に示すように、リダクション演算装置8Aが設けられる。リダクション演算装置8Aは、基本的には、リダクション演算装置8と同様の構成を備える。しかし、リダクション演算装置8Aにおいては、制御レジスタ822のタイプレジスタが省略される。
このために、第4の実施態様では、パケットが演算種類を示す情報を含む。演算種類は予め知ることができる。従って、リダクション演算に先立って、CPU3の設定処理部31に、リダクション演算の設定条件の一部として、演算種類が入力される。受信装置81は、受信した演算種類を同期装置82の制御部821に送信する。制御部821は、同期装置82からのパケット送信指示の信号に、演算種類の情報を加えて、送信装置83に送信する。送信装置83は、受信した演算種類の情報を、送信すべきパケットの所定の位置に付加することにより、送信パケットを生成する。
第4の実施態様において、制御レジスタ822の宛先レジスタに、ディスエミネーションによるバリア同期によるリダクション演算において次ステージとなる制御レジスタ822が設定される。これにより、ディスエミネーションによるバリア同期によるリダクション演算を行うことができる。
第4の実施態様において、リダクション演算は、図13に示す処理フローと同様の処理フローにより実行される。しかし、第4の実施態様において、同期部82の制御部821は、ステップS21における、制御レジスタ822のタイプレジスタの値についての判定を省略する。また、第4の実施態様では、ステップS22において、リダクション演算開始信号が、演算種類の情報を含むようにされる。更に、第4の実施態様では、ステップS24において、制御部821はパケット送信指示に演算種類の指定の情報を加え、送信装置83は演算種類の情報を持つパケットを生成する。また、第4の実施態様では、ステップS29において、演算種類は、受信装置81からの演算種類の信号に基づいて、指定される。そして、第4の実施態様では、ステップS27において、受信装置81から同期装置に送る信号に、演算種類が付加される。
また、制御部821は、ステップS24における、読取った対応する制御レジスタ822の宛先レジスタの値についての判定を省略する。
以上により、図17と同様に、ディスエミネーションによるリダクション演算処理における各ステージ間での同期信号の流れが実現される。
(第5の実施態様)
第5の実施態様は、本発明の他の実施態様である、ペアワイズエクスチェンジウィズリカーシブダブリング(Pairwise exchange with recursive doubling)によりバリア同期を行うバリア同期装置に関する。即ち、この例においては、バリア同期のアルゴリズムはペアワイズエクスチェンジウィズリカーシブダブリングである。
前述したように、バタフライによるバリア同期の欠点は、プロセス数が2のべき乗でない場合に対応できない点にある。この問題を解決するため、バリア同期のアルゴリズムとして、バタフライに代えて、第3の実施態様において説明したディスエミネーションの他に、ペアワイズエクスチェンジウィズリカーシブダブリングが提案されている。
図19は、6個のプロセスでペアワイズエクスチェンジウィズリカーシブダブリングによるバリア同期を行なう例を示す。ペアワイズエクスチェンジウィズリカーシブダブリングは、プロセスを2のべき乗のグループと、その余りのグループとに分ける。図19において、group a が2のべき乗のグループであり、group b が余りのグループである。図19の例では、group aには4つのプロセス#0〜#3が含まれ、group bには2つのプロセス#4及び#5が含まれる。
最初のステージにおいて、余りのグループbから2のべき乗のグループaへの通信を行う(ステップ1)。例えば、グループbのプロセス#4及び#5から、各々、グループaのプロセス#0及び#1へ、同期信号が送信される。グループaのプロセス#0及び#1は、受信した同期信号を、シグナルレジスタに格納する。図19において、各プロセスの備えるシグナルレジスタが、円で表される各プロセスに対応する四角形で表される。例えば、グループaのプロセス#0は、シグナルレジスタにおけるプロセス#4に対応するビットである第5ビットに、「1」を格納する。プロセス1についても、同様である。
この後、2のべき乗のグループa内で通信を行なう(ステップ2〜3)。例えば、プロセス#0及び#1の間及びプロセス#2及び#3の間で相互に通信を行い、続いて、プロセス#0及び#2の間及びプロセス#1及び#3の間で相互に通信を行う。これにより、2のべき乗のグループaにおいて同期が成立する。
2のべき乗のグループaにおいて同期が取れた場合、2のべき乗のグループaから余りのグループbへの通信を行なう(ステップ4)。例えば、グループaのプロセス#0及び#1から、各々、グループbのプロセス#4及び#5へ、同期信号が送信される。これにより、グループaとグループbとの間即ちグループaのプロセスとグループbのプロセスとの間で同期が成立する。
第5の実施態様によるコンピュータネットワークは、第1の実施態様と同様の構成を備える。即ち、第5の実施態様においては、図1に示すコンピュータネットワークにおいて図2に示すノード1が設けられ、ノード1において図5に示すバリア同期装置6が設けられ、バリア同期装置6において図6に示す同期部62が設けられる。
第5の実施態様において、制御レジスタ622の宛先レジスタに、ペアワイズエクスチェンジウィズリカーシブダブリングによるバリア同期において次ステージとなる制御レジスタ622が設定される。これにより、第1の実施態様と同様にして、ディスエミネーションによるバリア同期を行うことができる。
第5の実施態様において、バリア同期は、図7に示す処理フローと同様の処理フローにより実行される。しかし、第5の実施態様において、同期部62の制御部621は、図7のステップS11において、図20から判るように、最初のステージと最後のステージとで同じ制御レジスタ622を設定しない。
例えば、グループaのノード#1に着目すると、最初のステージにおいては、次ステージにおける宛先を指定するために、宛先レジスタを使用する。一方、最後のステージにおいても、グループbのノード#5を宛先として指定するために、宛先レジスタを使用する。従って、最初のステージと最後のステージにおいて、使用するレジスタが重複する。このため、最初と最後のステージにおいて、同一の制御レジスタ622は指定されない。即ち、図20において、最初のステージと最後のステージにおいて、異なる制御レジスタ番号#1及び#4が指定される。グループaのノード#2についても同様である。
グループa及びbを決定する際、いずれのノードが図20におけるノード#1及び#2として動作するかは不明である。従って、最初のステージと最後のステージにおいて、同じ制御レジスタ622が設定されないようにされる。
また、ステップS19において、バリア同期の最後のステージであっても、制御レジスタ622の宛先レジスタにおいて通信先が指定されている場合には、当該通信を行う。これは、以下の理由による。即ち、ペアワイズエクスチェンジウィズリカーシブダブリングにおいては、バリア同期が成立するステージが異なるノードが存在する。このため、バリア同期成立の後も、他のノードと通信を行なうノードが存在することになる。従って、最初のステージと最後のステージとで、同じ制御レジスタ622を設定できないノードが存在するので、最初のステージと最後のステージとで同じ制御レジスタ622を設定しない。
図20は、ペアワイズエクスチェンジウィズリカーシブダブリングによるバリア同期処理における各ステージ間での同期信号の流れを示す。
図20において、グループaのノード#1に着目すると、以下のように同期信号が流れる。即ち、同期信号が到達した場合、ステージ#1において、ノード#1に同期信号が送信される。ステージ#2の同期信号は、グループbのノード#5からノード#1に到達する。この同期信号が到達した場合、ステージ#2において、ノード#1からノード#1及びノード#2に同期信号が送信される。ステージ#3の同期信号は、ノード#2からノード#1に到達する。この同期信号が到達した場合、ステージ#3において、ノード#1からノード#1及びノード#4に同期信号が送信される。ステージ#4の同期信号は、ノード#3からノード#1に到達する。この同期信号が到達した場合、ステージ#4において、同期が成立したと判定され、ノード#1から同期信号が出力されると共に、グループbのノード#5に同期信号が送信される。
ノード#2〜4においても、図20に示すように、ほぼ同様にして、ステージ#4において、同期が成立し、同期信号が出力される。
一方、グループbのノード#5に着目すると、以下のように同期信号が流れる。即ち、ステージ#1において、ノード#5からノード#1に同期信号が送信される。この後、ステージ#2〜4においては、ノード#5への同期信号の入力が無いので、変化がない。ステージ#5において、ノード#1からの同期信号がノード#5に入力した場合、同期が成立したと判定され、ノード#5から同期信号が出力される。ノード#6においても、ほぼ同様である。これにより、ペアワイズエクスチェンジウィズリカーシブダブリング によるバリア同期が実行される。
(第6の実施態様)
第6の実施態様は、本発明の他の実施態様である、ペアワイズエクスチェンジウィズリカーシブダブリングによりバリア同期を行いつつリダクション演算を行うリダクション演算装置に関する。
第6の実施態様は、第2の実施態様と同様の構成を備える。即ち、第6の実施態様においては、図1に示すコンピュータネットワークにおいて図2に示すノード1が設けられ、ノード1において図9に示すリダクション演算装置8が設けられ、リダクション演算装置8は図10に示す構成とされる。
第6の実施態様において、制御レジスタ822の宛先レジスタに、ペアワイズエクスチェンジウィズリカーシブダブリングによるバリア同期によるリダクション演算において次ステージとなる制御レジスタ822が設定される。これにより、第2の実施態様と同様にして、ペアワイズエクスチェンジウィズリカーシブダブリングによるバリア同期によるリダクション演算を行うことができる。
第6の実施態様において、リダクション演算は、図13に示す処理フローと同様の処理フローにより実行される。しかし、第6の実施態様においても、第5の実施態様と同様に、ステップS11において、最初のステージと最後のステージとで同じ制御レジスタ822が設定されない。また、ステップS19において、バリア同期の最後のステージであっても、制御レジスタ822の宛先レジスタにおいて通信先が指定されている場合には、当該通信が行われる。
第6の実施態様において、ペアワイズエクスチェンジウィズリカーシブダブリングによるバリアによりバリア同期を行いつつリダクション演算を行う処理における各ステージ間での同期信号の流れは、図20と同様である。これにより、ペアワイズエクスチェンジウィズリカーシブダブリングによりバリア同期を行いつつリダクション演算が実行される。
(第7の実施態様)
第7の実施態様は、本発明の他の実施態様であるバリア同期装置であって、バタフライによりバリア同期を行うバリア同期装置に関する。
図21は、本発明の一実施態様であるバリア同期装置を備え、マルチプロセッサ(マルチプロセッサコア)により構成されるコンピュータシステムの構成の一例を示す。図22は、図21のコンピュータシステムにおける、本発明の一実施態様であるバリア同期装置を示す。
第7の実施態様においては、バリア同期装置6Aは、第1の実施態様のように各々のプロセッサコア10に設けられるのではなく、プロセッサコアとは独立に設けられる。即ち、第7の実施態様において、複数のプロセッサコア10が、バス9を介して、接続されるとともに、バス9にはバリア同期装置6Aが接続される。これにより、複数のプロセッサコア10は、バス9を介して、バリア同期装置6Aと接続される。バス9に代えて、種々のネットワークを用いるようにしても良い。
第7の実施態様においては、バリア同期装置6Aは、相互に通信を行なわない。このため、バリア同期装置6Aは、第1の実施態様のような受信装置61及び送信装置63を備えない。即ち、第7の実施態様のバリア同期装置6Aは、図6に示す第1の実施態様のバリア同期装置6において、受信装置61及び送信装置63を省略した構成を有する。これに代えて、複数のプロセッサコア10及びバリア同期装置6Aが、各々、バスインタフェースを備え、全ての入力信号及び出力信号は、バスインタフェースを介して、入力又は出力される。
第7の実施態様においては、バリア同期装置6Aに接続されたプロセッサコア10毎に、対応する制御レジスタ622が、バリア同期装置6A内に予め定められる。これにより、例えば4個のプロセッサコア10でバリア同期を実行する場合、第1の実施態様における図4と同様にしてバリア同期を行うことができる。この結果、プロセッサコア10にバリア同期装置6Aを設けたのと同様に、バリア同期を行うことができる。
第7の実施態様においては、複数のプロセッサコア10に対応する複数の制御レジスタ622が同一のバリア同期装置6Aに存在する。従って、複数のバリア同期装置6Aの間におけるブロードキャストは不要であり、これに代えて、制御部621が、当該複数の制御レジスタ622を参照する。
(第8の実施態様)
第8の実施態様は、本発明の他の実施態様である、バタフライによりバリア同期を行うリダクション演算装置に関する。
第8の実施態様は、第7の実施態様におけるバリア同期装置6Aに代えて、リダクション演算装置8Bを設けた例である。
図23は、図21のコンピュータシステムにおける、本発明の一実施態様であるリダクション演算装置を示す。
第8の実施態様においては、リダクション演算装置8Bは、各々のプロセッサコア10と独立に設けられる。リダクション演算装置8Bは、第1の実施態様のような受信装置81及び送信装置83を備えない。即ち、第8の実施態様のリダクション演算装置8Bは、図10に示す第2の実施態様のリダクション演算装置8において受信装置81及び送信装置83を省略した構成を有する。これに加えて、第8の実施態様のリダクション演算装置8Bは、あるリダクション演算においては同一の演算を行うので、図10のリダクション演算装置8においてデマルチプレクサ846を省略した構成を有する。一方、第8の実施態様のリダクション演算装置8Bの演算器845は、図10のリダクション演算装置8の演算器845と同様の構成を備える。
第8の実施態様においては、プロセッサコア10毎に、これが使用する制御レジスタ822が予め定められる。これにより、例えば4個のプロセッサコア10でバリア同期によるリダクション演算を実行する場合、第2の実施態様における図12と同様にしてバリア同期によるリダクション演算を行うことができる。この結果、プロセッサコア10にリダクション演算装置8Bを設けたのと同様に、バリア同期によるリダクション演算を行うことができる。
第8の実施態様においては、複数のリダクション演算装置8Bの間におけるブロードキャストは不要である。
ノードの接続の一例を示す図である。 ノードの構成の一例を示す図である。 バリア同期の概要を示す説明図である。 4個のプロセスでのバタフライによるバリア同期の例を示す図である。 バリア同期装置の構成の一例を示す図である。 主として、同期装置(同期部)の構成の一例を示す図である。 バリア同期実行時の処理フローチャートである。 バタフライによるバリア同期での信号の流れを示す図である。 リダクション演算装置の構成の一例を示す図である。 主として、リダクション演算部の構成の一例を示す図である。 演算器の構成の一例を示す図である。 バタフライによるリダクション演算を示す図である。 リダクション演算実行時の処理フローチャートである。 バタフライネットワークによるリダクション演算でのデータ及び信号の流れを示す図である。 6個のプロセスでのバタフライによるバリア同期の例を示す図である。 6個のプロセスでのディスエミネーションによるバリア同期の例を示す図である。 ディスエミネーションによるバリア同期での信号の流れを示す図である。 主として、リダクション演算部の構成の一例を示す図である。 6個のプロセスでのペアワイズエクスチェンジウィズリカーシブダブリングによるバリア同期の例を示す図である。 ペアワイズエクスチェンジウィズリカーシブダブリングによるバリア同期での信号の流れを示す図である。 マルチコアプロセッサの構成例を示す図である。 主として、同期装置(同期部)の構成の一例を示す図である。 主として、リダクション演算部の構成の一例を示す図である。
符号の説明
1 ノード
2 ネットワーク
3 CPU
4 メモリ
5 システム制御部
6 バリア同期装置
7 入出力装置
8 リダクション演算装置
61、81 受信装置
62、82 同期装置(同期部)
63、83 送信装置
621、821 制御部
622、822 制御レジスタ
841 入力データレジスタ
842 マルチプレクサ
843 スイッチ
844 記憶装置
845 演算器
846 デマルチプレクサ
847 出力データレジスタ

Claims (8)

  1. 互いに接続される複数のノードの各々が有するバリア同期装置において、
    自ノードに含まれる情報処理装置から設定されたバリア同期のアルゴリズムに従って、同期成立後の宛先である宛先ノードを特定する宛先ノード情報と、宛先ノード情報に対応する宛先ノードにおける制御レジスタを特定する宛先レジスタ情報とをそれぞれ保持する複数の宛先レジスタと、
    制御レジスタを特定する制御レジスタ情報をそれぞれ含むn個(nは正の整数)の受信パケットを受信する受信部と、
    複数の制御レジスタを有し、前記複数の制御レジスタのうち前記受信部が受信するn個の受信パケットの各々に含まれる制御レジスタ情報に対応する制御レジスタが前記n個の受信パケットを全て受信した場合、送信指示を出力する同期部と、
    前記同期部が前記送信指示を出力した場合、前記n個の受信パケットを受信した各制御レジスタに対応する各宛先レジスタに設定された宛先ノード情報と宛先レジスタ情報とに基づき、各宛先ノードにおける宛先レジスタ情報をそれぞれ含むm個(mは正の整数)の送信パケットをそれぞれの宛先ノードに送信する送信部を有する
    ことを特徴とするバリア同期装置。
  2. 前記複数の宛先レジスタの各々は、前記送信パケットの宛先が自ノードである場合、自ノードを特定する自ノード情報と、自ノードにおける制御レジスタを特定する自レジスタ情報とを保持する
    ことを特徴とする請求項1に記載のバリア同期装置。
  3. 前記バリア同期装置は、さらに、
    自ノードに含まれる情報処理装置から入力されたデータを記憶する記憶装置と、
    前記同期装置から演算指示を受信した場合、前記記憶装置が記憶する第1の演算対象データと、前記受信部が受信する受信パケットに含まれる第2の演算対象データとを用いて演算を実行する演算器とを有し、
    前記送信部は、前記同期部が送信指示を出力した場合、前記n個の受信パケットを受信した各制御レジスタに対応する各宛先レジスタに設定された宛先ノード情報に基づき、各宛先ノードにおける宛先レジスタ情報と前記演算器が実行した演算結果をそれぞれ含むm個(mは正の整数)の送信パケットをそれぞれの宛先ノードに送信する
    ことを特徴とする請求項1に記載のバリア同期装置。
  4. 前記バリア同期のアルゴリズムは、バタフライアルゴリズムである
    ことを特徴とする請求項1に記載のバリア同期装置。
  5. 前記バリア同期のアルゴリズムは、ディスエミネーション(Dissemination)アルゴリズムである
    ことを特徴とする請求項1に記載のバリア同期装置。
  6. 前記バリア同期のアルゴリズムは、ペアワイズエクスチェンジウィズリカーシブダブリング(Pairwise exchange with recursive doubling)アルゴリズムである
    ことを特徴とする請求項1に記載のバリア同期装置。
  7. 互いに接続される複数のノードを有するバリア同期システムにおいて、
    前記複数のノードの各々は、各々のノードが有する情報処理装置に接続されるとともに、各々自ノードに含まれる情報処理装置から設定されたバリア同期のアルゴリズムに従って、同期成立後の宛先である宛先ノードを特定する宛先ノード情報と、該宛先ノード情報に対応する宛先ノードにおける制御レジスタを特定する宛先レジスタ情報とをそれぞれ保持する複数の宛先レジスタを有するバリア同期装置を有し、
    前記複数のバリア同期装置は、各々、
    制御レジスタを特定する制御レジスタ情報をそれぞれ含むn個(nは正の整数)の受信パケットを受信する受信部と、
    複数の制御レジスタを有し、前記複数の制御レジスタのうち前記受信部が受信するn個の受信パケットの各々に含まれる制御レジスタ情報に対応する制御レジスタが前記n個の受信パケットを全て受信した場合、送信指示を出力する同期部と、
    前記同期部が前記送信指示を出力した場合、前記n個の受信パケットを受信した各制御レジスタに対応する各宛先レジスタに設定された宛先ノード情報と宛先レジスタ情報とに基づき、各宛先ノードにおける宛先レジスタ情報をそれぞれ含むm個(mは正の整数)の送信パケットをそれぞれの宛先ノードに送信する送信部とを有する
    ことを特徴とするバリア同期システム。
  8. 互いに接続される複数のノードに各々接続されるとともに、自ノードに含まれる情報処理装置から設定されたバリア同期のアルゴリズムに従って、同期成立後の宛先である宛先ノードを特定する宛先ノード情報と、宛先ノード情報に対応する宛先ノードにおける制御レジスタを特定する宛先レジスタ情報とをそれぞれ保持する複数の宛先レジスタとを有するバリア同期装置の制御方法であって
    前記バリア同期装置の受信部が、制御レジスタを特定する制御レジスタ情報をそれぞれ含むn個(nは正の整数)の受信パケットを受信し、
    前記バリア同期装置の同期部が、複数の制御レジスタのうち前記受信部が受信するn個の受信パケットの各々に含まれる制御レジスタ情報に対応する制御レジスタが前記n個の受信パケットを全て受信した場合、送信指示を出力し、
    記同期部が前記送信指示を出力した場合、前記バリア同期装置の送信部が、前記n個の受信パケットを受信した各制御レジスタに対応する各宛先レジスタに設定された宛先ノード情報と宛先レジスタ情報とに基づき、各宛先ノードにおける宛先レジスタ情報をそれぞれ含むm個(mは正の整数)の送信パケットをそれぞれの宛先ノードへ送信する
    ことを特徴とするバリア同期装置の制御方法。
JP2008295115A 2008-11-19 2008-11-19 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法 Active JP5304194B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2008295115A JP5304194B2 (ja) 2008-11-19 2008-11-19 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法
EP09173531.6A EP2189903B1 (en) 2008-11-19 2009-10-20 Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method
US12/582,119 US8654798B2 (en) 2008-11-19 2009-10-20 Barrier synchronization apparatus, barrier synchronization system, and barrier synchronization method
KR1020090106255A KR101029769B1 (ko) 2008-11-19 2009-11-05 배리어 동기 장치, 배리어 동기 처리 시스템 및 방법, 리덕션 연산 장치, 리덕션 연산 처리 시스템 및 방법
CN2009102247633A CN101739381B (zh) 2008-11-19 2009-11-17 屏障同步设备、屏障同步系统以及屏障同步方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008295115A JP5304194B2 (ja) 2008-11-19 2008-11-19 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法

Publications (2)

Publication Number Publication Date
JP2010122848A JP2010122848A (ja) 2010-06-03
JP5304194B2 true JP5304194B2 (ja) 2013-10-02

Family

ID=41818699

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008295115A Active JP5304194B2 (ja) 2008-11-19 2008-11-19 バリア同期装置、バリア同期システム及びバリア同期装置の制御方法

Country Status (5)

Country Link
US (1) US8654798B2 (ja)
EP (1) EP2189903B1 (ja)
JP (1) JP5304194B2 (ja)
KR (1) KR101029769B1 (ja)
CN (1) CN101739381B (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5639385B2 (ja) 2010-05-28 2014-12-10 宏平 澤 混練押出装置
JP5664039B2 (ja) 2010-09-08 2015-02-04 富士通株式会社 リダクション演算装置、処理装置及びコンピュータシステム
CN102446155A (zh) * 2010-10-12 2012-05-09 无锡江南计算技术研究所 同步装置及方法
JP5549575B2 (ja) * 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
JP5549574B2 (ja) 2010-12-17 2014-07-16 富士通株式会社 並列計算機システム、同期装置、並列計算機システムの制御方法
JP5644566B2 (ja) * 2011-02-09 2014-12-24 富士通株式会社 計算システム、構成管理装置および構成管理プログラム
US8607247B2 (en) * 2011-11-03 2013-12-10 Advanced Micro Devices, Inc. Method and system for workitem synchronization
JP5994601B2 (ja) * 2012-11-27 2016-09-21 富士通株式会社 並列計算機、並列計算機の制御プログラム及び並列計算機の制御方法
EP3242423A1 (en) * 2012-11-29 2017-11-08 Nec Corporation Synchronization apparatus and synchronization method
JP6221498B2 (ja) * 2013-08-15 2017-11-01 富士通株式会社 情報処理システム及び情報処理システムの制御方法
WO2015034802A1 (en) 2013-09-06 2015-03-12 Massachusetts Institute Of Technology Isa extensions for synchronous coalesced accesses
JP6152786B2 (ja) 2013-11-29 2017-06-28 富士通株式会社 通信制御装置、情報処理装置、並列計算機システム、制御プログラム、及び並列計算機システムの制御方法
JP6722055B2 (ja) * 2016-06-29 2020-07-15 三菱重工業株式会社 処理同期制御システム及び処理同期制御方法
JP6535304B2 (ja) * 2016-08-26 2019-06-26 日本電信電話株式会社 分散同期処理システムおよび分散同期処理方法
JP6907835B2 (ja) 2017-09-06 2021-07-21 富士通株式会社 計算ノード装置、並列計算機システム、および計算ノード装置の制御方法
GB201717295D0 (en) * 2017-10-20 2017-12-06 Graphcore Ltd Synchronization in a multi-tile processing array
JP7159696B2 (ja) * 2018-08-28 2022-10-25 富士通株式会社 情報処理装置,並列計算機システムおよび制御方法
JP7192388B2 (ja) 2018-10-22 2022-12-20 富士通株式会社 並列処理装置、並列演算実行プログラムおよびバックアップ方法
JP7207133B2 (ja) 2019-04-23 2023-01-18 富士通株式会社 情報処理装置、同期装置及び情報処理装置の制御方法
CN112783663B (zh) * 2021-01-15 2023-06-13 中国人民解放军国防科技大学 一种可扩展的栅栏同步方法及设备

Family Cites Families (10)

* 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 ブロードキャスト・バリアによるデータ通信方式
JPH07152712A (ja) 1993-11-30 1995-06-16 Fujitsu Ltd バリア同期を行うマルチプロセッサ
JP3532037B2 (ja) * 1996-07-31 2004-05-31 富士通株式会社 並列計算機
US7100021B1 (en) * 2001-10-16 2006-08-29 Cisco Technology, Inc. Barrier synchronization mechanism for processors of a systolic array
JP4276028B2 (ja) 2003-08-25 2009-06-10 株式会社日立製作所 マルチプロセッサシステムの同期方法
US20050120185A1 (en) * 2003-12-01 2005-06-02 Sony Computer Entertainment Inc. Methods and apparatus for efficient multi-tasking
US7937709B2 (en) * 2004-12-29 2011-05-03 Intel Corporation Synchronizing multiple threads efficiently
JP4448784B2 (ja) 2005-03-15 2010-04-14 株式会社日立製作所 並列計算機の同期方法及びプログラム
US20080109573A1 (en) * 2006-11-08 2008-05-08 Sicortex, Inc RDMA systems and methods for sending commands from a source node to a target node for local execution of commands at the target node
JP4324210B2 (ja) 2007-05-22 2009-09-02 三菱電機株式会社 車両用交流発電機

Also Published As

Publication number Publication date
US20100124241A1 (en) 2010-05-20
US8654798B2 (en) 2014-02-18
EP2189903B1 (en) 2018-08-08
JP2010122848A (ja) 2010-06-03
EP2189903A2 (en) 2010-05-26
KR101029769B1 (ko) 2011-04-19
EP2189903A3 (en) 2012-03-07
CN101739381B (zh) 2013-04-10
KR20100056372A (ko) 2010-05-27
CN101739381A (zh) 2010-06-16

Similar Documents

Publication Publication Date Title
JP5304194B2 (ja) バリア同期装置、バリア同期システム及びバリア同期装置の制御方法
JP5549574B2 (ja) 並列計算機システム、同期装置、並列計算機システムの制御方法
JP5549575B2 (ja) 並列計算機システム、同期装置、並列計算機システムの制御方法
JPH1049507A (ja) 並列計算機
JP2006101525A (ja) データ・フロー・アプリケーションのためのネットワーク・オン・チップ半自動通信アーキテクチャ
JP5664039B2 (ja) リダクション演算装置、処理装置及びコンピュータシステム
US20100302952A1 (en) Network switch, path setting method, and program
JP4342100B2 (ja) パケット処理装置
US8792488B2 (en) Network switch, route setup method, program, and parallel computer system
JP5450297B2 (ja) デジタルデータ処理操作を分散実行するためのデバイスおよび方法
JP2009301101A (ja) プロセッサ間通信システム、プロセッサ、プロセッサ間通信方法、および、通信方法
JP5212743B2 (ja) 通信方法
JP5556377B2 (ja) 並列計算システム、プロセッサ、ネットワークスイッチ装置、及び通信方法
JP7207133B2 (ja) 情報処理装置、同期装置及び情報処理装置の制御方法
US11907725B2 (en) Communication in a computer having multiple processors
JP5047099B2 (ja) データ通信システム、データ通信方法およびデータ通信システムを構成する情報処理装置
US20230033312A1 (en) Secure computing control method, data packet processing method and device and system thereof
JP2023084904A (ja) プロセッサ、情報処理装置及び情報処理方法
JP2002344463A (ja) 双方向リングネットワーク、ノード装置および双方向リングネットワーク制御方法
JP2002247095A (ja) パケットデータ処理装置
JP2011141751A (ja) 並列コンピュータシステム、プロセッサ、同期装置、通信方法および通信支援方法
JP2001043198A (ja) システム間通信制御方式
JP2007048092A (ja) 同期判定装置及び同期判定方法及びプログラム
JP2000200254A (ja) 並列処理システム及び並列処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20121119

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121225

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130319

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130514

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: 20130528

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130610

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5304194

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150