JP2002073577A - 分散メモリ型並列計算機における分散処理方法及びコンピュータ可読記録媒体 - Google Patents

分散メモリ型並列計算機における分散処理方法及びコンピュータ可読記録媒体

Info

Publication number
JP2002073577A
JP2002073577A JP2000260573A JP2000260573A JP2002073577A JP 2002073577 A JP2002073577 A JP 2002073577A JP 2000260573 A JP2000260573 A JP 2000260573A JP 2000260573 A JP2000260573 A JP 2000260573A JP 2002073577 A JP2002073577 A JP 2002073577A
Authority
JP
Japan
Prior art keywords
node
master node
result
local calculation
nodes
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
JP2000260573A
Other languages
English (en)
Other versions
JP3667610B2 (ja
Inventor
Masanobu Inaba
政信 稲葉
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.)
NEC Computertechno Ltd
Original Assignee
NEC Computertechno 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 NEC Computertechno Ltd filed Critical NEC Computertechno Ltd
Priority to JP2000260573A priority Critical patent/JP3667610B2/ja
Publication of JP2002073577A publication Critical patent/JP2002073577A/ja
Application granted granted Critical
Publication of JP3667610B2 publication Critical patent/JP3667610B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Abstract

(57)【要約】 【課題】 分散メモリ型並列計算機における分散処理の
高速化を図る。 【解決手段】 分散メモリ型並列計算機を構成するノー
ド0 〜3 の内、ノード0をマスタ、ノード1 〜3 をスレ
ーブとし、ノード0 〜3 で処理を分散して実行する。先
ず、マスタノード0 からスレーブノード1 〜3 へ初期デ
ータを転送し、各ノード0 〜3 においてローカル計算を
行う。次に、スレーブノード1 〜3 はローカル計算を終
えた時点でネットワーク4 の通信レジスタ41にテストア
ンドセット命令を実行することにより、ローカル計算を
一番早く終えたスレーブノードを結果マージ用マスタノ
ード (例えば2)に定める。次に、結果マージ用マスタノ
ード2 は他のスレーブノード1,3 のローカル計算結果を
収集して自身のローカル計算結果とマージする。最後に
マスタノード0 が結果マージ用マスタノード2 からマー
ジ結果を収集して自身のローカル計算結果とマージす
る。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は分散メモリ型並列計
算機における分散処理方法に関し、より具体的には、マ
スタとなる計算ノードがスレーブとなる計算ノードに初
期データを分配し、各計算ノードでは初期データを元に
ローカルに計算を行い、最後にマスタとなる計算ノード
がスレーブとなる計算ノードから計算結果を集めて結果
をマージするという一連の動作を高速化する手法に関す
る。
【0002】
【従来の技術】プログラムの処理時間を短縮するため
に、そのプログラムを複数のCPU で分割実行して最後に
結果をマージする手法がよく使われる。各々少なくとも
CPU とメモリとデータ転送手段とを含む複数のノードが
ネットワークを通じて相互に接続された分散メモリ型並
列計算機でも、このような手法を使って性能を向上させ
ている。また、プログラムとしては、一般にMPI(Messag
e Passing Interface)プログラムが利用される。
【0003】複数のノードで仕事を分割して実行する場
合は、下記(1) 〜(3) のフェーズから構成されるMPI プ
ログラムが従来利用されている。 (1) マスタノードからスレーブノードへの初期データの
転送 (2) 各ノードにおけるローカル計算 (3) スレーブノードからマスタノードへの結果データの
転送と結果のマージ ここで、マスタノードとはまとめ役のノードを言い、ス
レーブノードとはマスタノードに準じるノードを言い、
事前に設定される。
【0004】図13〜図15に従来技術によるMPI プログラ
ムの例を示す。図13が(1) のフェーズに、図14が(2) の
フェーズに、図15が(3) のフェーズに、それぞれ対応す
る。以下、各フェーズの概要を説明する。
【0005】(1) 初期データ分配(図13) 配列q[N3_max]を倍精度(8Byte )データとしてrank0
(マスタノード)からrank1 〜rank3 (スレーブノー
ド)に転送する。
【0006】(2) ローカル計算 (図14) 配列q を使って計算をさせる。要素をi とj とに分け、
i を外側ループで回し、j を内側ループで回す。このと
き、外側ループの単位でスプリット(分散)し、各計算
ノードに割り当てる。各ノードの計算結果は、各ノード
の配列mEq[i]に格納される。
【0007】(3) 結果データのマージ (図15) 各ノードの計算結果(mEq[i])をマスタノード(rank0
)に戻し、マスタノードでは、計算結果をマージしてE
q[i] に結果を格納し、一連の動作が完了となる。
【0008】次に、本発明の実施の形態にかかる分散メ
モリ型並列計算機の構成例を示す図1 を借りて、図13〜
15の各フェーズでマスタノード、スレーブノードがどの
ような動作を行うかを説明する。なお、rank0 のノード
がマスタノードで、図1 ではノード0 に対応し、rank1
〜3 のノードがスレーブノードで、図1 ではノード1,2,
3 にそれぞれ対応する。また、図1 中、01,11,21,31 は
CPU(中央演算装置:Central Processing Unit) 、02,12,
22,32 はMMU(主記憶装置:Main Memory Unit)、03,13,2
3,33 はRCU(遠隔制御装置:Remote Control Unit) 、4
はネットワーク、41は通信レジスタである。
【0009】(1) データ分配 <rank0 (Node0 )>CPU01 (rank0 )はMMU02 内にあ
る初期データ(配列q )をMMU02 からMMU12に転送する
ようRCU03 に指示を出す。RCU03 はその指示に従い、配
列q をMMU02からNetwork4経由でRCU13 に転送する(Sen
d操作)。同様に、CPU01 (rank0 )はMMU02 内にある
初期データ(配列q )をMMU02 からMMU22,32に転送する
ようRCU03 に指示を出し、RCU03 はその指示に従い、配
列q をMMU02 からNetwork4経由でRCU23,33に転送する
(Send操作)。
【0010】<rank1 (Node1 )>CPU11 (rank1 )は
RCU03 から送られてくる配列q をMMU12 に格納するよう
RCU13 に指示を出し、RCU13 は配列q をMMU12 に格納す
る(Receive 操作)。
【0011】<rank2 (Node2 )>CPU21 (rank2 )は
RCU03 から送られてくる配列q をMMU22 に格納するよう
RCU23 に指示を出し、RCU23 は配列q をMMU22 に格納す
る(Receive 操作)。
【0012】<rank3 (Node3 )>CPU31 (rank3 )は
RCU03 から送られてくる配列q をMMU32 に格納するよう
RCU33 に指示を出し、RCU33 は配列q をMMU32 に格納す
る(Receive 操作)。
【0013】(2) ローカル計算 <rank0 (Node0 )>CPU01 (rank0 )は配列q[i=0,
4,...] とq[j=i+1,...]間の要素間計算をして結果をMMU
02 内の配列mEq[i=0,4,...]に書き込む。
【0014】<rank1 (Node1 )>CPU11 (rank1 )は
配列q[i=1,5,...] とq[j=i+1,...]間の要素間計算をし
て結果をMMU12 内の配列mEq[i=1,5,...]に書き込む。
【0015】<rank2 (Node2 )>CPU21 (rank2 )は
配列q[i=2,6,...] とq[j=i+1,...]間の要素間計算をし
て結果をMMU22 内の配列mEq[i=2,6,...]に書き込む。
【0016】<rank3 (Node3 )>CPU31 (rank3 )は
配列q[i=3,7,...] とq[j=i+1,...]間の要素間計算をし
て結果をMMU32 内の配列mEq[i=3,7,...]に書き込む。
【0017】(3) 結果のマージ <rank0 (Node0 )>CPU01 (rank0 )はMMU02 内にあ
る計算結果(配列mEq )を最終結果を格納する配列Eqに
コピーする。次に、CPU01 (rank0 )は、MMU12 内の計
算結果(配列mEq)をMMU02 内の配列mEq にコピーする
ために、RCU03 に指示を出す。RCU03はその指示に従
い、RCU13 及びNetwork4経由で、MMU12 内の配列mEq を
MMU02 内の配列mEqに転送(コピー)する(Receive 操
作)。次に、CPU01 (rank0 )はMMU02 内のNode1 の計
算結果(mEq)を最終結果(Eq)にマージする。同様
に、CPU01 (rank0 )は、MMU22,32内の計算結果(配列
mEq)をMMU02 内の配列mEq にコピーするために、RCU03
に指示を出す。RCU03 はその指示に従い、RCU23 及びN
etwork4経由、RCU33 及びNetwork4経由で、MMU22,32内
の配列mEq をMMU02 内の配列mEqに転送(コピー)する
(Receive 操作)。CPU01 (rank0 )はMMU02 内のNode
2 及びNode3 の計算結果(mEq)を最終結果(Eq)にマ
ージして一連の動作が完了となる。
【0018】<rank1 (Node1 )>CPU11 (rank1 )
は、MMU12 内の計算結果(配列mEq)をMMU02 内の配列m
Eqにコピーするために、RCU13 に指示を出す。RCU13 は
その指示に従い、MMU12 内の配列mEqをNetwork4経由でR
CU03 に転送する(Send操作)。
【0019】<rank2 (Node2 )>CPU21 (rank2 )
は、MMU22 内の計算結果(配列mEq)をMMU02 内の配列m
Eqにコピーするために、RCU23 に指示を出す。RCU23 は
その指示に従い、MMU22 内の配列mEqをNetwork4経由でR
CU03 に転送する(Send操作)。
【0020】<rank3 (Node3 )>CPU31 (rank3 )
は、MMU32 内の計算結果(配列mEq)をMMU02 内の配列m
Eqにコピーするために、RCU33 に指示を出す。RCU33 は
その指示に従い、MMU32 内の配列mEqをNetwork4経由でR
CU03 に転送する(Send操作)。
【0021】ここで、各フェーズでの処理時間を後述す
る本発明の実施例と同様に下記のように定めることにす
る。但し、T とは本分散メモリ型並列計算機システムの
1 マシンクロックに相当するものとする。 1. (1) 、(3) のデータ分配/収集に要する時間(1Node
分) : 100T 2. (2) のローカル計算に要する時間(Node0 ) :1000
T 3. (2) のローカル計算に要する時間(Node1 ) :1000
T 4. (2) のローカル計算に要する時間(Node2 ) : 800
T 5. (2) のローカル計算に要する時間(Node3 ) : 900
T このとき、従来技術では図16に示すようなタイムチャー
トとなり、(1) 〜(3)までの処理時間は1600T となる。
【0022】
【発明が解決しようとする課題】上述したように従来技
術においては、スレーブノードから計算結果を集めて結
果をマージする処理をマスタノードが一手に引き受けて
いる。このため、各ノードに割り当てられた計算量が均
等で、(2) の各ノードにおけるローカル計算コストが
(1) と(3) に比べて十分大きい場合は、効率の良い並列
計算機と見なすことができるが、各ノードに割り当てら
れた計算量が不均一であったり、計算量は均一ではある
が(2) のコストが(1) と(3) と比べてそれ程変わらない
時などは、計算量が最も多いノードの処理時間に全体が
引きずられてしまい、効率の悪い並列計算機となってし
まう。
【0023】本発明はこのような問題を解決したもの
で、分散メモリ型並列計算機における分散処理の高速化
を図ることを目的とする。
【0024】
【課題を解決するための手段】本発明にかかる分散メモ
リ型並列計算機における分散処理方法は、各々少なくと
もCPU とメモリとデータ転送手段とを含む複数のノード
がネットワークを通じて相互に接続された分散メモリ型
並列計算機で、複数のノードの1つをマスタノード、残
りのノードをスレーブノードに定め、マスタノード及び
スレーブノードで処理を分散して実行する方法におい
て、(a)マスタノードからスレーブノードへ初期デー
タを転送するステップと、(b)各ノードにおいてロー
カル計算を行うステップと、(c)ローカル計算を一番
早く終えたスレーブノードを結果マージ用マスタノード
に定めるステップと、(d)結果マージ用マスタノード
が他のスレーブノードのローカル計算結果を収集してマ
ージするステップと、(e)マスタノードが結果マージ
用マスタノードでマージされたローカル計算結果を収集
して最終結果にマージするステップと、を含んでいる。
【0025】前記ステップcでは、各スレーブノードが
ローカル計算を終えた時点で、ネットワークに設けられ
た通信レジスタ中の所定のカウンタに対してテストアン
ドセット命令を実行することで、結果マージ用マスタノ
ードの決定を行うことができる。
【0026】前記ステップdにおいては、結果マージ用
マスタノードは、予め定められたスレーブノードの順番
に従ってローカル計算結果の収集とマージを行うように
しても良い。また、前記ステップdにおいては、結果マ
ージ用マスタノードは、ローカル計算を終えたスレーブ
ノードの順番に従ってローカル計算結果の収集とマージ
を行うようにしても良い。この場合、前記ステップcに
代えて、ローカル計算を一番早く終えたスレーブノード
を結果マージ用マスタノードに定めると共に、他のスレ
ーブノードのローカル計算を終えた順番を決定するステ
ップc’が設けられる。そして、このステップc’で
は、各スレーブノードがローカル計算を終えた時点で、
ネットワークに設けられた通信レジスタ中の第1番目の
カウンタから第(ノード数−1)番目のカウンタまで順
に、テストアンドセット命令が成功するカウンタに至る
まで、それぞれテストアンドセット命令を実行すること
で、結果マージ用マスタノードの決定とローカル計算を
終えた順番の決定とを行うことができる。
【0027】
【作用】本発明にあっては、計算結果のマージ処理はマ
スタノードに全て任されるのではなく、ローカル計算を
最初に終えたスレーブノードに一部分担させる。マスタ
ノードは全てのスレーブノードへの初期データの分配が
完了しなければ自身のローカル計算を開始できないの
で、一般的にはローカル計算の完了が遅れがちになる。
本発明によれば、マスタノードのローカル計算の完了を
待たずして、スレーブノード群でマージ処理を開始する
ことができるので、全体的な負荷分散が図れ、分散メモ
リ型並列計算機における分散処理の高速化が図られる。
【0028】
【発明の実施の形態】次に本発明の実施の形態の例につ
いて図面を参照して詳細に説明する。
【0029】図1 は本発明を適用した分散メモリ型並列
計算機の一例を示すブロック図である。この例の分散メ
モリ型並列計算機は、複数の計算ノード0,1,2,3 と、そ
れらを相互に結ぶネットワーク(Network)4とを有してい
る。計算ノード0 は、CPU (中央演算装置:Central Pro
cessing Unit)01、MMU (主記憶装置:Main Memory Uni
t )02、RCU (遠隔制御装置:Remote Control Unit)03
で構成される。計算ノード1,2,3 も同様に、CPU11,21,3
1 、MMU12,22,32 、RCU13,23,33 で構成される。また、
ネットワーク4 は、テストアンドセット(Test&Set)機
能を具備した通信レジスタGCR (Global Communication
Register )41を有している。なお、日本電気株式会社
製のSXシリーズのハードウェアでは、通信レジスタ(Com
munication Register)に対する命令の1 つとして、TSCR
(Test&Set CR) 命令がサポートされているので、それを
使用することができる。
【0030】計算ノード0 において、CPU01 は、MMU02
に対するデータのロードとストアが可能であり、CPU01
ではロードしてきたデータを使って演算をし、結果をMM
U02にストアする。RCU03 は、CPU01 からの計算ノード
を跨ぐ他ノードMMU 間のデータ転送命令を受け付け、他
ノードのRCU と協調してノード間データ転送を実現す
る。例えば、CPU01 がRCU03 にMMU02 のデータをMMU12
に転送するよう指示した場合、RCU03 はMMU02 のデータ
をロードしてNetwork4経由でRCU13 に転送し、RCU13 は
転送データをMMU12 にストアする。ここで、RCU03 がRC
U13 にデータを送信する動作をSendと呼び、RCU13 がRC
U03 からデータを受信する動作をReceiveと呼ぶ。この
ように互いに異なる分散メモリ(ノード)間でデータの
授受を行う場合は、Send側のノードとReceive 側のノー
ドが1 対1 で決まる。他のノード1,2,3 も基本的に計算
ノード0 と同じ機能を有する。
【0031】このような分散メモリ型並列計算機では、
プログラムの処理時間を短縮するために、そのプログラ
ムを複数のノードで分割実行して最後に結果をマージす
る。このとき、まとめ役のノードをマスタノード、それ
以外のノードをスレーブノードと呼ぶ。また、この種の
分散メモリ型並列計算機では、一般にMPI (MessagePas
sing Interface )プログラムが利用される。本実施の
形態におけるMPI プログラムは、下記3つのフェーズ
((1),(2),(3) )から構成され、特に(3) の部分の開始
時間を早めることで、全体の処理時間を短縮している。 (1) マスタノードからスレーブノードへの初期データの
分配 (2) 各ノードにおけるローカル計算 (3) スレーブノードからマスタノードへの結果データの
収集と結果のマージ
【0032】即ち、(3) は従来はマスタノードが全てを
引き受けていたが、本実施の形態では(2) のローカル計
算を最初に終えたスレーブノードを動的に結果マージ用
マスタノードに定めて集計処理を行わせることにより、
(3) の開始時間を早めている。このとき必要となるの
が、Network4内に具備されたGCR41 であり、(2) のロー
カル計算を最初に終えたスレーブノードがGCR41 に(2)
完了の印と自ノード番号を書き込むことにより、(3) の
処理において他のスレーブノードが結果を送るべき結果
マージ用マスタノードを知ることができ、(3) の動作を
可能としている。
【0033】図2 に本実施の形態におけるMPI プログラ
ムの前記(1) 、(2) 、(3) に対応する部分の概略を示
す。なお、MPI プログラムはコンパイラにかけられてア
センブラコードに変換され、各ノードのMMU に格納され
て実行に供される。
【0034】先ず、マスタノードからスレーブノードへ
の初期データの分配(1) では、各ノードは、自ノードが
マスタノードなら初期データをスレーブノードへ送り、
自ノードがスレーブノードなら初期データをマスタノー
ドから受け取る処理を行う。
【0035】各ノードにおけるローカル計算(2) では、
各ノードは、初期データを元に自ノードが分担する計算
部分をローカルに計算する。
【0036】スレーブノードからマスタノードへの結果
データの収集と結果のマージ(3) は、本実施の形態で
は、以下の3 つのフェーズに分けられる。 (3)-1:結果マージ用マスタノードの決定 (3)-2:スレーブノードから結果マージ用マスタノードへ
の結果データの収集と結果のマージ (3)-3:結果マージ用マスタノードからマスタノードへの
マージ結果の収集と結果のマージ
【0037】結果マージ用マスタノードの決定(3)-1 で
は、(2) のローカル計算を最初に終えたスレーブノード
がGCR41 に(2) 完了の印と自ノード番号を書き込むこと
で行われる。
【0038】スレーブノードから結果マージ用マスタノ
ードへの結果データの収集と結果のマージ(3)-2 では、
各ノードは、自ノードが結果マージ用マスタノードなら
スレーブノードからローカル計算結果を収集してマージ
し、自ノードが結果マージ用マスタノードでないスレー
ブノードなら、自ノードのローカル計算結果を結果マー
ジ用マスタノードに送る処理を行う。ここで、結果マー
ジ用マスタノードにおけるマージは、予め定められたス
レーブノードの順番で固定的に行っても良く(後述の第
1 の実施例)、(2) のローカル計算が終わった順番で行
っても良い(後述の第2 の実施例) 。
【0039】結果マージ用マスタノードからマスタノー
ドへのマージ結果の収集と結果のマージ(3)-3 では、各
ノードは、自ノードがマスタノードであれば、結果マー
ジ用マスタノードからマージ結果を受け取って自ノード
のローカル計算結果とマージし、自ノードが結果マージ
用マスタノードであれば、(3)-2 のマージ結果をマスタ
ノードに送る処理を行う。
【0040】
【実施例】次に本発明の実施例について図面を参照して
詳細に説明する。
【0041】〔第1の実施例〕 〔構成〕本実施例で使用する分散メモリ型並列計算機
は、本発明の実施の形態で説明した図1 のものと同様で
ある。つまり、複数の計算ノード0,1,2,3 と、それらを
結ぶネットワーク4 とを有し、各計算ノード0,1,2,3
は、CPU01,11,21,31、MMU01,12,22,32、RCU03,13,23,33
で構成され、ネットワーク4 は通信レジスタGCR41 を有
している。
【0042】本実施例で動作させるMPI プログラム(プ
ログラム1)の一例を図3 〜図7 に示す。なお、MPI プ
ログラムはコンパイラにかけられてアセンブラコードに
変換され、各ノードのMMU に格納されて実行に供され
る。
【0043】本発明の実施の形態で説明したように、MP
I プログラムの(3) 部分に改良を加えており、(3) を3
つのフェーズに分割している((3)-1 、(3)-2 、(3)-3
)。以下に、(1) 、(2) 、(3)-1 、(3)-2 、(3)-3 の
各フェーズを説明する。
【0044】(1) 初期データ分配(図3) 配列q[N3_max]を倍精度(8Byte )データとしてrank0
(マスタノード)からrank1 〜rank3 (スレーブノー
ド)に転送する。
【0045】具体的には、各ノードは、通信タグtag を
1 にセットし、自ノードがrank0 (マスタノード)なら
ば、配列q[N3_max]を倍精度(8Byte )データとして、
通信タグtag (=1)をつけてdist1,2,3 (送信先ランク1,
2,3:スレーブノード) 宛に順番に送信し、自ノードがra
nk0 (マスタノード)でないならば、配列q[N3_max]
に、通信tag (=1)がついているrank0 からのデータを受
信する。
【0046】(2) ローカル計算(図4) 配列q を使って計算をさせる。要素をi とj とに分け、
i を外側ループで回し、j を内側ループで回す。このと
き、外側ループの単位でスプリット(分散)し、各計算
ノードに割り当てる。各ノードの計算結果は、各ノード
の配列mEq[i]に格納される。なお、図4 において、size
はノード数を示し、今の場合は4 である。また、mEqi=
0.D0はmEqiの全要素を0 に初期化する処理を、dRは定数
を示す。
【0047】(3)-1 結果マージ用マスタノードの決定
(図5) スレーブノードの中から結果マージ用のマスタノードを
決定する。ローカル計算終了後、各スレーブノードは順
次に通信レジスタ(counter(0))をアクセスし、自分が
結果マージ用マスタノードなのかどうかをチェックす
る。最初にアクセスしたスレーブノードが結果マージ用
ノードとなる(counter(0)の最上位bit が”0 ”の場
合、本bit に”1 ”をSet して(権利を獲得したことを
表示する)、下位bit に自Node番号を書き込む)。
【0048】具体的には、各ノードは、mask1 に最上位
bit のみ”1”のマスクデータを、mask2 に最上位bit
のみ”0”のマスクデータをそれぞれセットする。そし
て、各スレーブノードは、Test&Set機能を使って、通信
レジスタ中のcounter(0)をアクセスして最上位bit をfl
agに置いて0 か否かを検査し、0 であれば、自ノードの
rankとmask1 との論理和をsetdata において、このsetd
ata の値をcounter(0)に書き込むことで、counter(0)の
最上位bit を”1”にすると共に下位bit に自Node番号
を書き込む。なお、MPI プログラムをコンパイラにかけ
てアセンブラコードに変換すると、図5 のflag=counte
r(0).shiftr.63の文からcounter(0)=setdata の文まで
がアセンブラコード1 命令からなるTest&Set命令に変換
されるため、実際は各スレーブノードはこのTest&Set命
令を実行することになる。
【0049】(3)-2 計算結果のマージ(rank0 以外)
(図6) 各ノード(rank0 以外)の計算結果(mEq[i])を結果マ
ージ用マスタノードに転送し、結果マージ用マスタノー
ドでは、計算結果をマージして配列Eq[i] に結果を格納
する。この時、マージされる側(スレーブノード)の順
番は、結果マージ用マスタノードのノード番号を先頭と
した昇順とする(固定)。
【0050】具体的には、各ノードは、通信タグtag を
2 にセットし、アクセスして得た通信レジスタ41中のco
unter(0)とmask2 との論理積をmasterに置き、自ノード
のrankがmasterと等しければ、つまり自ノードが結果マ
ージ用マスタノードであれば、以下の処理を実行する。
先ず、自ノードのローカル計算結果mEq[i]を配列Eq[i]
にコピーする。次に、rank3 、rank1 のノードの順に(s
lave=(dist +master).mod.size、if(slave.ne.master
&& slave.ne.0): modはモジュロ演算) 、配列mEq に、
通信tag (=2)がついているデータを受信して、配列Eq
[i] に格納されているデータとマージする。他方、自ノ
ードが結果マージ用マスタノードでないスレーブノード
の場合、配列mEq[N3_max]を倍精度(8Byte )データと
して、通信タグtag (=2)をつけてmaster(結果マージ用
マスタノード) 宛に送信する。
【0051】(3)-3 計算結果のマージ(rank0 ) (図7) 最終結果はマスタノード(rank0 )に戻す必要があるの
で、結果マージ用マスタノードからマスタノード(rank
0 )に配列Eq[i] を転送して結果のマージをして一連の
処理が完了となる。
【0052】具体的には、各ノードは、通信タグtag を
3 にセットし、自ノードがrank0(マスタノード) であれ
ば、配列Eq[i] に、通信tag (=3)がついているmaster
(結果マージ用マスタノード) からのデータを受信し、
自ノードのローカル計算結果mEq[i]とマージする。他
方、自ノードが結果マージ用マスタノードであれば、配
列Eq[i] を、通信タグtag (=3)をつけてrank0(マスタノ
ード) 宛に送信する。
【0053】〔動作〕次に、図1 のブロック図と図3 〜
図7 のプログラム1 を元に、本実施例における分散メモ
リ型並列計算機の一連の動作について説明する。なお、
rank2 のノード2 が(2) のローカル計算を最初に完了し
たものとして説明する。
【0054】(1) データ分配 <rank0 (Node0 )>CPU01 (rank0 )はMMU02 内にあ
る初期データ(配列q )をMMU02 からMMU12に転送する
ようRCU03 に指示を出す。RCU03 はその指示に従い、配
列q をMMU02からNetwork4経由でRCU13 に転送する(Sen
d操作)。同様に、CPU01 (rank0 )はMMU02 内にある
初期データ(配列q )をMMU02 からMMU22,32に転送する
ようRCU03 に指示を出し、RCU03 はその指示に従い、配
列q をMMU02 からNetwork4経由でRCU23,33に転送する
(Send操作)。
【0055】<rank1 (Node1 )>CPU11 (rank1 )は
RCU03 から送られてくる配列q をMMU12 に格納するよう
RCU13 に指示を出し、RCU13 は配列q をMMU12 に格納す
る(Receive 操作)。
【0056】<rank2 (Node2 )>CPU21 (rank2 )は
RCU03 から送られてくる配列q をMMU22 に格納するよう
RCU23 に指示を出し、RCU23 は配列q をMMU22 に格納す
る(Receive 操作)。
【0057】<rank3 (Node3 )>CPU31 (rank3 )は
RCU03 から送られてくる配列q をMMU32 に格納するよう
RCU33 に指示を出し、RCU33 は配列q をMMU32 に格納す
る(Receive 操作)。
【0058】(2) ローカル計算 <rank0 (Node0 )>CPU01 (rank0 )は配列q[i=0,
4,...] とq[j=i+1,...]間の要素間計算をして結果をMMU
02 内の配列mEq[i=0,4,...]に書き込む。
【0059】<rank1 (Node1 )>CPU11 (rank1 )は
配列q[i=1,5,...] とq[j=i+1,...]間の要素間計算をし
て結果をMMU12 内の配列mEq[i=1,5,...]に書き込む。
【0060】<rank2 (Node2 )>CPU21 (rank2 )は
配列q[i=2,6,...] とq[j=i+1,...]間の要素間計算をし
て結果をMMU22 内の配列mEq[i=2,6,...]に書き込む。
【0061】<rank3 (Node3 )>CPU31 (rank3 )は
配列q[i=3,7,...] とq[j=i+1,...]間の要素間計算をし
て結果をMMU32 内の配列mEq[i=3,7,...]に書き込む。
【0062】(3)-1 結果マージ用ノードの決定(rank0以
外) <rank1 (Node1 )>CPU11 (rank1 )は、Network4に
おけるGCR41 中のレジスタ(counter(0))に対してTest
&Set命令を実行するが、今の場合、counter(0)の最上位
bit 値はNode2 によって既に”1”にセットされている
ので、ノーオペレーションとなる。
【0063】<rank2 (Node2 )>CPU21 (rank2 )
は、Network4におけるGCR41 中のレジスタ(counter
(0))に対してTest&Set命令を実行する。今の場合、cou
nter(0)の最上位bit は”0 ”なので、counter(0)の最
上位bit が”1 ”にセットされるのと同時に、counter
(0)の下位bit にrank2 のNode番号が書き込まれる。
【0064】<rank3 (Node3 )>CPU31 (rank3 )
は、Network4におけるGCR41 中のレジスタ(counter
(0))に対してTest&Set命令を実行するが、今の場合、c
ounter(0)の最上位bit 値はNode2 によって既に”1”
にセットされているので、ノーオペレーションとなる。
【0065】(3)-2 計算結果のマージ(rank0 以外) <rank1 (Node1 )>CPU11 (rank1 )は、GCR41 中の
レジスタ(counter(0))をアクセスし、結果マージ用マ
スタノードがNode2 であることを認識する。次に、MMU1
2 内の計算結果(配列mEq)をMMU22 内の配列mEq にコ
ピーするために、RCU13 に指示を出す。RCU13 はその指
示に従い、MMU12 内の配列mEqをNetwork4経由でRCU23
に転送する(Send操作)。
【0066】<rank2 (Node2 )>CPU21 (rank2 )
は、GCR41 中のレジスタ(counter(0))をアクセスし、
結果マージ用マスタノードが自分自身であることを認識
する。次に、MMU22 内にある計算結果(配列mEq )を最
終結果を格納する配列Eqにコピーする。次に、CPU21(r
ank2 )は、MMU32 内の計算結果(配列mEq)をMMU22 内
の配列mEq にコピーするために、RCU23 に指示を出す。
RCU23 はその指示に従い、RCU33 及びNetwork4経由で、
MMU32 内の配列mEq をMMU22 内の配列mEqに転送(コピ
ー)する(Receive 操作)。次に、CPU21 (rank2 )は
MMU22 内のNode3 の計算結果(mEq)を最終結果(Eq)
にマージする。同様に、CPU21 (rank2 )は、MMU12 内
の計算結果(配列mEq)をMMU22 内の配列mEq にコピー
するために、RCU23 に指示を出す。RCU23 はその指示に
従い、RCU13 及びNetwork4経由で、MMU12 内の配列mEq
をMMU22 内の配列mEqに転送(コピー)する(Receive
操作)。CPU21 (rank2 )はMMU22 内のNode1 の計算結
果(mEq)を最終結果(Eq)にマージする。マージの順
番は、計算結果マージ用マスタノード(Node2 )を先頭
とした昇順とする(Node3,Node1 の順)。
【0067】<rank3 (Node3 )>CPU31 (rank3 )
は、GCR41 中のレジスタ(counter(0))をアクセスし、
結果マージ用マスタノードがNode2 であることを認識す
る。次に、MMU32 内の計算結果(配列mEq)をMMU22 内
の配列mEq にコピーするために、RCU33 に指示を出す。
RCU33 はその指示に従い、MMU32 内の配列mEqをNetwork
4経由でRCU23 に転送する(Send操作)。
【0068】(3)-3 計算結果のマージ(rank0 ) <rank0 (Node0 )>CPU01 (rank0 )は、MMU22 内の
最終結果EqをMMU02 内にコピーするために、RCU03 に指
示を出す。RCU03 はその指示に従い、MMU22 内の配列Eq
をRCU23 及びNetwork4経由でMMU02 に転送(Receive 操
作)する。次に、CPU01 はMMU02 内のmEq とEqをマージ
して一連の動作が完了となる。
【0069】<rank2 (Node2 )>CPU21 (rank2 )
は、MMU22 内の最終結果EqをMMU02 内にコピーするため
に、RCU23 に指示を出す。RCU23 はその指示に従い、MM
U22 内の配列EqをNetwork4経由でRCU03 に転送する(Se
nd操作)。
【0070】以上、Network4にTest&Set機能(最上位ビ
ットが”0 ”ならば”1 ”にして下位ビットにデータを
書き込み、最上位ビットが”1 ”ならばノーアクショ
ン)を具備したGCR41 を設け、その機能を使って計算結
果をマージする順番をプログラム制御することで、マー
ジ処理の開始時間を早めることができ、分散処理全体の
実行時間が短縮につながる。
【0071】ここで便宜上、各フェーズでの処理時間を
下記のように定めることにする。但し、T とは本分散メ
モリ型並列計算機システムの1 マシンクロックに相当す
るものとする。 1.(1),(3)-2 ,(3)-3 のデータ分配/収集に要する時間
(1Node 分) : 100T 2.(2) のローカル計算に要する時間(Node0 ) :1000T 3.(2) のローカル計算に要する時間(Node1 ) :1000T 4.(2) のローカル計算に要する時間(Node2 ) : 800T 5.(2) のローカル計算に要する時間(Node3 ) : 900T 6.(3)-1 のGCR アクセスに要する時間 : 0T ※GCR アクセスはデータ転送/ローカル計算に比べて無
視できる程小さいとする。 このとき、本実施例における構成例では、図8 に示すよ
うなタイムチャートとなり、(1) 〜(3) ((3)-1,(3)-2,
(3)-3 )までの処理時間は1500T となる。
【0072】〔効果〕本実施例によれば、以下のような
効果が得られる。 1. 第1の効果は、ローカル計算を最初に完了したスレ
ーブノードに結果のマージ処理の一部を行わせることで
結果マージ処理の開始時間を早めることができることで
ある。 2. 第2の効果は、ローカル計算における負荷分散(計
算データの割り当て)が均等に行われていない場合で
も、ローカル計算の完了順に従って結果のマージ処理を
分担するスレーブノードが決定されるので、全体的な負
荷分散が図れ、各ノードを効率よく使えることである。 3. 第3 の効果は、上記負荷分散を図ることにより、結
果のマージ処理を高速化でき、その結果、プログラム全
体の処理時間が短縮されることである。
【0073】〔実施例の拡張〕 1. 本実施例では、マスタノードをNode0 として説明し
たが、マスタノードの選定に制限はない。 2. 本実施例では、計算結果のマージ用マスタノードをN
ode2 として説明したが、その選定に制限はない。 3. 本実施例では、ネットワークに接続される計算ノー
ドは4 つとして説明したが、これらの数に制限はない。 4. 本実施例では、1 つの計算ノード内は1 つのCPU で
構成されるとして説明したが、これらの数に制限はな
い。つまり、ノード内はマルチCPU による共有メモリ型
でもよい。 5. 本実施例の動作説明では、各計算フェーズの処理時
間を固定値を用いて説明したが、これらの値に制限はな
い。 6. 本実施例では、結果マージ用マスタノードにおける
マージ順は、結果マージ用マスタノードを先頭として昇
順としたが、rank順(Node番号順)としても良い。rank
順とした場合、先の動作例では、結果マージ用マスタノ
ード(Node2) は、Node1(rank1)、Node3(rank3)の順にマ
ージを行うことになる。
【0074】〔第2の実施例〕 〔構成〕本実施例が適用される分散メモリ型並列計算機
の構成は、第1の実施例のものと同じである。第1の実
施例との相違点は、GCR41 の使い方(MPI プログラムの
コーディング)にある。第1の実施例では、(3)-2 の結
果マージ処理においてスレーブノードの順番が昇順であ
ったのに対し、本実施例では、スレーブノードの順番を
(2) のローカル計算が終わった順とする。そのため、本
実施例では、通信レジスタ41として、結果マージ用マス
タノードを決定するためのcounter(0)に加えて、(2) の
ローカル計算の完了順を決定するためにcounter(1)、co
unter(2)を使用する。従って、本実施例では、合計3 個
(Node数−1)のcounter を使用する。
【0075】本実施例で動作させるMPI プログラム(プ
ログラム2)も第1の実施例におけるプログラム1と同
様に(1) 、(2) 、(3)-1 、(3)-2 、(3)-3 の各フェーズ
を有する。その内、(1) と(2) は第1の実施例における
図3、図4と同じなので説明は省略し、(3)-1 、(3)-2
、(3)-3 の一例を図9 〜図11に示す。以下、(3)-1,(3)
-2,(3)-3 について説明する。なお、MPI プログラムは
コンパイラにかけられてアセンブラコードに変換され、
各ノードのMMU に格納されて実行に供される。
【0076】(3)-1 結果マージ用マスタノードの決定
(rank0 以外) (図9) 結果マージ用のマスタノードを決定する。ローカル計算
終了後、各スレーブノードのCPU は順次通信レジスタ
(counter(0))をアクセスし、自分が結果マージ用マス
タノードなのかどうかをチェックする。最初にアクセス
したスレーブノードが結果マージ用ノードとなる(coun
ter(0)の最上位bit が”0 ”の場合、本bit に”1 ”を
Set して(権利を獲得したことを表示する)、下位bit
に自Node番号を書き込む)。
【0077】また、2 番目にアクセスしたスレーブノー
ドはcounter(1)の最上位bit に”1”をSet して((2)
のローカル計算が完了したことを表示する)、下位bit
に自Node番号を書き込む。以下同様に、3 番目のスレー
ブノードはcounter(2)に同様のアクセスをする。このco
unter(1)、(2) に対するアクセスもTest&Set機能により
行われる。
【0078】具体的には、各ノードは、mask1 に最上位
bit のみ”1”のマスクデータを、mask2 に最上位bit
のみ”0”のマスクデータをそれぞれセットする。そし
て、各スレーブノードは、Test&Set機能を使って、通信
レジスタ中のcounter(0)をアクセスして最上位bit をfl
agに置いて0 か否かを検査し、0 であれば、自ノードの
rankとmask1 との論理和をsetdata において、このsetd
ata の値をcounter(0)に書き込むことで、counter(0)の
最上位bit を”1”にすると共に下位bit に自Node番号
を書き込む。また、counter(0)の最上位bit が既に”
1”なら、次には通信レジスタ中のcounter(1)に対して
同様の操作を試み、counter(1)の最上位bit が既に”
1”なら最後に通信レジスタ中のcounter(2)に対して同
様の操作を試みる。なお、MPI プログラムをコンパイラ
にかけてアセンブラコードに変換すると、図5 のflag=
counter(i).shiftr.63の文からcounter(i)=setdata の
文までがアセンブラコード1 命令からなるTest&Set命令
に変換されるため、実際は各スレーブノードはこのTest
&Set命令を実行することになる。
【0079】(3)-2 計算結果のマージ(rank0 以外)
(図10) 各ノード(rank0 以外)の計算結果(mEq[i])を結果マ
ージ用マスタノードに転送し、結果マージ用マスタノー
ドでは、計算結果をマージして配列Eq[i] に結果を格納
する。この時のマージされる側(スレーブノード)の順
番は、counter(1)〜counter(2)に格納されているNode番
号の順番に従う((2) のローカル計算が完了した順)。
【0080】具体的には、各ノードは、通信タグtag を
2 にセットし、アクセスして得た通信レジスタ41中のco
unter(0)とmask2 との論理積をmasterに置き、自ノード
のrankがmasterと等しければ、つまり自ノードが結果マ
ージ用マスタノードであれば、以下の処理を実行する。
先ず、自ノードのローカル計算結果mEq[i]を配列Eq[i]
にコピーする。次に、counter(1)、(2) を順に参照して
(2) のローカル計算を次に早く終えたrank1、rank3 の
ノードの順に、配列mEq に、通信tag (=2)がついている
データを受信して、配列Eq[i] に格納されているデータ
とマージする。他方、自ノードが結果マージ用マスタノ
ードでないスレーブノードの場合、配列mEq[N3_max]を
倍精度(8Byte )データとして、通信タグtag (=2)をつ
けてmaster(結果マージ用マスタノード) 宛に送信す
る。
【0081】(3)-3 計算結果のマージ(rank0 ) (図1
1) 最終結果はマスタノード(rank0 )に戻す必要があるの
で、結果マージ用マスタノードからマスタノード(rank
0 )に配列Eq[i] を転送して結果のマージをして一連の
処理が完了となる。
【0082】〔動作〕次に、図1のブロック図と図9 〜
図11のプログラム2 を元に、本実施例における分散メモ
リ型並列計算機の一連の動作について説明する。なお、
rank2 のノード2 が(2) のローカル計算を最初に完了
し、次にrank1 のノード1 が(2) のローカル計算を完了
し、次にrank3 のノード3 が(2) のローカル計算を完了
し、最後にrank0 のノード0 が(2) のローカル計算を完
了したものとして説明する。また、(1) と(2) は第1 の
実施例と全く変わらないので説明は省略する。
【0083】(3)-1 結果マージ用CPU の決定(rank0以
外) <rank1 (Node1 )>CPU11 (rank1 )はNetwork4にお
けるGCR41 中のレジスタ(counter(0))に対してTest&S
et命令を実行するが、今の場合、counter(0)の最上位bi
t 値はNode2によって既に”1”にセットされているの
で、ノーオペレーションとなる。このため、次にCPU11
(rank1 )はNetwork4におけるGCR41 中のレジスタ(co
unter(1))に対してTest&Set命令を実行し、今の場合、
counter(1)の最上位bit は”0”なので、counter(1)の
最上位bit が”1 ”にセットされるのと同時に、counte
r(1)の下位bit にrank1 のNode番号が書き込まれる。
【0084】<rank2 (Node2 )>CPU21 (rank2 )は
Network4におけるGCR41 中のレジスタ(counter(0))に
対してTest&Set命令を実行し、今の場合、counter(0)の
最上位bit 値は”0 ”なので、counter(0)の最上位bit
が”1 ”にセットされるのと同時に、counter(0)の下位
bit にrank2 のNode番号が書き込まれる。
【0085】<rank3 (Node3 )>CPU31 (rank3 )は
Network4におけるGCR41 中のレジスタ(counter(0))に
対してTest&Set命令を実行するが、今の場合、counter
(0)の最上位bit 値はNode2によって既に”1”にセット
されているので、ノーオペレーションとなる。このた
め、次にCPU31 はNetwork4におけるGCR41 中のレジスタ
(counter(1))に対してTest&Set命令を実行するが、今
の場合、counter(1)の最上位bit 値はNode1 によって既
に”1”にセットされているので、ノーオペレーション
となる。このため、次にCPU31 はNetwork4におけるGCR4
1 中のレジスタ(counter(2))に対してTest&Set命令を
実行し、その最上位bit 値は”0 ”なので、counter(2)
の最上位bit が”1 ”にセットされるのと同時に、coun
ter(2)の下位bit にrank3 のNode番号が書き込まれる。
【0086】(3)-2 計算結果のマージ(rank0 以外) <rank1 (Node1 )>CPU11 (rank1 )は、GCR41 中の
レジスタ(counter(0))をアクセスし、結果マージ用マ
スタノードがNode2 であることを認識する。次に、MMU1
2 内の計算結果(配列mEq)をMMU22 内の配列mEq にコ
ピーするために、RCU13 に指示を出す。RCU13 はその指
示に従い、MMU12 内の配列mEqをNetwork4経由でRCU23
に転送する(Send操作)。
【0087】<rank2 (Node2 )>CPU21 (rank2 )
は、GCR41 中のレジスタ(counter(0))をアクセスし、
結果マージ用マスタノードが自分自身であることを認識
する。次に、MMU22 内にある計算結果(配列mEq )を最
終結果を格納する配列Eqにコピーする。次に、CPU21(r
ank2 )はマージすべき相手ノードを決定するために、G
CR41 のcounter(1)をアクセスし、そのリプライにより
マージすべき相手ノードがCPU11 (rank1 )であること
を知ると、MMU12 内の計算結果(配列mEq)をMMU22 内
の配列mEq にコピーするために、RCU23 に指示を出す。
RCU23 はその指示に従い、RCU13 及びNetwork4経由で、
MMU12 内の配列mEq をMMU22 内の配列mEqに転送(コピ
ー)する(Receive 操作)。次に、CPU21 (rank2 )は
MMU22 内のNode1 の計算結果(mEq)を最終結果(Eq)
にマージする。同様に、CPU21 (rank2 )は、GCR41 の
counter(2)をアクセスし、次にマージすべき相手ノード
がCPU31 (rank3 )であることを知ると、MMU32 内の計
算結果(配列mEq)をMMU22 内の配列mEq にコピーする
ために、RCU23 に指示を出す。RCU23 はその指示に従
い、RCU33 及びNetwork4経由で、MMU32 内の配列mEq を
MMU22 内の配列mEqに転送(コピー)する(Receive 操
作)。CPU21 (rank2 )はMMU22 内のNode3 の計算結果
(mEq)を最終結果(Eq)にマージする。
【0088】<rank3 (Node3 )>CPU31 (rank3 )
は、GCR41 中のレジスタ(counter(0))をアクセスし、
結果マージ用マスタノードがNode2 であることを認識す
る。次に、MMU32 内の計算結果(配列mEq)をMMU22 内
の配列mEq にコピーするために、RCU33 に指示を出す。
RCU33 はその指示に従い、MMU32 内の配列mEqをNetwork
4経由でRCU23 に転送する(Send操作)。
【0089】(3)-3 計算結果のマージ(rank0 ) <rank0 (Node0 )>CPU01 (rank0 )は、MMU22 内の
最終結果EqをMMU02 内にコピーするために、RCU03 に指
示を出す。RCU03 はその指示に従い、MMU22 内の配列Eq
をRCU23 及びNetwork4経由でMMU02 に転送(Receive 操
作)する。次に、CPU01 はMMU02 内のmEq とEqをマージ
して一連の動作が完了となる。
【0090】<rank2 (Node2 )>CPU21 (rank2 )
は、MMU22 内の最終結果EqをMMU02 内にコピーするため
に、RCU23 に指示を出す。RCU23 はその指示に従い、MM
U22 内の配列EqをNetwork4経由でRCU03 に転送する(Se
nd操作)。
【0091】以上、Network4にTest&Set機能(最上位ビ
ットが”0 ”ならば”1 ”にして下位ビットにデータを
書き込み、最上位ビットが”1 ”ならばノーアクショ
ン)を具備したGCR41 を設け、その機能を使って計算結
果をマージする順番をプログラム制御することで、マー
ジ処理の開始時間を早めることができ、分散処理全体の
実行時間が短縮につながる。
【0092】各フェーズでの処理時間を第1の実施例と
同様に設定すると、第2の実施例における構成例では、
図12に示すタイムチャートとなり、(1) 〜(3) ((3)-1
、(3)-2 、(3)-3 )までの時間は1400T となる。
【0093】〔拡張〕第2の実施例についても、第1の
実施例で説明したものと同様の拡張が可能である。
【0094】
【発明の効果】以上説明したように本発明によれば、ロ
ーカル計算を最初に完了したスレーブノードを動的に結
果マージ用マスタノードに定めて、この結果マージ用マ
スタノードに結果のマージ処理の一部を分担させたこと
により、マスタノードが常にマージ処理の全てを行って
いた従来技術に比べて、マージ処理の開始時間を早める
ことができ、その分、プログラム全体の処理時間を短縮
することができる。
【0095】また、結果マージ用マスタノードが結果を
マージするノードの順番を固定化せずにローカル計算を
終えた順とすることにより、プログラム全体の処理時間
をより一層短縮することができる。
【図面の簡単な説明】
【図1】本発明を適用した分散メモリ型並列計算機の一
例を示すブロック図である。
【図2】本発明の実施の形態におけるMPI プログラムの
概要を示すフローチャートである。
【図3】本発明の第1の実施例におけるMPI プログラム
の初期データ分配処理部分のプログラム例を示す図であ
る。
【図4】本発明の第1の実施例におけるMPI プログラム
のローカル計算部分のプログラム例を示す図である。
【図5】本発明の第1の実施例におけるMPI プログラム
の結果マージ用マスタノードの決定部分のプログラム例
を示す図である。
【図6】本発明の第1の実施例におけるMPI プログラム
の結果マージ用マスタノードによる計算結果のマージ処
理部分のプログラム例を示す図である。
【図7】本発明の第1の実施例におけるMPI プログラム
のマスタノードによる計算結果のマージ処理部分のプロ
グラム例を示す図である。
【図8】本発明の第1の実施例のタイムチャートを示す
図である。
【図9】本発明の第2の実施例におけるMPI プログラム
の結果マージ用マスタノードの決定部分のプログラム例
を示す図である。
【図10】本発明の第2の実施例におけるMPI プログラ
ムの結果マージ用マスタノードによる計算結果のマージ
処理部分のプログラム例を示す図である。
【図11】本発明の第2の実施例におけるMPI プログラ
ムのマスタノードによる計算結果のマージ処理部分のプ
ログラム例を示す図である。
【図12】本発明の第2 の実施例のタイムチャートを示
す図である。
【図13】従来技術におけるMPI プログラムの初期デー
タ分配処理部分のプログラム例を示す図である。
【図14】従来技術におけるMPI プログラムのローカル
計算部分のプログラム例を示す図である。
【図15】従来技術におけるMPI プログラムのマージ処
理部分のプログラム例を示す図である。
【図16】従来技術のタイムチャートを示す図である。
【符号の説明】
0〜3…ノード 01,11,21,31 …CPU(中央演算装置:Central Processing
Unit) 02,12,22,32 …MMU(主記憶装置:Main Memory Unit) 03,13,23,33 …RCU(遠隔制御装置:Remote Control Uni
t) 4 …ネットワーク 41…通信レジスタ(GCR:Global Communication Registe
r)

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 各々少なくともCPU とメモリとデータ転
    送手段とを含む複数のノードがネットワークを通じて相
    互に接続された分散メモリ型並列計算機で、複数のノー
    ドの1つをマスタノード、残りのノードをスレーブノー
    ドに定め、マスタノード及びスレーブノードで処理を分
    散して実行する方法において、(a)マスタノードから
    スレーブノードへ初期データを転送するステップと、
    (b)各ノードにおいてローカル計算を行うステップ
    と、(c)ローカル計算を一番早く終えたスレーブノー
    ドを結果マージ用マスタノードに定めるステップと、
    (d)結果マージ用マスタノードが他のスレーブノード
    のローカル計算結果を収集してマージするステップと、
    (e)マスタノードが結果マージ用マスタノードでマー
    ジされたローカル計算結果を収集して最終結果にマージ
    するステップと、を含む分散メモリ型並列計算機におけ
    る分散処理方法。
  2. 【請求項2】 前記ステップdにおいて、結果マージ用
    マスタノードは、予め定められたスレーブノードの順番
    に従ってローカル計算結果の収集とマージを行う請求項
    1記載の分散メモリ型並列計算機における分散処理方
    法。
  3. 【請求項3】 前記ステップcは、各スレーブノードが
    ローカル計算を終えた時点で、ネットワークに設けられ
    た通信レジスタ中の所定のカウンタに対してテストアン
    ドセット命令を実行することで、結果マージ用マスタノ
    ードの決定を行う請求項1または2記載の分散メモリ型
    並列計算機における分散処理方法。
  4. 【請求項4】 前記ステップcに代えて、(c’)ロー
    カル計算を一番早く終えたスレーブノードを結果マージ
    用マスタノードに定めると共に、他のスレーブノードの
    ローカル計算を終えた順番を決定するステップを含み、
    且つ、 前記ステップdにおいて、結果マージ用マスタノード
    は、ローカル計算を終えたスレーブノードの順番に従っ
    てローカル計算結果の収集とマージを行う請求項1記載
    の分散メモリ型並列計算機における分散処理方法。
  5. 【請求項5】 前記ステップc’は、各スレーブノード
    がローカル計算を終えた時点で、ネットワークに設けら
    れた通信レジスタ中の第1番目のカウンタから第(ノー
    ド数−1)番目のカウンタまで順に、テストアンドセッ
    ト命令が成功するカウンタに至るまで、それぞれテスト
    アンドセット命令を実行することで、結果マージ用マス
    タノードの決定とローカル計算を終えた順番の決定とを
    行う請求項4記載の分散メモリ型並列計算機における分
    散処理方法。
  6. 【請求項6】 各々少なくともCPU とメモリとデータ転
    送手段とを含む複数のノードがネットワークを通じて相
    互に接続された分散メモリ型並列計算機で、複数のノー
    ドの1つをマスタノード、残りのノードをスレーブノー
    ドに定め、マスタノード及びスレーブノードで処理を分
    散して実行するプログラムを記録した媒体であって、各
    ノードに、(a)マスタノードからスレーブノードへ初
    期データを転送するステップと、(b)各ノードにおい
    てローカル計算を行うステップと、(c)ローカル計算
    を一番早く終えたスレーブノードを結果マージ用マスタ
    ノードに定めるステップと、(d)結果マージ用マスタ
    ノードが他のスレーブノードのローカル計算結果を収集
    してマージするステップと、(e)マスタノードが結果
    マージ用マスタノードでマージされたローカル計算結果
    を収集して最終結果にマージするステップと、を実行さ
    せるプログラムを記録したコンピュータ可読記録媒体。
  7. 【請求項7】 前記ステップdにおいて、結果マージ用
    マスタノードは、予め定められたスレーブノードの順番
    に従ってローカル計算結果の収集とマージを行う請求項
    6記載のコンピュータ可読記録媒体。
  8. 【請求項8】 前記ステップcは、各スレーブノードが
    ローカル計算を終えた時点で、ネットワークに設けられ
    た通信レジスタ中の所定のカウンタに対してテストアン
    ドセット命令を実行することで、結果マージ用マスタノ
    ードの決定を行う請求項6または7記載のコンピュータ
    可読記録媒体。
  9. 【請求項9】 前記ステップcに代えて、(c’)ロー
    カル計算を一番早く終えたスレーブノードを結果マージ
    用マスタノードに定めると共に、他のスレーブノードの
    ローカル計算を終えた順番を決定するステップを実行さ
    せ、且つ、 前記ステップdにおいて、結果マージ用マスタノード
    は、ローカル計算を終えたスレーブノードの順番に従っ
    てローカル計算結果の収集とマージを行う請求項6記載
    のコンピュータ可読記録媒体。
  10. 【請求項10】 前記ステップc’は、各スレーブノー
    ドがローカル計算を終えた時点で、ネットワークに設け
    られた通信レジスタ中の第1番目のカウンタから第(ノ
    ード数−1)番目のカウンタまで順に、テストアンドセ
    ット命令が成功するカウンタに至るまで、それぞれテス
    トアンドセット命令を実行することで、結果マージ用マ
    スタノードの決定とローカル計算を終えた順番の決定と
    を行う請求項9記載のコンピュータ可読記録媒体。
JP2000260573A 2000-08-30 2000-08-30 分散メモリ型並列計算機における分散処理方法及びコンピュータ可読記録媒体 Expired - Fee Related JP3667610B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2000260573A JP3667610B2 (ja) 2000-08-30 2000-08-30 分散メモリ型並列計算機における分散処理方法及びコンピュータ可読記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2000260573A JP3667610B2 (ja) 2000-08-30 2000-08-30 分散メモリ型並列計算機における分散処理方法及びコンピュータ可読記録媒体

Publications (2)

Publication Number Publication Date
JP2002073577A true JP2002073577A (ja) 2002-03-12
JP3667610B2 JP3667610B2 (ja) 2005-07-06

Family

ID=18748560

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000260573A Expired - Fee Related JP3667610B2 (ja) 2000-08-30 2000-08-30 分散メモリ型並列計算機における分散処理方法及びコンピュータ可読記録媒体

Country Status (1)

Country Link
JP (1) JP3667610B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100370450C (zh) * 2004-02-20 2008-02-20 索尼株式会社 网络系统、分布式处理方法和信息处理装置
CN103827698A (zh) * 2011-07-28 2014-05-28 沙特阿拉伯石油公司 集群三维油藏物性不确定性建模
WO2018235180A1 (ja) * 2017-06-21 2018-12-27 株式会社ターボデータラボラトリー 分散処理システム
KR102113662B1 (ko) * 2018-12-17 2020-05-22 인천대학교 산학협력단 모바일 에지 컴퓨팅 환경에서 태스크를 분할하여 대리 노드들에 할당하는 방법

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100370450C (zh) * 2004-02-20 2008-02-20 索尼株式会社 网络系统、分布式处理方法和信息处理装置
CN103827698A (zh) * 2011-07-28 2014-05-28 沙特阿拉伯石油公司 集群三维油藏物性不确定性建模
EP2737344A2 (en) * 2011-07-28 2014-06-04 Saudi Arabian Oil Company Cluster 3d petrophysical uncertainty modeling
JP2014526044A (ja) * 2011-07-28 2014-10-02 サウジ アラビアン オイル カンパニー クラスタ3次元の石油物理学的不確実性モデリング
WO2018235180A1 (ja) * 2017-06-21 2018-12-27 株式会社ターボデータラボラトリー 分散処理システム
JPWO2018235180A1 (ja) * 2017-06-21 2020-04-23 株式会社エスペラントシステム 分散処理システム
KR102113662B1 (ko) * 2018-12-17 2020-05-22 인천대학교 산학협력단 모바일 에지 컴퓨팅 환경에서 태스크를 분할하여 대리 노드들에 할당하는 방법

Also Published As

Publication number Publication date
JP3667610B2 (ja) 2005-07-06

Similar Documents

Publication Publication Date Title
Ni et al. Efficient ranking and selection in parallel computing environments
US20160335121A1 (en) Support of non-trivial scheduling policies along with topological properties
EP3474152B1 (en) Instruction set
US8595736B2 (en) Parsing an application to find serial and parallel data segments to minimize mitigation overhead between serial and parallel compute nodes
KR20190044571A (ko) 칩 밖으로 데이터 송신하기
US10963003B2 (en) Synchronization in a multi-tile processing array
US20140331014A1 (en) Scalable Matrix Multiplication in a Shared Memory System
KR101335001B1 (ko) 프로세서 및 인스트럭션 스케줄링 방법
JPH06509894A (ja) 超並列コンピュータ・システムの入出力構成
TW202018599A (zh) 神經處理單元
WO2019056771A1 (zh) 分布式存储系统升级管理的方法、装置及分布式存储系统
WO2022012576A1 (zh) 路径规划方法、装置、路径规划设备及存储介质
US20230136661A1 (en) Task scheduling for machine-learning workloads
Alam et al. A new approach of dynamic load balancing scheduling algorithm for homogeneous multiprocessor system
US20200183878A1 (en) Controlling timing in computer processing
Busch et al. Time-communication impossibility results for distributed transactional memory
CN111026518B (zh) 任务调度方法
CN104598304A (zh) 用于作业执行中的调度的方法和装置
JP2002073577A (ja) 分散メモリ型並列計算機における分散処理方法及びコンピュータ可読記録媒体
CN110163554B (zh) 工作流的运行方法、装置、服务器和存储介质
US11093276B2 (en) System and method for batch accessing
Madsen et al. Multi-objective design space exploration of embedded system platforms
CN108541365B (zh) 用于交换机中拥塞信息的分发的设备和方法
CN113227975B (zh) 一种同步方法及装置
EP3495960A1 (en) Program, apparatus, and method for communicating data between parallel processor cores

Legal Events

Date Code Title Description
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: 20050322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050406

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080415

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090415

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100415

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees