JP2020017043A - ノード装置、並列計算機システム、及び並列計算機システムの制御方法 - Google Patents

ノード装置、並列計算機システム、及び並列計算機システムの制御方法 Download PDF

Info

Publication number
JP2020017043A
JP2020017043A JP2018139137A JP2018139137A JP2020017043A JP 2020017043 A JP2020017043 A JP 2020017043A JP 2018139137 A JP2018139137 A JP 2018139137A JP 2018139137 A JP2018139137 A JP 2018139137A JP 2020017043 A JP2020017043 A JP 2020017043A
Authority
JP
Japan
Prior art keywords
register
registers
data
node device
reduction operation
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.)
Withdrawn
Application number
JP2018139137A
Other languages
English (en)
Inventor
祐史 近藤
Yuji Kondo
祐史 近藤
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 JP2018139137A priority Critical patent/JP2020017043A/ja
Priority to US16/453,267 priority patent/US20200034213A1/en
Publication of JP2020017043A publication Critical patent/JP2020017043A/ja
Withdrawn legal-status Critical Current

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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • 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/30098Register arrangements
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources
    • 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/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

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

Abstract

【課題】並列計算機システムのノード装置内における演算処理装置の複数のジョブ、タスク、プロセス、スレッド等の処理単位に対してリダクション演算の演算結果を通知する際の通知コストを削減する。【解決手段】同期装置712内のレジスタ721−0〜レジスタ721−(p−1)は、演算処理装置711によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを記憶する。リダクション演算部722は、複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行って、リダクション演算の演算結果を生成する。通知制御部723は、演算結果が生成されたとき、リダクション演算の完了を上記複数の処理単位に一括して通知する。【選択図】図7

Description

本発明は、ノード装置、並列計算機システム、及び並列計算機システムの制御方法に関する。
図1は、並列計算機システムの例を示している。図1の並列計算機システムは、並列に動作するノード装置101−1〜ノード装置101−9を含む。隣接する2台のノード装置は、伝送路102によって接続されている。このような並列計算機システムでは、各ノード装置が生成するデータを用いてリダクション演算が実行されることがある。
図2は、4台のノード装置に対するリダクション演算の例を示している。図2の並列計算機システムは、ノード装置N0〜ノード装置N3を含み、リダクション演算を実行することによって、4台のノード装置それぞれが有するベクトルの総和SUMを求める。例えば、ノード装置N0、ノード装置N1、ノード装置N2、及びノード装置N3それぞれが有するベクトルの要素が1、7、13、及び19である場合、それらの要素の総和は40になる。
リダクション演算に関して、全てのプロセス又はスレッドがバリアに到達するまで、バリアに到達済みのプロセス又はスレッドの進行を停止させるバリア同期を行いつつ、リダクション演算を行うリダクション演算装置が知られている(例えば、特許文献1及び特許文献2を参照)。分散共有メモリを用いた同報通信方法も知られている(例えば、特許文献3を参照)。
特開2010−122848号公報 特開2012−128808号公報 特開2008−15617号公報
並列計算機システムの各ノード装置内において複数のジョブ、タスク、プロセス、スレッド等の処理単位が動作している場合、各処理単位に対してリダクション演算の演算結果を通知することは、冗長な処理であり、パケット流量、レイテンシ等の通知コストが増加する原因となる。
1つの側面において、本発明は、並列計算機システムのノード装置内における演算処理装置の複数のジョブ、タスク、プロセス、スレッド等の処理単位に対してリダクション演算の演算結果を通知する際の通知コストを削減することを目的とする。
1つの案では、ノード装置は、演算処理装置及び同期装置を含み、同期装置は、複数のレジスタ、リダクション演算部、及び通知制御部を含む。
複数のレジスタは、演算処理装置によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを記憶する。リダクション演算部は、複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行って、リダクション演算の演算結果を生成する。通知制御部は、演算結果が生成されたとき、リダクション演算の完了を上記複数の処理単位に一括して通知する。
実施形態によれば、並列計算機システムのノード装置内における演算処理装置の複数のジョブ、タスク、プロセス、スレッド等の処理単位に対してリダクション演算の演算結果を通知する際の通知コストを削減することができる。
並列計算機システムを示す図である。 4台のノード装置に対するリダクション演算を示す図である。 プロセスを示す図である。 16個のプロセスに対するリダクション演算を示す図である。 リダクション演算の処理フローを示す図である。 プロセス0に関する処理フローを示す図である。 ノード装置の構成図である。 並列計算機システムの制御方法のフローチャートである。 並列計算機システムの構成図である。 CPU及び通信装置を含むノード装置の構成図である。 同期装置の第1の構成図である。 共有領域による通知方法におけるレジスタの情報を示す図である。 共有領域による通知方法における書き込み要求を示す図である。 リダクション演算の完了を一括して通知する処理フローを示す図である。 共有領域による通知方法におけるプロセス0に関する処理フローを示す図である。 ロック制御回路の構成図である。 マルチキャストによる通知方法におけるレジスタの情報を示す図である。 マルチキャストによる通知方法における書き込み要求を示す図である。 マルチキャストによる通知方法におけるプロセス0に関する処理フローを示す図である。 同期装置の第2の構成図である。 レジスタによる通知方法におけるレジスタの情報を示す図である。
以下、図面を参照しながら、実施形態を詳細に説明する。
図3は、ノード装置N0〜ノード装置N3の各々において生成されるプロセスの例を示している。この例では、各ノード装置Ni(i=0〜3)内においてプロセス0〜プロセス3の4個のプロセスが生成され、合計16個のプロセスが並列処理を行う。
ここで、プロセスはノード装置が処理を実行する処理単位の一例であり、プロセス以外のジョブ、タスク、スレッド、マイクロスレッド等で有っても良い。
図4は、ノード装置N0〜ノード装置N3の16個のプロセスに対するリダクション演算の例を示している。図4の並列計算機システムは、ノード装置N0〜ノード装置N3を含み、16個のプロセスに対するallreduceを実行することで、16個のプロセスそれぞれが生成するデータの総和SUMを求める。この例では、16個のプロセスが有するデータの総和は78になる。
図5は、図4のリダクション演算を2入力2出力のリダクション演算器を用いて実行する場合の処理フローの例を示している。ノード装置Ni内の各丸印は、データを記憶するレジスタを表し、丸印内の数字又は文字は、各レジスタの識別情報を表す。リダクション演算は、プロセス間で同期を取りながら実行される。
ノード装置N0内のレジスタ0、レジスタ1、レジスタ2、及びレジスタ3は、入出力インタフェース(IF)として用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ10、レジスタ11、レジスタ18、レジスタ1c、レジスタ1e、レジスタ20、レジスタ24、及びレジスタ25は、中継IFとして用いられ、待機中のデータを記憶する。
ノード装置N1内のレジスタ4、レジスタ5、レジスタ6、及びレジスタ7は、入出力IFとして用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ12、レジスタ13、レジスタ19、レジスタ21、レジスタ26、及びレジスタ27は、中継IFとして用いられ、待機中のデータを記憶する。
ノード装置N2内のレジスタ8、レジスタ9、レジスタa、及びレジスタbは、入出力IFとして用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ14、レジスタ15、レジスタ1a、レジスタ1d、レジスタ1f、レジスタ22、レジスタ28、及びレジスタ29は、中継IFとして用いられ、待機中のデータを記憶する。
ノード装置N3内のレジスタc、レジスタd、レジスタe、及びレジスタfは、入出力IFとして用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ16、レジスタ17、レジスタ1b、レジスタ23、レジスタ2a、及びレジスタ2bは、中継IFとして用いられ、待機中のデータを記憶する。
ノード装置N0内のレジスタ10は、レジスタ0及びレジスタ1のデータの和を記憶し、レジスタ11は、レジスタ2及びレジスタ3のデータの和を記憶し、レジスタ18は、レジスタ10及びレジスタ11のデータの和を記憶する。
ノード装置N1内のレジスタ12は、レジスタ4及びレジスタ5のデータの和を記憶し、レジスタ13は、レジスタ6及びレジスタ7のデータの和を記憶し、レジスタ19は、レジスタ12及びレジスタ13のデータの和を記憶する。
ノード装置N2内のレジスタ14は、レジスタ8及びレジスタ9のデータの和を記憶し、レジスタ15は、レジスタa及びレジスタbのデータの和を記憶し、レジスタ1aは、レジスタ14及びレジスタ15のデータの和を記憶する。
ノード装置N3内のレジスタ16は、レジスタc及びレジスタdのデータの和を記憶し、レジスタ17は、レジスタe及びレジスタfのデータの和を記憶し、レジスタ1bは、レジスタ16及びレジスタ17のデータの和を記憶する。
ノード装置N0内のレジスタ1cは、レジスタ18及びノード装置N1内のレジスタ19のデータの和を記憶する。ノード装置N2内のレジスタ1dは、レジスタ1a及びノード装置N3内のレジスタ1bのデータの和を記憶する。
ノード装置N0内のレジスタ1eは、レジスタ1c及びノード装置N2内のレジスタ1dのデータの和を記憶する。ノード装置N2内のレジスタ1fは、レジスタ1d及びノード装置N0内のレジスタ1cのデータの和を記憶する。レジスタ1e及びレジスタ1fのデータは、16個のプロセスが有するデータの総和に相当する。
レジスタ1eのデータは、ノード装置N0内のレジスタ20及びレジスタ24を経由して、レジスタ0に対応するプロセス0及びレジスタ1に対応するプロセス1に通知される。また、レジスタ1eのデータは、ノード装置N0内のレジスタ20及びレジスタ25を経由して、レジスタ2に対応するプロセス2及びレジスタ3に対応するプロセス3に通知される。
レジスタ1eのデータは、ノード装置N1内のレジスタ21及びレジスタ26を経由して、レジスタ4に対応するプロセス0及びレジスタ5に対応するプロセス1に通知される。また、レジスタ1eのデータは、ノード装置N1内のレジスタ21及びレジスタ27を経由して、レジスタ6に対応するプロセス2及びレジスタ7に対応するプロセス3に通知される。
一方、レジスタ1fのデータは、ノード装置N2内のレジスタ22及びレジスタ28を経由して、レジスタ8に対応するプロセス0及びレジスタ9に対応するプロセス1に通知される。また、レジスタ1fのデータは、ノード装置N2内のレジスタ22及びレジスタ29を経由して、レジスタaに対応するプロセス2及びレジスタbに対応するプロセス3に通知される。
レジスタ1fのデータは、ノード装置N3内のレジスタ23及びレジスタ2aを経由して、レジスタcに対応するプロセス0及びレジスタdに対応するプロセス1に通知される。また、レジスタ1fのデータは、ノード装置N3内のレジスタ23及びレジスタ2bを経由して、レジスタeに対応するプロセス2及びレジスタfに対応するプロセス3に通知される。
こうして、16個のプロセスが有するデータの総和が、リダクション演算の演算結果として、それらのプロセスに通知される。
図6は、図5のノード装置N0内におけるプロセス0に関する処理フローの例を示している。プロセス0は、リダクション演算の開始時にレジスタ0をロックし、入力データをレジスタ0に格納する。そして、レジスタ1eに格納された演算結果が、レジスタ20及びレジスタ24を経由してプロセス0に通知されると、レジスタ0が解放される。他のプロセスに関する処理フローについても、図6の処理フローと同様である。
例えば、図4のリダクション演算に特許文献1の技術を適用した場合、各ノード装置内の複数のプロセスそれぞれに対して、独立に同期ポイントが設定される。そして、リダクション演算の演算結果は、各ノード装置内の複数のプロセスに対して、他のノード装置への通知と同様な方法で通知される。通知方法としては、ツリー構造のブロードキャスト又はバタフライ演算による通知が考えられる。
しかしながら、ノード装置内において、ツリー構造のブロードキャスト又はバタフライ演算により複数のプロセスに同じ演算結果を通知することは、冗長な処理であり、パケット流量、レイテンシ等の通知コストが増加する原因となる。このため、ノード装置内における演算結果の通知処理を効率化して、通知コストを削減することが望まれる。また、プロセス間の同期が既に成立している場合、複数のプロセスに対して演算結果を個別に通知することによって、同期ずれが発生する可能性もある。
図7は、実施形態の並列計算機システムに含まれる各ノード装置の構成例を示している。図7のノード装置701は、演算処理装置711及び同期装置712を含み、同期装置712は、レジスタ721−0〜レジスタ721−(p−1)(pは2以上の整数)、リダクション演算部722、及び通知制御部723を含む。レジスタ721−0〜レジスタ721−(p−1)は、演算処理装置711によって生成されるp個のプロセスそれぞれのデータを記憶する。
図8は、図7のノード装置701を含む並列計算機システムの制御方法の例を示すフローチャートである。まず、演算処理装置711は、p個のプロセスそれぞれのデータを、レジスタ721−0〜レジスタ721−(p−1)に格納する(ステップ801)。
次に、リダクション演算部722は、レジスタ721−0〜レジスタ721−(p−1)それぞれが記憶するデータと他のノード装置内で生成されるプロセスのデータとに対するリダクション演算を行って、演算結果を生成する(ステップ802)。
そして、通知制御部723は、演算結果が生成されたとき、リダクション演算の完了をノード装置701内のp個のプロセスに一括して通知する(ステップ803)。
図7のノード装置701によれば、ノード装置701内の複数のプロセスに対してリダクション演算の演算結果を通知する際の通知コストを削減することができる。
図9は、図7のノード装置701を含む並列計算機システムの構成例を示している。図9の並列計算機システムは、ノード装置901−1〜ノード装置901−L(Lは2以上の整数)を含む。各ノード装置901−i(i=1〜L)は、例えば、情報処理装置(コンピュータ)であり、ノード装置701に対応する。ノード装置901−1〜ノード装置901−Lは、通信ネットワーク902によって接続されている。
図10は、図9のノード装置901−iの構成例を示している。図10のノード装置901−iは、CPU(Central Processing Unit)1001、MAC(Memory Access Controller)1002、メモリ1003、及び通信装置1004を含み、通信装置1004は同期装置1011を含む。CPU1001は、図7の演算処理装置711に対応し、プロセッサと呼ばれることもある。同期装置1011は、図7の同期装置712に対応する。
CPU1001は、メモリ1003が記憶する並列処理プログラムを実行することで、複数のプロセスを生成し、生成したプロセスを動作させる。通信装置1004は、NIC(Network Interface Card)等の通信インタフェース回路であり、通信ネットワーク902を介して他のノード装置と通信する。
同期装置1011は、ノード装置901−1〜ノード装置901−L内で動作するプロセスの間でバリア同期を取りながらリダクション演算を行い、演算結果を各プロセスに通知する。MAC1002は、CPU1001及び同期装置1011によるメモリ1003へのアクセスを制御する。
図11は、図10の同期装置1011の第1の構成例を示している。図11の同期装置1011は、レジスタ1101−1〜レジスタ1101−K(Kは2以上の整数)、受信部1102、要求受付部1103、及びマルチプレクサ(multiplexer,MUX)1104を含む。さらに、同期装置1011は、制御部1105、リダクション演算部1106、デマルチプレクサ(demultiplexer,DEMUX)1107、送信部1108、及び通知部1109を含む。
レジスタ1101−1〜レジスタ1101−Kは、リダクション演算に用いられるリダクション資源である。レジスタ1101−1〜レジスタ1101−Kのうちp個のレジスタは、図7のレジスタ721−0〜レジスタ721−(p−1)に対応し、入出力IFとして用いられる。残りのレジスタは、中継IFとして用いられる。
リダクション演算部1106及び通知部1109は、図7のリダクション演算部722及び通知制御部723にそれぞれ対応する。
受信部1102は、他のノード装置からパケットを受信し、受信したパケットに含まれるリダクション演算の中間データをMUX1104へ出力する。要求受付部1103は、ノード装置901−i内のプロセスによって生成される演算開始要求及び入力データを、CPU1001から受け取り、MUX1104へ出力する。
MUX1104は、要求受付部1103が出力する演算開始要求を制御部1105へ出力し、要求受付部1103が出力する入力データ及び受信部1102が出力する中間データを、制御部1105及びリダクション演算部1106へ出力する。
制御部1105は、MUX1104が出力する入力データ及び中間データを、レジスタ1101−1〜レジスタ1101−Kのいずれかに格納する。リダクション演算の開始時において、入出力IFとして用いられるp個のレジスタには、p個のプロセスそれぞれが生成する入力データが格納される。また、リダクション演算の中間ステージにおいて、中継IFとして用いられるレジスタには、待機中の中間データが格納される。
また、制御部1105は、リダクション演算の開始時において、各プロセスからの演算開始要求に応じて、そのプロセスの入出力IFとして用いられるレジスタをロックし、リダクション演算が完了したとき、ロックを解除することで、そのレジスタを解放する。解放されたレジスタは、次のリダクション演算に使用される。
リダクション演算部1106は、リダクション演算の各ステージにおいて、複数の入力データ又は複数の中間データに対するリダクション演算を行って、演算結果を生成する。そして、リダクション演算部1106は、生成した演算結果を、中間データ又は最終データとしてDEMUX1107へ出力する。
リダクション演算は、入力データの統計値を求める演算であってもよく、入力データに対する論理演算であってもよい。統計値としては、総和、最大値、最小値等が用いられ、論理演算としては、論理積、論理和、排他的論理和等が用いられる。例えば、リダクション演算部1106としては、2入力2出力のリダクション演算器を用いることができる。
DEMUX1107は、リダクション演算部1106が出力する演算結果のデータを、送信部1108及び通知部1109へ出力する。送信部1108は、演算結果のデータを含むパケットを他のノード装置へ送信する。
通知部1109は、演算結果のデータが最終データである場合、その演算結果のデータをノード装置901−i内の各プロセスに通知する。例えば、通知方法としては、以下の2つの方法のいずれかを用いることができる。
(1)共有領域による通知方法
この通知方法では、メモリ1003内に、p個のプロセスによって共有される共有領域が設けられる。通知部1109は、DMA(Direct Memory Access)により演算結果のデータを共有領域に書き込むことによって、リダクション演算の完了をp個のプロセスに一括して通知し、各プロセスは、メモリ1003内の共有領域から演算結果のデータを読み出す。
(2)マルチキャストによる通知方法
この通知方法では、メモリ1003内に、p個のプロセスそれぞれによって使用されるp個の領域が設けられる。通知部1109は、DMAにより演算結果のデータをそれらの領域に同時に書き込むことによって、リダクション演算の完了をp個のプロセスに一括して通知し、各プロセスは、メモリ1003内の対応する領域から演算結果のデータを読み出す。
共有領域による通知方法によれば、演算結果を通知するための領域を1つ設けるだけで、p個のプロセスに演算結果を通知することができる。一方、マルチキャストによる通知方法によれば、プロセス毎に書き込み先の領域を指定して演算結果を通知することができる。
図12は、共有領域による通知方法においてレジスタ1101−k(k=1〜K)が記憶する情報の例を示している。この例では、2入力2出力のリダクション演算器を用いてリダクション演算が実行される。
Xは、リダクション資源番号(reduction resource num)であり、レジスタ1101−kの識別情報として用いられる。入出力IF flagは、レジスタ1101−kが入出力IF又は中継IFのいずれであるかを示す1ビットのフラグである。
宛先A及び宛先Bは、リダクション演算器の2つの出力それぞれについて、リダクション演算における次のステージのレジスタを示すnビットの宛先情報である。ビット数nとしては、並列計算機システム内のノード装置の識別情報及びノード装置内のレジスタの識別情報の組み合わせを表現可能なビット数が用いられる。
受信A mask及び受信B maskは、リダクション演算器の2つの入力それぞれについて、前のステージの演算結果を受け取るか否かを示す1ビットのフラグである。送信A mask及び送信B maskは、リダクション演算器の2つの出力それぞれについて、次のステージへデータを転送するか否かを示す1ビットのフラグである。
DMA addressは、メモリ1003内の共有領域のアドレスを示すmビットの情報である。ビット数mとしては、メモリ1003内のアドレス空間を表現可能なビット数が用いられる。
rls resource bitmapは、入出力IFとして用いられるp個のレジスタのうち、リダクション演算が完了したときに解放される、解放対象のレジスタを示すpビットの情報である。論理“1”のビット値は、解放対象のレジスタであることを表し、論理“0”のビット値は、解放対象のレジスタではないことを表す。p個のレジスタのすべてが解放対象である場合、p個のビット値のすべてが論理“1”に設定される。一方、p個のレジスタの一部が解放対象である場合、解放対象に対応する一部のビット値が論理“1”に設定される。
readyは、レジスタ1101−kがロック状態又は解放状態のいずれかであるかを示す1ビットのフラグである。解放状態は、リダクション演算が完了してレジスタ1101−kが解放され、演算開始要求を受け付け可能な状態を表す。一方、ロック状態は、リダクション演算の実行中でレジスタが解放されておらず、演算開始要求を受け付け不可能な状態を表す。論理“1”のビット値は解放状態を表し、論理“0”のビット値はロック状態を表す。
制御部1105は、レジスタ1101−kに対応するプロセスから演算開始要求を受け付けたとき、readyを論理“0”に設定することで、レジスタ1101−kをロックする。そして、リダクション演算が完了したとき、readyを論理“1”に設定することで、ロックを解除する。
Data Bufferは、リダクション演算の入力データ又は中間データを表す情報(payload)である。レジスタ1101−kが入出力IFとして用いられる場合、Data Bufferには入力データが格納され、レジスタ1101−kが中継IFとして用いられる場合、Data Bufferには中間データが格納される。
rls resource bitmap及びreadyは、レジスタ1101−kが入出力IFとして用いられる場合に設けられる。例えば、解放状態において、制御部1105がData bufferに入力データを格納し、readyを論理“0”に設定すると、リダクション演算が開始される。あるいは、制御部1105がData bufferに入力データを格納すると、自律的にreadyが論理“0”に変化し、リダクション演算が開始される。
図13は、共有領域による通知方法において、通知部1109がMAC1002へ出力する書き込み要求の例を示している。この例では、ベクトルに対するリダクション演算が実行され、演算結果を表すベクトルが生成される。
req type[3:0]は、リダクション演算の種類を表し、address[59:0]は、図12のDMA addressを表す。payload0[63:0]〜payload3[63:0]は、演算結果のベクトルの4個の要素を表す。
MAC1002は、通知部1109から書き込み要求を受け取ると、payload0[63:0]〜payload3[63:0]のデータを、メモリ1003内のaddress[59:0]に書き込む。これにより、通知部1109は、演算結果のベクトルを共有領域に書き込むことができる。
図14は、図9の並列計算機システムが図4のリダクション演算を実行する場合の処理フローの例を示している。この例では、L=4であり、ノード装置N0〜ノード装置N3は、図9のノード装置901−1〜ノード装置901−Lにそれぞれ対応する。ノード装置Ni内の各丸印は、レジスタ1101−kを表し、丸印内の数字又は文字は、レジスタ1101−kの識別情報を表す。
ノード装置N0内のレジスタ0、レジスタ1、レジスタ2、及びレジスタ3は、入出力IFとして用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ10、レジスタ11、レジスタ18、レジスタ1c、及びレジスタ1eは、中継IFとして用いられ、待機中のデータを記憶する。レジスタ0は、ノード装置N0内において演算結果を通知するために参照される、代表レジスタとして用いられる。
ノード装置N1内のレジスタ4、レジスタ5、レジスタ6、及びレジスタ7は、入出力IFとして用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ12、レジスタ13、及びレジスタ19は、中継IFとして用いられ、待機中のデータを記憶する。レジスタ4は、ノード装置N1内の代表レジスタとして用いられる。
ノード装置N2内のレジスタ8、レジスタ9、レジスタa、及びレジスタbは、入出力IFとして用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ14、レジスタ15、レジスタ1a、レジスタ1d、及びレジスタ1fは、中継IFとして用いられ、待機中のデータを記憶する。レジスタ8は、ノード装置N2内の代表レジスタとして用いられる。
ノード装置N3内のレジスタc、レジスタd、レジスタe、及びレジスタfは、入出力IFとして用いられ、リダクション演算の開始時に、プロセス0、プロセス1、プロセス2、及びプロセス3それぞれが生成する入力データを記憶する。一方、レジスタ16、レジスタ17、及びレジスタ1bは、中継IFとして用いられ、待機中のデータを記憶する。レジスタcは、ノード装置N3内の代表レジスタとして用いられる。
ノード装置N0内のレジスタ10は、レジスタ0及びレジスタ1のデータの和を記憶し、レジスタ11は、レジスタ2及びレジスタ3のデータの和を記憶し、レジスタ18は、レジスタ10及びレジスタ11のデータの和を記憶する。
ノード装置N1内のレジスタ12は、レジスタ4及びレジスタ5のデータの和を記憶し、レジスタ13は、レジスタ6及びレジスタ7のデータの和を記憶し、レジスタ19は、レジスタ12及びレジスタ13のデータの和を記憶する。
ノード装置N2内のレジスタ14は、レジスタ8及びレジスタ9のデータの和を記憶し、レジスタ15は、レジスタa及びレジスタbのデータの和を記憶し、レジスタ1aは、レジスタ14及びレジスタ15のデータの和を記憶する。
ノード装置N3内のレジスタ16は、レジスタc及びレジスタdのデータの和を記憶し、レジスタ17は、レジスタe及びレジスタfのデータの和を記憶し、レジスタ1bは、レジスタ16及びレジスタ17のデータの和を記憶する。
ノード装置N0内のレジスタ1cは、レジスタ18及びノード装置N1内のレジスタ19のデータの和を記憶する。ノード装置N2内のレジスタ1dは、レジスタ1a及びノード装置N3内のレジスタ1bのデータの和を記憶する。
ノード装置N0内のレジスタ1eは、レジスタ1c及びノード装置N2内のレジスタ1dのデータの和を記憶する。ノード装置N2内のレジスタ1fは、レジスタ1d及びノード装置N0内のレジスタ1cのデータの和を記憶する。レジスタ1e及びレジスタ1fのデータは、16個のプロセスが有するデータの総和に相当する。
共有領域による通知方法を用いた場合、レジスタ1eのデータは、リダクション演算の最終データであるため、代表レジスタであるレジスタ0が記憶するDMA addressを用いて、メモリ1003内の共有領域に書き込まれる。これにより、レジスタ0〜レジスタ3に対応する、ノード装置N0内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1eのデータは、ノード装置N1にも送信され、代表レジスタであるレジスタ4が記憶するDMA addressを用いて、メモリ1003内の共有領域に書き込まれる。これにより、レジスタ4〜レジスタ7に対応する、ノード装置N1内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1fのデータも、リダクション演算の最終データであるため、代表レジスタであるレジスタ8が記憶するDMA addressを用いて、メモリ1003内の共有領域に書き込まれる。これにより、レジスタ8〜レジスタbに対応する、ノード装置N2内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1fのデータは、ノード装置N3にも送信され、代表レジスタであるレジスタcが記憶するDMA addressを用いて、メモリ1003内の共有領域に書き込まれる。これにより、レジスタc〜レジスタfに対応する、ノード装置N3内のプロセス0〜プロセス3に、演算結果が一括して通知される。
図15は、図14のノード装置N0内において共有領域による通知方法を用いた場合のプロセス0に関する処理フローの例を示している。プロセス0は、リダクション演算の開始時にレジスタ0をロックし、入力データをレジスタ0に格納する。そして、レジスタ1eに格納された演算結果が、メモリ1003内の共有領域1501に書き込まれると、レジスタ0〜レジスタ3が解放される。
このような並列計算機システムによれば、リダクション演算の演算結果が生成されたとき、演算結果を共有領域に書き込むことで、リダクション演算の完了がノード装置901−i内の複数のプロセスに一括して通知される。これにより、冗長な通知処理がなくなり、通信装置1004のレイテンシが減少するため、通知コストが削減される。また、複数のプロセスに対して演算結果が同時に通知されるため、通知処理に伴う同期ずれが発生しにくくなる。
リダクション演算では、プロセス間でステージ毎にバリア同期を取りながら処理が行われる。したがって、各プロセスにリダクション演算の完了を通知することで、そのプロセスにバリア同期の完了も同時に通知することができる。
制御部1105内には、入出力IFとして用いられるレジスタ1101−k毎に、readyフラグを生成するためのロック制御回路が設けられる。
図16は、このようなロック制御回路の構成例を示している。図16のロック制御回路1601は、フリップフロップ(Flip-Flop,FF)回路1611、否定回路1612、論理積回路1613、論理積回路1614−0〜論理積回路1614−(p−1)、及び論理和回路1615を含む。
入力信号CLKは、クロック信号である。入力信号rdct_reqは、演算開始要求の有無を示す信号であり、制御部1105が演算開始要求を受け取ったとき、論理“1”となる。入力信号dma_resは、p個のプロセスに対する演算結果の通知が完了したか否かを示す信号であり、演算結果の通知が完了したとき、論理“1”となる。
入力信号dma_res_num[p−1:0]は、代表レジスタの識別情報を表す信号であり、代表レジスタとしては、入出力IFとして用いられるp個のレジスタのいずれかが用いられる。入力信号dma_res_num[p−1:0]は、p個のレジスタそれぞれに対応するp個のビット値を表し、信号dma_res_num[j](j=0〜p−1)は、j番目のレジスタに対応するビット値を表す。p個のビット値のうち、代表レジスタに対応するビット値が論理“1”となる。
入力信号rls_resource_bitmap[j][X]は、入出力IFとして用いられるp個のレジスタのうちj番目のレジスタが記憶するrls resource bitmapのX番目のビット値を表す。X番目のビット値は、p個のレジスタのうちレジスタ1101−kに対応するビット値である。
例えば、p個のレジスタ各々が記憶するrls resource bitmapのp個のビット値は、すべて論理“1”に設定される。この場合、信号rls resource bitmap[0][X]〜信号rls resource bitmap[p−1][X]として、論理“1”の信号が入力される。
出力信号readyは、レジスタ1101−kのreadyフラグとして格納される信号である。信号rlsは、ロック解除の有無を示す信号であり、レジスタ1101−kのロックを解除するとき、論理“1”となる。
論理積回路1614−jは、信号dma_res_num[j]と信号rls resource bitmap[j][X]との論理積を出力する。したがって、j番目のレジスタが代表レジスタであり、かつ、j番目のレジスタがX番目のレジスタを解放対象として指定している場合に、論理積回路1614−jの出力が論理“1”となる。
論理和回路1615は、論理積回路1614−0〜論理積回路1614−(p−1)の出力の論理和を出力する。論理積回路1613は、信号dma_resと論理和回路1615の出力との論理積を、信号rlsとして出力する。
FF回路1611は、信号CLKに同期して動作し、信号rdct_reqが論理“1”になると、Q端子から論理“1”の信号を出力する。そして、FF回路1611は、信号rlsが論理“1”になると、Q端子から論理“0”の信号を出力する。
否定回路1612は、FF回路1611の出力を反転した信号を、信号readyとして出力する。したがって、信号rdct_reqが論理“1”になると、信号readyは論理“0”となり、信号rlsが論理“1”になると、信号readyは論理“1”となる。
図16のロック制御回路によれば、入出力IFとして用いられるp個のレジスタのうち代表レジスタが記憶するDMA addressを用いて、p個のプロセスに演算結果が通知された場合、p個のレジスタすべてが一斉に解放される。したがって、簡単な回路構成で複数のレジスタを同時に解放することができる。
次に、マルチキャストによる通知方法について説明する。図17は、マルチキャストによる通知方法においてレジスタ1101−kが記憶する情報の例を示している。入出力IF flag、宛先A、宛先B、受信A mask、受信B mask、送信A mask、送信B mask、rls resource bitmap、ready、及びData Bufferについては、図12に示した情報と同様である。また、信号readyを生成するロック制御回路の構成は、図16に示した構成と同様である。
DMA address0〜DMA address(p−1)は、p個のプロセスによって使用されるメモリ1003内のp個の領域それぞれのアドレスを示すmビットの情報である。ビット数mとしては、メモリ1003内のアドレス空間を表現可能なビット数が用いられる。
図18は、マルチキャストによる通知方法において、通知部1109がMAC1002へ出力する書き込み要求の例を示している。req type[3:0]とpayload0[63:0]〜payload3[63:0]については、図13に示した情報と同様である。
この例では、p=4であり、address0[59:0]〜address3[59:0]は、それぞれ、図17のDMA address0〜DMA address(p−1)を表す。validj(j=0〜3)は、addressj[59:0]が有効であるか否かを表す。この場合、validjとして、図17のrls resource bitmapのj番目のビット値を用いることができる。
MAC1002は、通知部1109から書き込み要求を受け取ると、payload0[63:0]〜payload3[63:0]のデータを、メモリ1003内のaddress0[59:0]〜address3[59:0]にそれぞれ書き込む。これにより、通知部1109は、演算結果のベクトルを、4個のプロセスそれぞれによって使用される4個の領域に同時に書き込むことができる。
次に、図14の処理フローにおいてマルチキャストによる通知方法を用いた場合の動作を説明する。この場合、レジスタ1eのデータは、ノード装置N0内のレジスタ0が記憶するDMA address0〜DMA address3を用いて、メモリ1003内の4個の領域それぞれに書き込まれる。これにより、レジスタ0〜レジスタ3に対応する、ノード装置N0内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1eのデータは、ノード装置N1にも送信され、ノード装置N1内のレジスタ4が記憶するDMA address0〜DMA address3を用いて、メモリ1003内の4個の領域それぞれに書き込まれる。これにより、レジスタ4〜レジスタ7に対応する、ノード装置N1内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1fのデータは、ノード装置N2内のレジスタ8が記憶するDMA address0〜DMA address3を用いて、メモリ1003内の4個の領域それぞれに書き込まれる。これにより、レジスタ8〜レジスタbに対応する、ノード装置N2内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1fのデータは、ノード装置N3にも送信され、ノード装置N3内のレジスタcが記憶するDMA address0〜DMA address3を用いて、メモリ1003内の4個の領域それぞれに書き込まれる。これにより、レジスタc〜レジスタfに対応する、ノード装置N3内のプロセス0〜プロセス3に、演算結果が一括して通知される。
図19は、図14のノード装置N0内においてマルチキャストによる通知方法を用いた場合のプロセス0に関する処理フローの例を示している。領域1901−j(j=0〜3)は、j番目のプロセスによって使用されるメモリ1003内の領域である。プロセス0は、リダクション演算の開始時にレジスタ0をロックし、入力データをレジスタ0に格納する。そして、レジスタ1eに格納された演算結果が、メモリ1003内の領域1901−0〜領域1901−3に書き込まれると、レジスタ0〜レジスタ3が解放される。
ところで、リダクション演算の演算結果をメモリ1003に書き込む代わりに、入出力IFとして用いられるp個のレジスタに書き込むことで、p個のプロセスに演算結果を通知することも可能である。この場合、各プロセッサは、対応するレジスタから演算結果を読み出すことで、演算結果を取得する。
図20は、このようなレジスタによる通知方法を用いた同期装置1011の第2の構成例を示している。図20の同期装置1011は、図11の同期装置1011において通知部1109を省略した構成を有する。この場合、制御部1105及びDEMUX1107が、図7の通知制御部723として動作する。
DEMUX1107は、演算結果のデータが最終データである場合、その演算結果のデータを、レジスタ1101−1〜レジスタ1101−Kのうち、入出力IFとして用いられるp個のレジスタへ出力し、各レジスタは、演算結果のデータを記憶する。このとき、制御部1105は、それらのp個のレジスタのreadyを論理“1”に設定することで、リダクション演算の完了をノード装置901−i内のp個のプロセスに一括して通知する。
図21は、レジスタによる通知方法においてレジスタ1101−kが記憶する情報の例を示している。入出力IF flag、宛先A、宛先B、受信A mask、受信B mask、送信A mask、送信B mask、rls resource bitmap、及びreadyについては、図12に示した情報と同様である。また、readyフラグを生成するロック制御回路の構成は、図16に示した構成と同様である。
Data Bufferは、リダクション演算の入力データ、中間データ、又は最終データを表す情報である。レジスタ1101−kが入出力IFとして用いられる場合、リダクション演算の開始時に、入力データがData Bufferに格納され、リダクション演算が完了すると、最終データがData Bufferに格納される。一方、レジスタ1101−kが中継IFとして用いられる場合、Data Bufferには中間データが格納される。
ノード装置901−i内の各プロセスは、ポーリングによって、対応するレジスタのreadyの値を監視し、readyが論理“1”に変化すると、リダクション演算の完了を検出する。そして、各プロセスは、レジスタが記憶するData Bufferを読み出すことによって、演算結果のデータを取得する。
次に、図14の処理フローにおいてレジスタによる通知方法を用いた場合の動作を説明する。この場合、レジスタ1eのデータは、ノード装置N0内のレジスタ0〜レジスタ3それぞれに書き込まれ、それらのレジスタのreadyが論理“1”に設定される。これにより、レジスタ0〜レジスタ3に対応する、ノード装置N0内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1eのデータは、ノード装置N1にも送信され、ノード装置N1内のレジスタ4〜レジスタ7それぞれに書き込まれ、それらのレジスタのreadyが論理“1”に設定される。これにより、レジスタ4〜レジスタ7に対応する、ノード装置N1内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1fのデータは、ノード装置N2内のレジスタ8〜レジスタbそれぞれに書き込まれ、それらのレジスタのreadyが論理“1”に設定される。これにより、レジスタ8〜レジスタbに対応する、ノード装置N2内のプロセス0〜プロセス3に、演算結果が一括して通知される。
レジスタ1fのデータは、ノード装置N3にも送信され、ノード装置N3内のレジスタc〜レジスタfそれぞれに書き込まれ、それらのレジスタのreadyが論理“1”に設定される。これにより、レジスタc〜レジスタfに対応する、ノード装置N3内のプロセス0〜プロセス3に、演算結果が一括して通知される。
このようなレジスタによる通知方法によれば、リダクション資源であるレジスタ1101−kを通知先として利用することで、メモリ1003内のアドレスを指定する情報が不要になり、レジスタ1101−kの情報量が削減される。また、同じノード装置内のp個のレジスタのready及びData Bufferが同時に書き換えられるため、通知処理に伴う同期ずれは、各プロセスによるポーリングに起因するものだけになる。
図1及び図9の並列計算機システムの構成は一例に過ぎず、並列計算機システムに含まれるノード装置の台数及びノード装置間の接続形態は、並列計算機システムの用途又は条件に応じて変化する。
図2及び図4のリダクション演算は一例に過ぎず、リダクション演算は、演算の種類及び入力データに応じて変化する。図3のプロセスは一例に過ぎず、ノード装置内のプロセスの個数は、並列計算機システムの用途又は条件に応じて変化する。図5、図6、図14、図15、及び図19の処理フローは一例に過ぎず、リダクション演算の処理フローは、並列計算機システムの構成又は条件と各ノード装置内で生成されるプロセスの個数とに応じて変化する。
図7及び図10のノード装置の構成は一例に過ぎず、並列計算機システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。図11及び図20の同期装置1011の構成は一例に過ぎず、並列計算機システムの用途又は条件に応じて一部の構成要素を省略又は変更してもよい。
図16のロック制御回路1601の構成は一例に過ぎず、並列計算機システムの構成又は条件に応じて一部の構成要素を省略又は変更してもよい。図11及び図20のレジスタ1101−1〜レジスタ1101−Kの各々に対してロック制御回路1601を設けておき、それらのレジスタの中から、入出力IFとして用いられるレジスタを選択することも可能である。
図8のフローチャートは一例に過ぎず、並列計算機システムの構成又は条件に応じて一部の処理を省略又は変更してもよい。
図12、図17、及び図21のレジスタの情報は一例に過ぎず、並列計算機システムの構成又は条件に応じて一部の情報を省略又は変更してもよい。図13及び図18の書き込み要求は一例に過ぎず、並列計算機システムの構成又は条件に応じて一部の情報を省略又は変更してもよい。
開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
図3乃至図21を参照しながら説明した実施形態に関し、さらに以下の付記を開示する。
(付記1)
演算処理装置と同期装置とを備えるノード装置であって、
前記同期装置は、
前記演算処理装置によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを記憶する複数のレジスタと、
前記複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行って、前記リダクション演算の演算結果を生成するリダクション演算部と、
前記演算結果が生成されたとき、前記リダクション演算の完了を前記複数の処理単位に一括して通知する通知制御部と、
を含むことを特徴とするノード装置。
(付記2)
前記演算処理装置と前記同期装置とを備えるノード装置は、前記複数の処理単位によって共有される共有領域を含むメモリをさらに備え、
前記複数のレジスタのうちいずれかのレジスタは、前記共有領域のアドレスをさらに記憶し、
前記通知制御部は、前記いずれかのレジスタが記憶する前記共有領域のアドレスを用いて、前記演算結果を前記共有領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記1記載のノード装置。
(付記3)
前記演算処理装置と前記同期装置とを備えるノード装置は、前記複数の処理単位それぞれによって使用される複数の領域を含むメモリをさらに備え、
前記複数のレジスタのうちいずれかのレジスタは、前記複数の領域それぞれのアドレスをさらに記憶し、
前記通知制御部は、前記いずれかのレジスタが記憶する前記複数の領域それぞれのアドレスを用いて、前記演算結果を前記複数の領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記1記載のノード装置。
(付記4)
前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグをさらに記憶し、
前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
前記同期装置は、前記リダクション演算が開始されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、前記演算結果が生成されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定する制御部をさらに含むことを特徴とする付記1乃至3のいずれか1項に記載のノード装置。
(付記5)
前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグをさらに記憶し、
前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
前記通知制御部は、前記リダクション演算が開始されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、前記演算結果が生成されたとき、前記演算結果を前記複数のレジスタそれぞれに格納するとともに、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定することによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記1記載のノード装置。
(付記6)
複数のノード装置を有する並列計算機システムであって、
前記複数のノード装置各々は演算処理装置と同期装置とを備え、
前記同期装置は、
前記演算処理装置によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを記憶する複数のレジスタと、
前記複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行って、前記リダクション演算の演算結果を生成するリダクション演算部と、
前記演算結果が生成されたとき、前記リダクション演算の完了を前記複数の処理単位に一括して通知する通知制御部と、
を含むことを特徴とする並列計算機システム。
(付記7)
前記複数のノード装置各々は、前記複数の処理単位によって共有される共有領域を含むメモリをさらに備え、
前記複数のレジスタのうちいずれかのレジスタは、前記共有領域のアドレスをさらに記憶し、
前記通知制御部は、前記いずれかのレジスタが記憶する前記共有領域のアドレスを用いて、前記演算結果を前記共有領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記6記載の並列計算機システム。
(付記8)
前記複数のノード装置各々は、前記複数の処理単位それぞれによって使用される複数の領域を含むメモリをさらに備え、
前記複数のレジスタのうちいずれかのレジスタは、前記複数の領域それぞれのアドレスをさらに記憶し、
前記通知制御部は、前記いずれかのレジスタが記憶する前記複数の領域それぞれのアドレスを用いて、前記演算結果を前記複数の領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記6記載の並列計算機システム。
(付記9)
前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグをさらに記憶し、
前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
前記同期装置は、前記リダクション演算が開始されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、前記演算結果が生成されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定する制御部をさらに含むことを特徴とする付記6乃至8のいずれか1項に記載の並列計算機システム。
(付記10)
前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグをさらに記憶し、
前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
前記通知制御部は、前記リダクション演算が開始されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、前記演算結果が生成されたとき、前記演算結果を前記複数のレジスタそれぞれに格納するとともに、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定することによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記6記載の並列計算機システム。
(付記11)
複数のノード装置を有する並列計算機システムの制御方法であって、
前記複数のノード装置各々が有する演算処理装置によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを、前記複数のノード装置各々が有する同期装置内の複数のレジスタに格納し、
前記同期装置によって、前記複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行うことで、前記リダクション演算の演算結果を生成し、
前記演算結果が生成されたとき、前記同期装置によって、前記リダクション演算の完了を前記複数の処理単位に一括して通知する、
ことを特徴とする並列計算機システムの制御方法。
(付記12)
前記複数のノード装置各々は、前記複数の処理単位によって共有される共有領域を含むメモリをさらに有し、
前記同期装置は、前記複数のレジスタのうちいずれかのレジスタが記憶する、前記共有領域のアドレスを用いて、前記演算結果を前記共有領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記11記載の並列計算機システムの制御方法。
(付記13)
前記複数のノード装置各々は、前記複数の処理単位それぞれによって使用される複数の領域を含むメモリをさらに有し、
前記同期装置は、前記複数のレジスタのうちいずれかのレジスタが記憶する、前記複数の領域それぞれのアドレスを用いて、前記演算結果を前記複数の領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記11記載の並列計算機システムの制御方法。
(付記14)
前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグを記憶し、
前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
前記リダクション演算が開始されたとき、前記同期装置によって、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、
前記演算結果が生成されたとき、前記同期装置によって、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定する、
ことを特徴とする付記11乃至13のいずれか1項に記載の並列計算機システムの制御方法。
(付記15)
前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグを記憶し、
前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
前記同期装置は、前記リダクション演算が開始されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、前記演算結果が生成されたとき、前記演算結果を前記複数のレジスタそれぞれに格納するとともに、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定することによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする付記11記載の並列計算機システムの制御方法。
101−1〜101−9 ノード装置
102 伝送路
701 ノード装置
711 演算処理装置
712 同期装置
721−0〜721−(p−1)、1101−1〜1101−K レジスタ
722 リダクション演算部
723 通知制御部
901−1〜901−L ノード装置
902 通信ネットワーク
1001 CPU
1002 MAC
1003 メモリ
1004 通信装置
1011 同期装置
1102 受信部
1103 要求受付部
1104 MUX
1105 制御部
1106 リダクション演算部
1107 DEMUX
1108 送信部
1109 通知部
1501 共有領域
1601 ロック制御回路
1611 フリップフロップ回路
1612 否定回路
1613、1614−0〜1614−(p−1) 論理積回路
1615 論理和回路
1901−0〜1901−3 領域

Claims (7)

  1. 演算処理装置と同期装置とを備えるノード装置であって、
    前記同期装置は、
    前記演算処理装置によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを記憶する複数のレジスタと、
    前記複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行って、前記リダクション演算の演算結果を生成するリダクション演算部と、
    前記演算結果が生成されたとき、前記リダクション演算の完了を前記複数の処理単位に一括して通知する通知制御部と、
    を含むことを特徴とするノード装置。
  2. 前記演算処理装置と前記同期装置とを備えるノード装置は、前記複数の処理単位によって共有される共有領域を含むメモリをさらに備え、
    前記複数のレジスタのうちいずれかのレジスタは、前記共有領域のアドレスをさらに記憶し、
    前記通知制御部は、前記いずれかのレジスタが記憶する前記共有領域のアドレスを用いて、前記演算結果を前記共有領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする請求項1記載のノード装置。
  3. 前記演算処理装置と前記同期装置とを備えるノード装置は、前記複数の処理単位それぞれによって使用される複数の領域を含むメモリをさらに備え、
    前記複数のレジスタのうちいずれかのレジスタは、前記複数の領域それぞれのアドレスをさらに記憶し、
    前記通知制御部は、前記いずれかのレジスタが記憶する前記複数の領域それぞれのアドレスを用いて、前記演算結果を前記複数の領域に書き込むことによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする請求項1記載のノード装置。
  4. 前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグをさらに記憶し、
    前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
    前記通知制御部は、前記リダクション演算が開始されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、前記演算結果が生成されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定することを特徴とする請求項1乃至3のいずれか1項に記載のノード装置。
  5. 前記複数のレジスタ各々は、ロック状態又は解放状態のいずれかを示すフラグをさらに記憶し、
    前記ロック状態は、前記リダクション演算の実行中でレジスタが解放されていない状態を表し、前記解放状態は、前記リダクション演算が完了してレジスタが解放された状態を表し、
    前記通知制御部は、前記リダクション演算が開始されたとき、前記複数のレジスタそれぞれが記憶するフラグを前記ロック状態に設定し、前記演算結果が生成されたとき、前記演算結果を前記複数のレジスタそれぞれに格納するとともに、前記複数のレジスタそれぞれが記憶するフラグを前記解放状態に設定することによって、前記リダクション演算の完了を前記複数の処理単位に通知することを特徴とする請求項1記載のノード装置。
  6. 複数のノード装置を有する並列計算機システムであって、
    前記複数のノード装置各々は演算処理装置と同期装置とを備え、
    前記同期装置は、
    前記演算処理装置によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを記憶する複数のレジスタと、
    前記複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行って、前記リダクション演算の演算結果を生成するリダクション演算部と、
    前記演算結果が生成されたとき、前記リダクション演算の完了を前記複数の処理単位に一括して通知する通知制御部と、
    を含むことを特徴とする並列計算機システム。
  7. 複数のノード装置を有する並列計算機システムの制御方法であって、
    前記複数のノード装置各々が有する演算処理装置によって生成されるとともに実行処理の単位となる複数の処理単位それぞれのデータを、前記複数のノード装置各々が有する同期装置内の複数のレジスタに格納し、
    前記同期装置によって、前記複数の処理単位それぞれのデータと他のノード装置内で生成される処理単位のデータとに対するリダクション演算を行うことで、前記リダクション演算の演算結果を生成し、
    前記演算結果が生成されたとき、前記同期装置によって、前記リダクション演算の完了を前記複数の処理単位に一括して通知する、
    ことを特徴とする並列計算機システムの制御方法。
JP2018139137A 2018-07-25 2018-07-25 ノード装置、並列計算機システム、及び並列計算機システムの制御方法 Withdrawn JP2020017043A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018139137A JP2020017043A (ja) 2018-07-25 2018-07-25 ノード装置、並列計算機システム、及び並列計算機システムの制御方法
US16/453,267 US20200034213A1 (en) 2018-07-25 2019-06-26 Node device, parallel computer system, and method of controlling parallel computer system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018139137A JP2020017043A (ja) 2018-07-25 2018-07-25 ノード装置、並列計算機システム、及び並列計算機システムの制御方法

Publications (1)

Publication Number Publication Date
JP2020017043A true JP2020017043A (ja) 2020-01-30

Family

ID=69178326

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018139137A Withdrawn JP2020017043A (ja) 2018-07-25 2018-07-25 ノード装置、並列計算機システム、及び並列計算機システムの制御方法

Country Status (2)

Country Link
US (1) US20200034213A1 (ja)
JP (1) JP2020017043A (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2590661B (en) * 2019-12-23 2022-02-09 Graphcore Ltd Sync network

Also Published As

Publication number Publication date
US20200034213A1 (en) 2020-01-30

Similar Documents

Publication Publication Date Title
JP3670160B2 (ja) タスクに各リソースを割当てるための回路、複数のリソースを共用するための方法、命令を実行するためのプロセッサ、マルチタスクプロセッサ、コンピュータ命令を実行するための方法、マルチタスク方法、コンピュータプロセッサを含む装置、複数の所定のグループのタスクを実行するステップを含む方法、ネットワークデータを処理するステップを含む方法、複数のソフトウェアタスクを実行するための方法およびコンピュータプロセッサを含むネットワーク装置
JP2011170868A (ja) 改善された計算アーキテクチャ用パイプライン加速器、関連システム、並びに、方法
CN110163609B (zh) 一种区块链中数据处理方法及装置
JP5460143B2 (ja) データ処理装置、データ処理方法およびプログラム
JP5360061B2 (ja) マルチプロセッサシステム及びその制御方法
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP7461895B2 (ja) Gpu主導の通信のためのネットワークパケットテンプレーティング
JP2006338538A (ja) ストリームプロセッサ
US9641448B1 (en) Packet ordering system using an atomic ticket release command of a transactional memory
JP2020017043A (ja) ノード装置、並列計算機システム、及び並列計算機システムの制御方法
JP4546380B2 (ja) クロスバースイッチ、情報処理装置および転送方法
JP4170330B2 (ja) 情報処理装置
US9537801B1 (en) Distributed packet ordering system having separate worker and output processors
US10032119B1 (en) Ordering system that employs chained ticket release bitmap block functions
JP2007214981A (ja) データ転送回路、それを利用したマルチプロセッサシステム、及びデータ転送方法
US9697122B2 (en) Data processing device
US11829806B2 (en) High-speed barrier synchronization processing that includes a plurality of different processing stages to be processed stepwise with a plurality of registers
WO2020090009A1 (ja) 演算処理装置及びその制御方法
US20230281063A1 (en) Global Event Aggregation
JP2002176464A (ja) ネットワークインタフェース装置
US20230176932A1 (en) Processor, information processing apparatus, and information processing method
US20230281018A1 (en) Reset of a Multi-Node System
JP5587530B2 (ja) エンジン・プロセッサ連携システム及び連携方法
US10901735B2 (en) Apparatus and method to improve performance of memory accesses from plural arithmetic processors
US8060729B1 (en) Software based data flows addressing hardware block based processing requirements

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210408

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20211227