JP7440739B2 - 情報処理装置および並列演算プログラム - Google Patents
情報処理装置および並列演算プログラム Download PDFInfo
- Publication number
- JP7440739B2 JP7440739B2 JP2019212155A JP2019212155A JP7440739B2 JP 7440739 B2 JP7440739 B2 JP 7440739B2 JP 2019212155 A JP2019212155 A JP 2019212155A JP 2019212155 A JP2019212155 A JP 2019212155A JP 7440739 B2 JP7440739 B2 JP 7440739B2
- Authority
- JP
- Japan
- Prior art keywords
- communication
- node
- processes
- data
- virtual rank
- 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
Links
- 230000010365 information processing Effects 0.000 title claims description 55
- 238000000034 method Methods 0.000 claims description 1219
- 238000004891 communication Methods 0.000 claims description 330
- 230000005540 biological transmission Effects 0.000 claims description 81
- 230000015654 memory Effects 0.000 claims description 32
- 230000007423 decrease Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 58
- 235000008694 Humulus lupulus Nutrition 0.000 description 11
- 238000011156 evaluation Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 6
- 230000001174 ascending effect Effects 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 4
- FFBHFFJDDLITSX-UHFFFAOYSA-N benzyl N-[2-hydroxy-4-(3-oxomorpholin-4-yl)phenyl]carbamate Chemical compound OC1=C(NC(=O)OCC2=CC=CC=C2)C=CC(=C1)N1CCOCC1=O FFBHFFJDDLITSX-UHFFFAOYSA-N 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 101000911772 Homo sapiens Hsc70-interacting protein Proteins 0.000 description 1
- 101001139126 Homo sapiens Krueppel-like factor 6 Proteins 0.000 description 1
- 235000013527 bean curd Nutrition 0.000 description 1
- 230000007850 degeneration Effects 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013341 scale-up Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000017105 transposition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Description
[第1の実施の形態]
第1の実施の形態を説明する。
情報処理装置1は、記憶部1a0,1a1,1a2,1a3と処理部1bとを有する。
記憶部1a0,1a1,1a2,1a3は、処理部1bの処理に用いられるデータを記憶する主記憶装置である。記憶部1a0,1a1,1a2,1a3としては、例えば、HBM(High Bandwidth Memory)2などのRAM(Random Access Memory)が用いられる。
処理部1bは、ノード1b0,1b1,1b2,1b3により並列に情報処理を実行することができる。情報処理を実行している間、ノード1b0,1b1,1b2,1b3それぞれで実行されるプロセスは、他のプロセスに対してデータを送信することがある。プロセス間のデータ通信は、例えば、MPIなどの通信ライブラリによって実装される。プロセス間のデータ通信としては、複数のプロセスが一斉にデータ送信に参加する集団通信がある。集団通信には、各プロセスが全プロセスにデータを送信する全対全通信が含まれる。全対全通信は、プロセス間の一対一通信を組み合わせて実行される。すなわち、全対全通信は、通信の各ステップにおいて、各プロセスに対する通信先のプロセスを順次変更することで行われる。
第2に、時計回りと反時計回りとで経路のホップ数が同じ場合は、ノード1b0とノード1b3との場合に反時計回りの経路、ノード1b1とノード1b2との場合に時計回りの経路がそれぞれ使用される。
sizeは、処理部1bにおけるプロセスの総数である。図1の例では、size=8である。式(1)は次の意味をもつ。第1に、ノード順プロセス番号で偶数の番号が与えられたプロセスに対し、当該ノード順プロセス番号を仮想ランク番号とする。第2に、ノード順プロセス番号で奇数の番号が与えられたプロセスに対し、sizeからノード順プロセス番号を引いた値を仮想ランク番号とする。
処理部1bは、仮想ランク番号vrankのプロセスに対するデータ送信先のプロセスの仮想ランク番号を、式(1)のnumにnum_dを代入することで算出する。
式(3)は次の意味をもつ。第1に、stepが偶数のとき、stepとvrankとの排他的論理和を取る。第2に、stepが奇数のとき、(maxstep-step)の値とvrankとの排他的論理和を取る。
あるプロセスに対するデータ送信先プロセスの仮想ランク番号およびデータ送信元プロセスの仮想ランク番号は、該当のプロセスを実行するノードによって決定される。
プロセスP0のデータ送信先は、プロセスP0である。プロセスP1のデータ送信先は、プロセスP7である。プロセスP2のデータ送信先は、プロセスP2である。プロセスP3のデータ送信先は、プロセスP5である。プロセスP4のデータ送信先は、プロセスP4である。プロセスP5のデータ送信先は、プロセスP3である。プロセスP6のデータ送信先は、プロセスP6である。プロセスP7のデータ送信先は、プロセスP1である。処理部1bは、各プロセスから該当のプロセスに対して決定したデータ送信先のプロセスへのデータの送信を並列に行う。処理部1bは、各プロセスによるデータ送信とともに、各プロセスによるデータ送信元のプロセスからのデータの受信も行う。処理部1bは、各プロセスによるstep=0の一対一通信が完了すると、ステップ数をインクリメントして、次のステップに進む。各プロセスによる一対一通信の完了の同期は、例えば1ステップ毎に行われる。ただし、各プロセスによる一対一通信の完了の同期は、複数ステップ毎に行われてもよい。
プロセスP0のデータ送信先は、プロセスP1である。プロセスP1のデータ送信先は、プロセスP6である。プロセスP2のデータ送信先は、プロセスP3である。プロセスP3のデータ送信先は、プロセスP4である。プロセスP4のデータ送信先は、プロセスP5である。プロセスP5のデータ送信先は、プロセスP2である。プロセスP6のデータ送信先は、プロセスP7である。プロセスP7のデータ送信先は、プロセスP0である。処理部1bは、各プロセスから該当のプロセスに対して決定したデータ送信先のプロセスへのデータの送信とともに、各プロセスによるデータ送信元のプロセスからのデータの受信を行う。以降、同様に、処理部1bは、最終ステップに達するまで、プロセス間の一対一通信を実行することで、プロセス間の全対全通信を行う。
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
ノード11a0,11a1,11a2,11a3は、それぞれ複数のコアを有し、複数のコアにより同一ジョブに属する複数のプロセスを並列に実行する。
1つのノードは12個の演算用のコアを有する。図3ではノード11a0のコアを例示するが、ノード11a1,11a2,11a3も同様に12個のコアを有する。ただし、各ノードは、主に各ノードの制御に用いられるアシスタントコアを、例えば1つずつ更に有してもよい。
前述のように、リングバス11bでは、第1通信路11b0と第2通信路11b1とでは、干渉せずに通信を行える。このため、例えば、ノード11a2からノード11a3へのデータ送信と、ノード11a3からノード11a2へのデータ送信とが同時に行われたとしても、リングバス11bでは輻輳が発生しない。
図5は、集団通信の例を示す図である。
図6は、ノードで実行されるプロセスの例を示す図である。
リングバス11bにおけるルーティングは、送信元ノードと送信先ノードとの組によってのみ決まり、動的にルーティングが変更されることはない。リングバス11bにおけるルーティングのルールは次の通りである。
第2のルールは、時計回りと反時計回りとで経路のホップ数が同じ場合、ノード11a0,11a3の組では反時計回りの経路が使用され、ノード11a1,11a2の組では時計回りの経路が使用されるというルールである。
図7(A)について、互いに隣接するノード間の通信には、最短経路が用いられる。互いに隣接するノード間の通信とは、例えば、ノード11a1とノード11a3との通信、ノード11a0とノード11a2との通信、ノード11a0とノード11a1との通信、および、ノード11a2とノード11a3との通信である。
図7(B)について、ノード11a0とノード11a3との通信、および、ノード11a1とノード11a2との通信では、時計回りおよび反時計回りのどちらを選択してもホップ数は2である。この場合は、ノード11a1とノード11a2との通信では時計回りの経路(第1通信路11b0)が用いられる。また、ノード11a0とノード11a3との通信では反時計回りの経路(第2通信路11b1)が用いられる。
図8(A)は、発生しないルーティングの第1の例を示す。
図8(A)のルーティングは、互いに隣接するノード11a1,11a3の通信に最短経路が用いられておらず、図7で説明したルーティングの第1のルールに反する。このため、リングバス11bでは、図8(A)のルーティングは発生しない。
図8(B)のルーティングは、ノード11a0,11a3の通信に時計回りの経路が用いられている。また、ノード11a1,11a2の通信に反時計回りの経路が用いられている。すなわち、図7で説明したルーティングの第2のルールに反する。このため、リングバス11bでは、図8(B)のルーティングは発生しない。
図9(A)は、輻輳が発生する通信パターンの第1の例を示す。
図9(A)の例では、プロセスp0からプロセスp2への通信とプロセスp1からプロセスp3への通信とが反時計回りの経路の一部を共有して行われている。この場合、リングバス11bの第2通信路11b1におけるノード11a0とノード11a1との間の区間で輻輳が発生する。
図9(B)の例では、プロセスp6からプロセスp0への通信とプロセスp7からプロセスp5への通信とが反時計回りの経路の一部を共有して行われている。この場合、リングバス11bの第2通信路11b1におけるノード11a2とノード11a3との間の区間で輻輳が発生する。
図10(A)は、輻輳が発生しない通信パターンの第1の例を示す。
図10(A)の例では、プロセスp0からプロセスp2への反時計回りの通信と、プロセスp3からプロセスp1への時計回りの通信とが行われているが、リングバス11b上では、同一経路が共有されていない。すなわち、プロセスp0からプロセスp2への反時計回りの通信には第2通信路11b1が用いられ、プロセスp3からプロセスp1への時計回りの通信には第1通信路11b0が用いられる。時計回りの通信と反時計回りの通信とは干渉しないため、図10(A)の通信パターンでは、輻輳が発生しない。
図10(B)の例では、プロセスp3からプロセスp7への反時計回りの通信と、プロセスp7からプロセスp0への反時計回りの通信とが行われているが、リングバス11b上では、反時計回りの経路で共有される部分はない。また、ノード11a3とリングバス11bとの間の経路(接続バス11c3)が共有されているが、前述のように、接続バス11c3が共有されても輻輳は起きない。このため、図10(B)の通信パターンでは、輻輳が発生しない。
図11,12では、図7で例示した各プロセスのランク番号に基づいて全対全通信を行う例を説明する。ここでは、当該ランク番号に基づいて、単純なアルゴリズムで通信先が決定される例を示す。当該アルゴリズムでは、各プロセスは、自身のランク番号にステップ数を加算した値を8で割った剰余を、データ送信先のプロセスのランク番号とする。また、全対全通信のステップ数をstepと表記する。stepは0から1ずつ昇順に増えるものとする。
図12は、輻輳が多発する全対全通信の例を示す図である。
この例では、図12に示されるstep=4~7のうち、step=4~6で輻輳が発生する。step=4では、次の箇所に輻輳が発生する。第1に、ノード11a2から11a0への反時計回りの経路部分である。第2に、ノード11a1からノード11a3への反時計回りの経路部分である。第3に、ノード11a0からノード11a2への時計回りの経路部分である。第4に、ノード11a3からノード11a1への時計回りの経路部分である。
図13は、情報処理装置の処理例を示すフローチャートである。
ここで、図13では、ノード11a0のプロセスp0,p1に着目するが、ノード11a1,11a2,11a3上の他のプロセスも同様の処理を並列に実行する。また、図中、プロセスp0の処理に対応するプロセスp1の処理を、例えば、プロセスp0の「ステップS10」に対して、プロセスp1の「ステップS10a」のように、符号の末尾に「a」の文字を付して表記することがある。プロセスp1の各ステップにおける処理内容はプロセスp0と同様であるため、説明を省略する。下記のステップS10は、情報処理装置10により並列プログラムが実行開始されると実行される。並列プログラムの実行開始に応じて、並列プログラムのプロセスp0~p7が起動される。
(S11)プロセスp0は、プログラムの実行を開始する。
(S13)プロセスp0は、メモリ12に予め記憶されたハードウェア情報に基づいて、CPUコア番号を取得する。
第2の実施の形態の例ではsize=8である。例えば、プロセスp0は、決定した仮想ランク番号を記録した仮想ランク番号表を作成し、メモリ12に格納してもよい。
(S18)プロセスp0は、ユーザにより定義された所定の演算を実行する。
(S19)プロセスp0は、全対全通信を開始する。プロセスp0は、ステップ数step=0に設定する。
「^」は、両辺の値を2進数で表した値の排他的論理和演算を取ることを示す。プロセスp0は、プロセスp0からのデータ送信先のプロセスの仮想ランク番号を、式(1)のnumにnum_dを代入することで算出する。
第2の実施の形態の例ではsize=8であり、maxstep=8である。
(S21)プロセスp0は、stepが最終ステップに到達したか否かを判定する。第2の実施の形態の例では、step=7の場合に、最終ステップに到達したことになる。最終ステップに到達した場合、ステップS23に処理が進む。最終ステップに到達していない場合、ステップS22に処理が進む。
(S23)プロセスp0は、全対全通信を終了する。
(S25)プロセスp0は、プログラムの演算を終了する。同様に他のプロセスの演算も終了し、並列プログラムの実行が終了する。
図14(A)は、CPUコア番号表121を示す。CPUコア番号表121は、ノードのノード番号と当該ノードに含まれるコアのCPUコア番号との対応関係を示すハードウェア情報である。CPUコア番号は、CPU11内で各コアに対して一意に付与されたコアの識別番号である。CPUコア番号表121は、例えば、メモリ12,13,14,15に予め格納される。ただし、CPUコア番号表121は、ノード11a0~11a3により参照可能な、メモリ12,13,14,15以外の他のメモリに予め格納されてもよい。
図15(A)は、ノード順プロセス番号表123を示す。ノード順プロセス番号表123は、CPUコア番号の項目およびノード順プロセス番号の項目を含む。CPUコア番号の項目にはCPUコア番号が登録される。ノード順プロセス番号の項目には、該当のCPUコア番号のコアで実行されるプロセスのノード順プロセス番号が登録される。
プロセスp0~p7は、予め指定されたユーザ定義プロセス番号をプロセスp0~p7に割り当てる(ST11)。例えば、プロセスp0のユーザ定義プロセス番号は「2」である。プロセスp1のユーザ定義プロセス番号は「6」である。プロセスp2のユーザ定義プロセス番号は「4」である。プロセスp3のユーザ定義プロセス番号は「3」である。プロセスp4のユーザ定義プロセス番号は「1」である。プロセスp5のユーザ定義プロセス番号は「0」である。プロセスp6のユーザ定義プロセス番号は「5」である。プロセスp7のユーザ定義プロセス番号は「7」である。ユーザ定義プロセス番号は、ユーザなどにより予め定められるランク番号に相当する。
表125は、全対全通信の各ステップにおける、仮想ランク番号「7」のプロセスp1に着目したデータ送信先のプロセスの仮想ランク番号の計算例を示す。
step=2の場合、データ送信先のプロセスのノード順プロセス番号は「2^7=5」である。したがって、データ送信先のプロセスの仮想ランク番号は「3」である。
step=4の場合、データ送信先のプロセスのノード順プロセス番号は「4^7=3」である。したがって、データ送信先のプロセスの仮想ランク番号は「5」である。
step=6の場合、データ送信先のプロセスのノード順プロセス番号は「6^7=1」である。したがって、データ送信先のプロセスの仮想ランク番号は「7」である。
図18は、送信元の仮想ランク番号の計算例を示す図である。
表126では、表125の項目に加えて、ステップ評価値を示している。ステップ評価値は、式(3)の括弧で閉じられた項、すなわち、(step%2==0?step:maxstep-step)の計算結果を示す。
図19,20ではプロセスp1(仮想ランク番号「7」)に着目し、プロセスp1が送信元または送信先となる通信を例示する。プロセスp0~p7それぞれを表す円の中に記載された数値は、該当のプロセスの仮想ランク番号を示す。
step=4では、プロセスp1は、反時計回りの経路を用いてプロセスp3にデータを送信する。プロセスp3は、プロセスp1からデータを受信する。また、プロセスp3は、時計回りの経路を用いてプロセスp1にデータを送信する。プロセスp1は、プロセスp3からデータを受信する。
図21は、仮想ランク番号に基づく全対全通信の例を示す図である。
step=0では、次の通信が実行される。なお、各プロセスによるデータの受信の説明を省略する。
プロセスp1は、反時計回りの経路を用いてプロセスp7にデータを送信する。
プロセスp2は、プロセスp2にデータを送信する。
プロセスp4は、プロセスp4にデータを送信する。
プロセスp5は、時計回りの経路を用いてプロセスp3にデータを送信する。
プロセスp7は、反時計回りの経路を用いてプロセスp1にデータを送信する。
step=1では、次の通信が実行される。
プロセスp1は、反時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp2は、プロセスp3にデータを送信する。
プロセスp4は、プロセスp5にデータを送信する。
プロセスp5は、時計回りの経路を用いてプロセスp2にデータを送信する。
プロセスp7は、反時計回りの経路を用いてプロセスp0にデータを送信する。
step=2では、次の通信が実行される。
プロセスp1は、時計回りの経路を用いてプロセスp5にデータを送信する。
プロセスp2は、時計回りの経路を用いてプロセスp0にデータを送信する。
プロセスp4は、時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp5は、反時計回りの経路を用いてプロセスp1にデータを送信する。
プロセスp7は、時計回りの経路を用いてプロセスp3にデータを送信する。
step=3では、次の通信が実行される。
プロセスp1は、時計回りの経路を用いてプロセスp4にデータを送信する。
プロセスp2は、時計回りの経路を用いてプロセスp1にデータを送信する。
プロセスp4は、時計回りの経路を用いてプロセスp7にデータを送信する。
プロセスp5は、反時計回りの経路を用いてプロセスp0にデータを送信する。
プロセスp7は、時計回りの経路を用いてプロセスp2にデータを送信する。
図22は、仮想ランク番号に基づく全対全通信の例を示す図である。
プロセスp0は、時計回りの経路を用いてプロセスp4にデータを送信する。
プロセスp1は、反時計回りの経路を用いてプロセスp3にデータを送信する。
プロセスp3は、時計回りの経路を用いてプロセスp1にデータを送信する。
プロセスp4は、反時計回りの経路を用いてプロセスp0にデータを送信する。
プロセスp6は、時計回りの経路を用いてプロセスp2にデータを送信する。
プロセスp7は、反時計回りの経路を用いてプロセスp5にデータを送信する。
プロセスp0は、時計回りの経路を用いてプロセスp5にデータを送信する。
プロセスp1は、反時計回りの経路を用いてプロセスp2にデータを送信する。
プロセスp3は、時計回りの経路を用いてプロセスp0にデータを送信する。
プロセスp4は、反時計回りの経路を用いてプロセスp1にデータを送信する。
プロセスp6は、時計回りの経路を用いてプロセスp3にデータを送信する。
プロセスp7は、反時計回りの経路を用いてプロセスp4にデータを送信する。
プロセスp0は、反時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp1は、プロセスp1にデータを送信する。
プロセスp3は、プロセスp3にデータを送信する。
プロセスp4は、時計回りの経路を用いてプロセスp2にデータを送信する。
プロセスp6は、反時計回りの経路を用いてプロセスp0にデータを送信する。
プロセスp7は、プロセスp7にデータを送信する。
プロセスp0は、反時計回りの経路を用いてプロセスp7にデータを送信する。
プロセスp1は、プロセスp0にデータを送信する。
プロセスp3は、プロセスp2にデータを送信する。
プロセスp4は、時計回りの経路を用いてプロセスp3にデータを送信する。
プロセスp6は、反時計回りの経路を用いてプロセスp1にデータを送信する。
プロセスp7は、プロセスp6にデータを送信する。
次に、第3の実施の形態を説明する。前述の第2の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
ノード11a0~11a3それぞれのノード番号は、第2の実施の形態と同様である。すなわち、ノード11a0のノード番号は「0」である。ノード11a1のノード番号は「1」である。ノード11a2のノード番号は「2」である。ノード11a3のノード番号は「3」である。
図24~26ではプロセスp2(仮想ランク番号「2」)に着目し、プロセスp2が送信元または送信先となる通信を例示する。プロセスp0~p11それぞれを表す円の中に記載された数値は、該当のプロセスの仮想ランク番号を示す。
step=4では、プロセスp2は、時計回りの経路を用いてプロセスp6にデータを送信する。プロセスp6は、プロセスp2からデータを受信する。また、プロセスp6は、反時計回りの経路を用いてプロセスp2にデータを送信する。プロセスp2は、プロセスp6からデータを受信する。
step=8では、プロセスp2は、反時計回りの経路を用いてプロセスp10にデータを送信する。プロセスp10は、プロセスp2からデータを受信する。また、プロセスp10は、反時計回りの経路を用いてプロセスp2にデータを送信する。プロセスp2は、プロセスp10からデータを受信する。
次に、第4の実施の形態を説明する。前述の第2,第3の実施の形態と相違する事項を主に説明し、共通する事項の説明を省略する。
ノード11a0~11a3それぞれのノード番号は、第2の実施の形態と同様である。すなわち、ノード11a0のノード番号は「0」である。ノード11a1のノード番号は「1」である。ノード11a2のノード番号は「2」である。ノード11a3のノード番号は「3」である。
表127は、全対全通信の各ステップにおける、仮想ランク番号「5」のプロセスp1に着目したデータ送信先のプロセスの仮想ランク番号の計算例を示す。第4の実施の形態の例では、size=7であり、2の冪でないため、maxstepは7よりも大きい最小の2の冪である8となる。
step=2の場合、データ送信先のプロセスのノード順プロセス番号は「2^5=7」である。ノード順プロセス番号「7」は存在しない。したがって、データ送信先のプロセスはなし(ハイフン記号「-」で表記している)となる。
step=4の場合、データ送信先のプロセスのノード順プロセス番号は「4^5=1」である。したがって、データ送信先のプロセスの仮想ランク番号は「5」である。
step=6の場合、データ送信先のプロセスのノード順プロセス番号は「6^5=3」である。したがって、データ送信先のプロセスの仮想ランク番号は「3」である。
次に、全対全通信の各ステップにおけるプロセスp0~p6の通信を例示する。
step=0では、次の通信が実行される。なお、各プロセスによるデータの受信の説明を省略する。
プロセスp1は、時計回りの経路を用いてプロセスp5にデータを送信する。
プロセスp2は、プロセスp2にデータを送信する。
プロセスp4は、プロセスp4にデータを送信する。
プロセスp5は、反時計回りの経路を用いてプロセスp1にデータを送信する。
step=1では、次の通信が実行される。
プロセスp0は、プロセスp1にデータを送信する。
プロセスp2は、プロセスp3にデータを送信する。
プロセスp3は、プロセスp2にデータを送信する。
プロセスp5は、反時計回りの経路を用いてプロセスp0にデータを送信する。
プロセスp6は、データ送信を行わない。
プロセスp0は、反時計回りの経路を用いてプロセスp2にデータを送信する。
プロセスp1は、データ送信を行わない。
プロセスp3は、時計回りの経路を用いてプロセスp1にデータを送信する。
プロセスp4は、時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp6は、反時計回りの経路を用いてプロセスp4にデータを送信する。
step=3では、次の通信が実行される。
プロセスp1は、反時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp2は、時計回りの経路を用いてプロセスp1にデータを送信する。
プロセスp4は、データ送信を行わない。
プロセスp5は、時計回りの経路を用いてプロセスp2にデータを送信する。
図30は、仮想ランク番号に基づく全対全通信の例を示す図である。
step=4では、次の通信が実行される。
プロセスp1は、プロセスp1にデータを送信する。
プロセスp2は、反時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp4は、反時計回りの経路を用いてプロセスp0にデータを送信する。
プロセスp5は、プロセスp5にデータを送信する。
step=5では、次の通信が実行される。
プロセスp0は、時計回りの経路を用いてプロセスp5にデータを送信する。
プロセスp2は、データ送信を行わない。
プロセスp3は、反時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp5は、プロセスp4にデータを送信する。
プロセスp6は、時計回りの経路を用いてプロセスp3にデータを送信する。
プロセスp0は、反時計回りの経路を用いてプロセスp6にデータを送信する。
プロセスp1は、反時計回りの経路を用いてプロセスp3にデータを送信する。
プロセスp3は、時計回りの経路を用いてプロセスp5に送信する。
プロセスp4は、時計回りの経路を用いてプロセスp2にデータを送信する。
プロセスp6は、反時計回りの経路を用いてプロセスp0にデータを送信する。
step=7では、次の通信が実行される。
プロセスp1は、反時計回りの経路を用いてプロセスp2にデータを送信する。
プロセスp2は、時計回りの経路を用いてプロセスp5にデータを送信する。
プロセスp4は、時計回りの経路を用いてプロセスp3にデータを送信する。
プロセスp5は、時計回りの経路を用いてプロセスp6にデータを送信する。
このように、ノード11a0~11a3の一部が異なる数のプロセスを実行していても、CPU11はプロセス間の全対全通信を行える。
情報処理装置10において輻輳の発生を最も抑えられるのは、「ノード内に2の冪のプロセス数(1,2,4,8,16,…)が存在し、かつ、全てのノードにおいて、プロセス数が同じであること」という条件を満たすときである。第2の実施の形態の例は、当該条件を満たすケースである。ただし、当該条件を満たさなくても、ユーザなどにより予め用いられたランク番号を用いるよりも、輻輳の発生を抑えることができる。また、何れかのノードでコアの縮退などによりプロセス数が変化しても、仮想ランク番号を再決定することで、残りのプロセスで全対全通信を行って処理を継続できる。
図31は、並列処理システムの例を示す図である。
サーバ200は、CPU、RAMおよびHDD(Hard Disk Drive)やSSD(Solid State Drive)などの補助記憶装置を有し、共有ファイルシステム210を実現するサーバコンピュータである。
HPC分野では、並列計算のための規格としてMPIが用いられることが多い。並列処理システム100では、MPIプロセスを同時に多数実行することで、並列計算が実現される。大規模化によって、実行されるMPIプロセスの数は多くなるため、MPIプロセス間の通信性能が重要となる。情報処理装置10,10a,10b,10c,…により、各情報処理装置内のプロセス間の全対全通信を伴う処理を高速に実行でき、並列処理システム100全体の処理の高速化を図ることができる。
1a0,1a1,1a2,1a3 記憶部
1b 処理部
1b0,1b1,1b2,1b3 ノード
1b4 リングバス
P0,P1,P2,P3,P4,P5,P6,P7 プロセス
Claims (7)
- 複数のプロセスの各々に対して固有の仮想ランク番号を記憶する記憶部と、
プロセス間の全対全通信の初期設定時に、ハードウェア情報から各プロセスに固有のノード順プロセス番号を生成し、前記ノード順プロセス番号を基に各プロセスの前記仮想ランク番号を算出して前記記憶部に格納し、前記複数のプロセスにおけるプロセス間の全対全通信処理時に、前記記憶部に記憶された前記仮想ランク番号と全対全通信のステップ数とに基づく排他的論理和演算を行うことで現ステップにおける通信先のプロセスの前記ノード順プロセス番号を各プロセスに対して決定し、各プロセスに対して決定した、前記通信先のプロセスの前記ノード順プロセス番号を基に各プロセスの前記通信先のプロセスの前記仮想ランク番号を算出し、各プロセスに対して決定した、前記通信先のプロセスの前記仮想ランク番号に基づいて、各プロセスから前記通信先のプロセスに対する通信を行う処理部と、
を有する情報処理装置。 - 前記処理部は、前記複数のプロセスそれぞれによる前記通信の完了の同期を取る処理を行い、前記ステップ数をインクリメントする、請求項1記載の情報処理装置。
- 前記ハードウェア情報は、前記複数のプロセスを実行する複数のノードそれぞれのノード番号と、各ノードに含まれる複数のコアそれぞれのコア番号とを含み、
前記処理部は、前記複数のプロセスそれぞれが割り当てられたコアの前記コア番号を取得し、前記ハードウェア情報に基づいて、前記コア番号に対応する前記ノード番号の順に、前記コアに割り当てられたプロセスの前記ノード順プロセス番号を生成する、
請求項1記載の情報処理装置。 - 前記処理部は、
前記複数のプロセスを実行する複数のノードと、前記複数のノードが接続され、時計回りの第1通信路と反時計回りの第2通信路とを備えるリングバスと、を有し、
前記排他的論理和演算により各プロセスに対する前記通信先のプロセスを決定することで、前記第1通信路の一部の区間および前記第2通信路の一部の区間がプロセスの2以上の組の通信により共有されることを回避する、
請求項1記載の情報処理装置。 - 前記処理部は、
前記仮想ランク番号と前記ステップ数とに基づく第1の排他的論理和演算を行うことで現ステップにおけるデータ送信先のプロセスを各プロセスに対して決定し、
前記仮想ランク番号と前記ステップ数とに基づく第2の排他的論理和演算を行うことで現ステップにおけるデータ送信元のプロセスを各プロセスに対して決定し、
各プロセスによる前記データ送信先のプロセスへのデータ送信、および、前記データ送信元のプロセスからのデータ受信を実行する、
請求項1記載の情報処理装置。 - 前記処理部は、前記仮想ランク番号を算出した後に、前記複数のプロセスの数が減ると、残りのプロセスの前記ノード順プロセス番号および前記仮想ランク番号を更新する、請求項1記載の情報処理装置。
- コンピュータに、
複数のプロセスにおけるプロセス間の全対全通信の初期設定時に、ハードウェア情報から各プロセスに固有のノード順プロセス番号を生成し、前記ノード順プロセス番号を基に各プロセスの仮想ランク番号を算出して記憶部に格納し、
前記複数のプロセスにおけるプロセス間の全対全通信処理時に、前記記憶部に記憶された前記仮想ランク番号と全対全通信のステップ数とに基づく排他的論理和演算を行うことで現ステップにおける通信先のプロセスの前記ノード順プロセス番号を各プロセスに対して決定し、
各プロセスに対して決定した、前記通信先のプロセスの前記ノード順プロセス番号を基に各プロセスの前記通信先のプロセスの前記仮想ランク番号を算出し、
各プロセスに対して決定した、前記通信先のプロセスの前記仮想ランク番号に基づいて、各プロセスから前記通信先のプロセスに対する通信を行う、
処理を実行させる並列演算プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019212155A JP7440739B2 (ja) | 2019-11-25 | 2019-11-25 | 情報処理装置および並列演算プログラム |
US17/064,625 US11656920B2 (en) | 2019-11-25 | 2020-10-07 | Information processing apparatus and computer-readable storage medium storing parallel computing program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019212155A JP7440739B2 (ja) | 2019-11-25 | 2019-11-25 | 情報処理装置および並列演算プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021086178A JP2021086178A (ja) | 2021-06-03 |
JP7440739B2 true JP7440739B2 (ja) | 2024-02-29 |
Family
ID=75974916
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019212155A Active JP7440739B2 (ja) | 2019-11-25 | 2019-11-25 | 情報処理装置および並列演算プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US11656920B2 (ja) |
JP (1) | JP7440739B2 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115705247A (zh) * | 2021-08-16 | 2023-02-17 | 华为技术有限公司 | 一种运行进程的方法及相关设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090067334A1 (en) | 2007-09-12 | 2009-03-12 | Charles Jens Archer | Mechanism for process migration on a massively parallel computer |
US20100017420A1 (en) | 2008-07-21 | 2010-01-21 | International Business Machines Corporation | Performing An All-To-All Data Exchange On A Plurality Of Data Buffers By Performing Swap Operations |
US20110225226A1 (en) | 2010-03-11 | 2011-09-15 | International Business Machines Corporation | Assigning A Unique Identifier To A Communicator |
JP5056844B2 (ja) | 2007-03-20 | 2012-10-24 | 富士通株式会社 | 一意情報集団通信プログラム、計算ノード、および一意情報集団通信方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6038604A (en) * | 1997-08-26 | 2000-03-14 | International Business Machines Corporation | Method and apparatus for efficient communications using active messages |
JPH11110362A (ja) | 1997-10-01 | 1999-04-23 | Hitachi Ltd | 計算機間データ通信方法 |
US8065503B2 (en) * | 2006-12-15 | 2011-11-22 | International Business Machines Corporation | Iteratively processing data segments by concurrently transmitting to, processing by, and receiving from partnered process |
JP5532849B2 (ja) | 2009-11-20 | 2014-06-25 | 富士通株式会社 | コンピュータ、プロセス間通信プログラム、およびプロセス間通信方法 |
-
2019
- 2019-11-25 JP JP2019212155A patent/JP7440739B2/ja active Active
-
2020
- 2020-10-07 US US17/064,625 patent/US11656920B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5056844B2 (ja) | 2007-03-20 | 2012-10-24 | 富士通株式会社 | 一意情報集団通信プログラム、計算ノード、および一意情報集団通信方法 |
US20090067334A1 (en) | 2007-09-12 | 2009-03-12 | Charles Jens Archer | Mechanism for process migration on a massively parallel computer |
US20100017420A1 (en) | 2008-07-21 | 2010-01-21 | International Business Machines Corporation | Performing An All-To-All Data Exchange On A Plurality Of Data Buffers By Performing Swap Operations |
US20110225226A1 (en) | 2010-03-11 | 2011-09-15 | International Business Machines Corporation | Assigning A Unique Identifier To A Communicator |
Also Published As
Publication number | Publication date |
---|---|
US20210157658A1 (en) | 2021-05-27 |
US11656920B2 (en) | 2023-05-23 |
JP2021086178A (ja) | 2021-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7308003B2 (ja) | 非集中的な分散型深層学習 | |
US9535873B2 (en) | System, computer-implemented method and computer program product for direct communication between hardward accelerators in a computer cluster | |
JP5707265B2 (ja) | 演算制御装置及び演算制御方法並びにプログラム、並列プロセッサ | |
US10084860B2 (en) | Distributed file system using torus network and method for configuring and operating distributed file system using torus network | |
KR100423225B1 (ko) | 클러스터링된 컴퓨터 시스템을 위한 통합 프로토콜 | |
EP3228050A1 (en) | Network topology optimization | |
US10430375B2 (en) | Parallel computing system and communication control program | |
Tessier et al. | TAPIOCA: An I/O library for optimized topology-aware data aggregation on large-scale supercomputers | |
US11537443B2 (en) | Reconfigurable computing pods using optical networks | |
JPWO2008114440A1 (ja) | 一意情報集団通信プログラム、コンピュータ、一意情報集団通信方法、および記録媒体 | |
JP7440739B2 (ja) | 情報処理装置および並列演算プログラム | |
CN105302536A (zh) | MapReduce应用的相关参数的配置方法和装置 | |
US20170085439A1 (en) | Parallel information processing apparatus, method of determining communication protocol, and medium | |
JP2017033118A (ja) | 制御装置、制御プログラム、及び制御方法 | |
JP2010211458A (ja) | 計算機システム及びi/o制御方法 | |
US9329898B1 (en) | Method and apparatus for job management | |
JP2024510438A (ja) | コンピューティング・システムにおけるメモリ動作管理 | |
JP6874563B2 (ja) | 情報処理システム及び情報処理方法 | |
KR102610984B1 (ko) | 토러스 네트워크를 이용하는 분산 파일 시스템 및 토러스 네트워크를 이용하는 분산 파일 시스템의 운영 방법 | |
JP2019008650A (ja) | 情報処理システム、情報処理方法及び情報処理装置 | |
WO2024147258A1 (ja) | 並列処理プログラム,並列処理装置,並列処理方法及び並列処理システム | |
Myoupo et al. | On the Dynamic Replacement of Virtual Service Resources for Mobile Users in Virtual Networks. | |
JP6870487B2 (ja) | 情報処理システム及び情報処理方法 | |
JP2016038649A (ja) | 並列計算機システム及び並列計算機システムの制御方法 | |
JP2016130962A (ja) | データ退避制御方法、データ退避制御プログラム、及びデータ退避制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220708 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230905 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20231020 |
|
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: 20240116 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240129 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7440739 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |