JP2001101145A - 分散メモリ型並列計算機におけるデータ転送方式 - Google Patents
分散メモリ型並列計算機におけるデータ転送方式Info
- Publication number
- JP2001101145A JP2001101145A JP27390399A JP27390399A JP2001101145A JP 2001101145 A JP2001101145 A JP 2001101145A JP 27390399 A JP27390399 A JP 27390399A JP 27390399 A JP27390399 A JP 27390399A JP 2001101145 A JP2001101145 A JP 2001101145A
- Authority
- JP
- Japan
- Prior art keywords
- data transfer
- data
- processes
- variable
- parallel computer
- 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.)
- Pending
Links
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
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)
Abstract
(重複割付変数)が存在し、その複数のプロセスのうち任
意のプロセスが重複割付変数にデータを代入する場合に
必要となるプロセス間のデータ転送処理を高速化するこ
と。 【解決手段】通信ネットワークにより接続された複数の
処理装置により複数のプロセスを実行する分散メモリ型
並列計算機においては、複数のプロセスのうちの少なく
とも1のプロセスを実行する各処理装置が、複数のプロ
セスに対し重複割付けされた変数に当該プロセスがデー
タを代入する場合に、代入されるデータの各プロセスへ
のデータ転送をスケジューリングするスケジューラと、
スケジューラに従って、通信ネットワークを介するデー
タ転送を行うデータ転送手段とを有する。適切なスケジ
ューリングによりデータ転送が高速化される。また自プ
ロセスへも通信ネットワークを介するデータ転送にて代
入処理を行っても良い。
Description
計算機であって、より詳しくは分散メモリ型並列計算機
により実行されるプロセス間のデータ転送技術に関す
る。
(Fortran)等のプログラムを高速に実行するた
め、メモリとCPU(Central Processing Unit)で構
成される複数のプロセッサ・エレメントを通信ネットワ
ークで接続した分散メモリ型並列計算機が使用される。
機は、複数のプロセスを並列に実行することができる。
しかし、複数のプロセスは独立に処理されるわけではな
い。例えば、複数のプロセスに対し重複割付けされた変
数(以下重複割付変数と呼ぶ。)が存在し、その複数の
プロセスのうち任意のプロセスが重複割付変数にデータ
を代入する場合には、全プロセスの重複割付変数のデー
タを同一化させる必要がある。この全プロセスへの同一
化を行うためにプロセス間のデータ転送処理を行わなけ
ればならない。
行われる場合に必要となるプロセス間のデータ転送処理
を高速化することを目的とする。
る、通信ネットワークにより接続された複数の処理装置
により複数のプロセスを実行する分散メモリ型並列計算
機においては、複数のプロセスのうちの少なくとも1の
プロセスを実行する各処理装置が、複数のプロセスに対
し重複割付けされた変数に当該プロセスがデータを代入
する場合に、代入されるデータの各プロセスへのデータ
転送をスケジューリングするスケジューラと、スケジュ
ーラに従って、通信ネットワークを介するデータ転送を
行うデータ転送手段とを有する。適切なスケジューリン
グによりデータ転送が高速化される。
スによるデータの代入処理として、代入されるデータ
を、通信ネットワークを介して当該プロセス自身に送信
するような構成とすることも可能である。重複割付けさ
れた変数が高次元配列変数の場合にはデータのアドレス
並びが複雑になる場合が多いので、メモリ転送でなく通
信ネットワークを介してのデータ転送が効率的である。
なお、データ転送手段を例えばパケット転送を行うもの
とすることが可能である。
が各プロセスへのデータ転送時に共通して用いる、デー
タ転送に関する情報を生成する生成手段をさらに有する
ような構成とすることも可能である。重複割付けされた
変数は、各プロセスで同じ構造を有しているという性質
を利用して、データ転送に関する情報を全プロセスへの
データ転送に利用するものである。
れるデータのベース・アドレス及びアドレス並び情報と
を含むようにすることも可能である。これにより各プロ
セスに転送されるデータを簡単に読み出すことができる
ようになる。また、送信先プロセスにおけるベース・ア
ドレス及びアドレス並び情報をさらに含むようにするこ
とも可能である。これにより、送信先プロセスでデータ
の格納を簡単に行うことができるようになる。アドレス
並び情報とは、例えば、配列要素間の移動距離(又はア
クセス長とも言う)と繰り返し回数(各次元の配列要素
数)を含む。
セスによるデータの代入処理として行われるデータ転送
をもスケジューリングするように構成することも可能で
ある。自プロセスへのデータ転送も、通信ネットワーク
を介したデータ転送にて行う場合には有効である。
プロセスに対し重複割付けされた変数にデータを代入す
る代入プロセスが複数存在する場合に、各代入プロセス
の送信先プロセスが重複しないようにスケジューリング
する構成とすることも可能である。送信先プロセスが重
複するとデータ転送処理が逐次化されるため非効率的
で、データ転送が全体として低速化するためである。
を付し、上で述べたスケジューラを、代入プロセスの識
別番号に基づき、複数のプロセスの識別番号の昇順又は
降順にて送信先プロセスを決定するように構成すれば、
送信先プロセスが重複せず、データ転送が高速化され
る。
ークにより接続された複数の処理装置により複数のプロ
セスを実行する分散メモリ型並列計算機のためのプログ
ラムは、複数のプロセスのうち少なくとも1のプロセス
を実行する各処理装置に、複数のプロセスに対し重複割
付けされた変数に、当該プロセスがデータを代入する場
合に、代入されるデータの各プロセスへのデータ転送を
スケジューリングするステップと、当該スケジューリン
グに従って、通信ネットワークを介するデータ転送を行
うよう命令するステップとを含む。
グラムに対しては、本発明の第1の態様に係る変形を適
用することができる。また、本プログラムは、例えばフ
ロッピー・ディスク、CD−ROM、光磁気ディスク、
半導体メモリ、ハードディスク等の記憶媒体又は記憶装
置に格納される。
00の一例を示す。分散メモリ型並列計算機100にお
いては、プロセッサ・エレメント3a、プロセッサ・エ
レメント3b、プロセッサ・エレメント3cが通信ネッ
トワーク1を介して接続されている。ここでは3つのプ
ロセッサ・エレメントのみを示されているが、これ以上
のプロセッサ・エレメントが接続されるような構成も可
能であるし、プロセッサ・エレメントが2個という構成
も可能である。各プロセッサ・エレメント3内には、通
信ネットワークを介しての通信を行う通信制御部31
と、通信制御部31に接続されたメモリ33およびCP
U35が含まれる。図1では、プロセッサ・エレメント
3a内の各構成要素にはaを、プロセッサ・エレメント
3b内の各構成要素にはbを、プロセッサ・エレメント
3c内の各構成要素にはcを付している。よって、プロ
セッサ・エレメント3a内には、通信制御部31a、メ
モリ33a、CPU35aが含まれている。プロセッサ
・エレメント3b内には、通信制御部31b、メモリ3
3b、CPU35bが含まれている。また、プロセッサ
・エレメント3c内には、通信制御部31c、メモリ3
3c、CPU35cが含まれている。
の各プロセッサ・エレメント3にはメモリ33が含まれ
ており、各プロセッサ・エレメント3内のCPU35は
メモリ33を用いて別個の処理を実施することができ
る。なお、典型的な例としては、各プロセスは1つのプ
ロセッサ・エレメントで実行されるが、1つのプロセッ
サ・エレメントが複数のプロセスを実行する場合もあ
る。
複数のプロセスに対し重複割付けされた変数(重複割付
変数)が存在し、関連を有する複数のプロセスのうち任
意のプロセスが重複割付変数にデータを代入する場合
に、関連を有する全プロセスのその重複割付変数のデー
タを同一化させるためのデータ転送処理に使用される。
但し、通信制御部31はこのような場合のみ使用される
ものではなく、例えば各プロセッサ・エレメント3の計
算結果を集計するため等にも使用される。
の配列演算等を実施する場合が多く、プロセッサ・エレ
メント3の間の通信でも、高次元の行列内の一部分のデ
ータを転送するといったことが生ずる。この配列内の一
部分のデータはメモリ33上では分散配置されており、
この分散配置されたデータを高速に転送することが必要
となる。本通信制御部31は、分散配置されたデータを
高速に転送することができるような構成となっている。
3内のCPU35が、メモリ33に、送信先プロセッサ
・エレメント名(又は送信先プロセス名)、転送サイ
ズ、送信元ベース・アドレス、送信元アドレス並び(読
み出すべきデータがどのような順番で並んでいるかのデ
ータ)、送信先ベース・アドレス、及び送信先アドレス
並び(どのような順番でデータを書き込むかのデータ)
を通信情報として書き込んだ場合に、送信側の通信制御
部31は、送信元ベース・アドレスから、送信元アドレ
ス並びに従って、送信すべきデータを読み出し、送信先
プロセッサ・エレメント名、転送サイズ、送信先ベース
・アドレス及び送信先アドレス並びをヘッダとするパケ
ットを作成する。そして、送信元の通信制御部31は、
このパケットを、通信ネットワーク1を介して送信先プ
ロセッサ・エレメントに送信する。
信制御部31は、パケットを受信すると、パケットのヘ
ッダに示された送信先ベース・アドレスから、送信先ア
ドレス並びに従って、受信したデータを、受信側のメモ
リ33に書き込む。これにて、プロセッサ・エレメント
3の間の通信は、例え転送すべきデータがメモリ上で分
散配置されていても高速に行われる。また、異なるプロ
セッサ・エレメント間の通信だけでなく、自プロセッサ
・エレメント宛てにパケットを送信することもできる。
なお、ここで述べた処理については特開平4−1671
91号公報に詳細に述べられている。
された変数にデータを代入する処理について説明する。
ここでは説明を簡単にするため、プロセッサ・エレメン
トは2つしかなく、各プロセッサ・エレメントでは1つ
のプロセスが実行されていることとする。すなわち、プ
ロセッサ・エレメント0ではプロセス0が、プロセッサ
・エレメント1ではプロセス1が実行されている。ま
た、重複割付変数は変数bであり、変数bはプロセス0
及び1に分散割付されている変数aからデータが代入さ
れるものとする。分散割付けとは、各プロセスにデータ
を分散させて処理していることを表す。
模式的に示す。ここで変数aは、縦が8(k=1からk
=8)、横が8(j=1からj=8)、高さが8(i=
1からi=8)の3次元配列である。この変数aはプロ
セス0とプロセス1に対し高さ方向で分散割付されてお
り、プロセス0には高さ1から4までの部分(i=1か
らi=4)が、プロセス1には高さ5から8までの部分
(i=5からi=8)が、それぞれ割付けられている。
図2中、実線で描いた直方体部分がそのプロセスに割付
けられたデータの部分を示している。プロセス0につい
ては変数aの上半分が割付けられており、プロセス1に
ついては変数aの下半分が割付けられているのが分か
る。
ータを模式的に示す。ここで変数bは、縦が8(k=1
からk=8)、横が8(j=1からj=8)、高さが8
(i=1からi=8)の3次元配列である。図3中、プ
ロセス0についての変数bのデータとプロセス1につい
ての変数bのデータは同じ形をしている。重複割付けさ
れているということは、各プロセスに同じデータ構造の
データが存在しており、データの内容も一致しているこ
とを意味している。
数aのデータを代入するプログラム(HPF:High Per
formance Fortran(ハイパフォーマンス・フォートラ
ン)のプログラム)の例を以下に示す。なお、左端の行
番号は、実施例の説明のためだけに付したものである。
いる。第02行では、プロセッサpを2つ定義してい
る。第03行では、整数の8×8×8の配列変数a及び
bを定義している。第04行では、8×8×8のテンプ
レートtを定義している。第05行は、テンプレートt
の一次元目の要素をブロックでプロセッサpに分散させ
ることを示している。プロセッサpはここでは2つであ
るから、8(テンプレートtの一次元目の要素数)/2
=4個ずつに分散させる。第06行は、2つのプロセッ
サpに分散させたテンプレートtの定義を配列変数aに
適用することを示している。ここで図2のように変数a
はプロセッサ・エレメント0(プロセス0)とプロセッ
サ・エレメント1(プロセス1)に分散割付けされる。
第07行では、非同期転送のための識別子IDを取得す
る。そして、この識別子IDによる非同期転送が、第0
8行と第10行の間の処理で行われる。第10行はプロ
セッサ・エレメント間のこのデータ転送をこの段階で保
証することを示している。第09行は、b(i,j,k)=a(i,
j,k)の繰り返しを示している。なお、iについて1から
8まで2ずつ加算、jについては1から8まで1ずつ加
算、kについては2から8まで2ずつ加算する。第11
行は、プログラムの終了を示している。このようなプロ
グラムは、各プロセス0及び1で実行される。
いる部分のうち、上のプログラムの第09行の代入処理
で用いられる配列要素を図4に示す。図4は図2の左側
に示した実線の直方体をij平面に平行に切り、k毎に
並べたものである。白丸は代入処理で用いられない要
素、黒丸は代入処理で用いられる要素を表す。各k毎に
(i=)4×(j=)8=32個のデータがあり、縦方
向がi=1からi=4まで変化し、横方向がj=1から
j=8まで変化する。
2から8まで2つおきであるから、k=1,k=3、k
=5、k=7については全く用いられない。よって白丸
のみである。一方、k=2,k=4、k=6及びk=8
の場合には、iについては1から8まで2つおきであり
且つjについては1から8まで1つずつであるから、i
=1とi=3の行は全て黒丸になる。
る部分のうち、上のプログラムの第09行の代入処理で
用いられる配列要素を図5に示す。図5は図4と同じよ
うに図2の右側に示した実線の直方体をij平面に平行
に切り、k毎に並べたものである。各k毎に(i=)4
×(j=)8=32個のデータがあり、縦方向がi=5
からi=8まで変化し、横方向がj=1からj=8まで
変化する。
2から8まで2つおきであるから、k=1,k=3、k
=5、k=7については全く用いられない。よって白丸
のみである。一方、k=2,k=4、k=6及びk=8
の場合には、iについては1から8まで2つおきであり
且つjについては1から8まで1つずつであるから、i
=5とi=7の行は全て黒丸になる。
列要素のうち、上のプログラムの第09行の代入処理で
代入される配列要素を図6に示す。図6は図3の左側に
示した立方体をij平面に平行に切り、k毎に並べたも
のである。白丸は代入されない要素、黒丸は代入される
要素を表す。各k毎に(i=)8×(j=)8=64個
のデータがあり、縦方向がi=1からi=8まで変化
し、横方向がj=1からj=8まで変化する。
で2つおきであるから、k=1,k=3、k=5、k=
7については全く用いられない。よって白丸のみであ
る。一方、k=2,k=4、k=6及びk=8の場合に
は、図4に示したようにi=1及びi=3について全て
のjであるから、i=1及びi=3の行は全て黒丸にな
る。
列要素のうち、上のプログラムの第09行の代入処理で
代入される配列要素を図7に示す。図7は図3の右側に
示した立方体をij平面に平行に切り、k毎に並べたも
のである。各k毎に(i=)8×(j=)8=64個の
データがあり、縦方向がi=1からi=8まで変化し、
横方向がj=1からj=8まで変化する。
で2つおきであるから、k=1,k=3、k=5、k=
7については全く用いられない。よって白丸のみであ
る。一方、k=2,k=4、k=6及びk=8の場合に
は、図5に示したようにi=5及びi=7について全て
のjであるから、i=5及びi=7の行は全て黒丸にな
る。
の第09行の変数aから変数bへの代入処理をまとめて
おく。プロセス0に割付けられた変数aの部分は図8左
上に実線で示したように、i=1からi=4までの部分
である(jkについては全て)。この部分をプロセス0
において処理される変数bに代入する。変数bについて
はijのみを示している。一方、プロセス1に割付けら
れた変数aの部分は図8右上に実線で示したように、i
=5からi=8までの部分である(jkについては全
て)。この部分をプロセス1において処理される変数b
に代入する。この変数bについてもijのみを示してい
る。但し、変数bは重複割付変数であるから、プロセス
0の変数bとプロセス1の変数bを同一化しなければな
らない。
じプロセッサ・エレメント内の処理であるから、メモリ
転送を行えば代入処理を実施することができる。しか
し、図4乃至図7で示したように、代入処理のために読
み出されるデータと、書き込み先は、メモリ上分散して
しまっている。よって、ブロック化された連続メモリ領
域を高速に処理できるベクトルメモリ転送等を使用する
と、ブロック毎に転送を行うことになり転送効率が悪く
なる。
変数bの同一化のためには、物理的に分離している他の
プロセスのメモリ空間へ、通信ネットワークを介してデ
ータ転送を行わなければならない。
ように、プロセス0に割付けられた変数aの部分のプロ
セス0の変数bへの代入処理、及びプロセス1に割付け
られた変数aの部分のプロセス1の変数bへの代入処理
についても通信ネットワークを介したデータ転送とす
る。先に述べたような通信制御部31があれば、メモリ
上分散配置されたデータをも高速に転送することができ
るのでデータ転送の効率化が図られる。図9に示した変
数aは各斜線部分が各プロセスに割付けられた部分であ
って、プロセス0についてはi=1からi=4まで(j
kについては全て)、プロセス1についてはi=5から
i=8まで(jkについては全て)である。なお、変数
bについてはijのみを示している。
転送は、同じく上で述べたような通信制御部31を用い
れば高速にデータを転送することができる。図9に示し
たように、プロセス0に割付けられた変数aのうち代入
処理に用いられるデータをプロセス1の変数bにデータ
転送し、プロセス1に割付けられた変数aのうち代入処
理に用いられるデータをプロセス0の変数bにデータ転
送する。すなわち、たすきがけのようにデータ転送が行
われる。図10にデータ転送後の変数a及び変数bのデ
ータの様子を模式的に示す。プロセス0に割付けられた
変数aの部分を表す斜線がプロセス0及び1の変数bの
上半分にコピーされており、同様にプロセス1に割付け
られた変数aの部分を表す斜線がプロセス0及び1の変
数bの下半分にコピーされていることが分かる。これに
より、代入処理及び同一化処理が完了する。
部分のうち代入処理に用いられるデータと、プロセス1
へデータ転送されるデータは同じである。また、プロセ
ス1に割付けられた変数aの部分のうち代入処理に用い
られるデータと、プロセス0へデータ転送されるデータ
は同じである。特に上で述べたように本発明では代入処
理でも自プロセスへのデータ転送とするため、各プロセ
スが用意すべきデータ転送用データは、全ての宛先に対
して共用が可能になる。
サ・エレメントは2つしかなかった。この場合には、通
信ネットワークを介してのデータ転送において、送信先
の衝突が生じてもたいした影響は無い。しかし、実際に
は多数のプロセッサ・エレメントに多数のプロセスが実
行されているわけであるから、任意プロセスへのデータ
転送が集中するおそれがある。このような場合には、デ
ータ転送処理が逐次化されて効率が悪い。これは1デー
タ転送あたりのデータ量が多いほど、効率の悪さが顕著
になる。
09行のような処理が実施される場合には、図11のよ
うな処理を各プロセスにて実施する。
する(ステップS103)。この送信元のデータ転送範
囲は、第09行の繰り返しの範囲(上で述べたプログラ
ムでは「i=1:8:2,j=1:8:1,k=2:8:2」)、変数aの各プ
ロセスに割付けられた部分、及び代入文(b(i,j,k)=a
(i,j,k))から計算することができる。なお、代入文b
(i,j,k)=a(i,j,k)を見ると取り出される変数a内の要素
位置と代入される変数b内の要素位置は同じであるか
ら、この例では代入文からの影響は無い。よって、プロ
セス0については、変数a(i,j,k)のi=1からi=3
まで1つおき、j=1からj=8まで1つずつ、k=2
からk=8の1つおきである。[i=1:3:2,j=1:8:1,k=2:
8:2]と表現できる。プロセス1については、変数a(i,
j,k)のi=5からi=7まで1つおき、j=1からj=
8まで1つずつ、k=2からk=8まで1つおきであ
る。[i=5:7:2,j=1:8:1,k=2:8:2]と表現できる。これ
らは図4及び図5に示したものと同じである。
(ステップS105)。受信先のデータ転送範囲は、代
入文(上で述べたプログラムの場合b(i,j,k)=a(i,j,
k))及び送信元のデータ転送範囲から計算することがで
きる。代入文b(i,j,k)=a(i,j,k)を見ると、取り出され
る変数a内の要素位置と代入される変数b内の要素位置
は同じであるから、この例では代入文からの影響は無
い。よって送信元のデータ転送範囲と同じになる。すな
わち、プロセス0については、変数a(i,j,k)のi=1
からi=3まで1つおき、j=1からj=8まで1つず
つ、k=2からk=8の1つおきである。[i=1:3:2,j=
1:8:1,k=2:8:2]と表現できる。プロセス1について
は、変数a(i,j,k)のi=5からi=7まで1つおき、
j=1からj=8まで1つずつ、k=2からk=8まで
1つおきである。[i=5:7:2,j=1:8:1,k=2:8:2]と表現
できる。これらは図6及び図7に示したものと同じであ
る。
びに変換する(ステップS109)。図4及び図5は配
列内の各要素を3次元配列であることが分かりやすくな
るように模式的に示したものである。実際にデータ転送
を行う場合には、配列の各要素を一次元に並べて、その
一次元の列の中でどの要素を読み出して転送するかとい
うデータが必要になる。これがアドレス並びの情報であ
る。
ための図を示す。この図12は、図4において、j=1
及びk=1とした時に、i=1からi=4までを読み出
し、j=2及びk=1とした時に、i=1からi=4ま
でを読み出し、j=3及びk=1とした時に、i=1か
らi=4までを読み出し、といった処理をj=1から8
まで、k=1からk=8まで繰り返した時の図である。
また図12は、図5において、j=1及びk=1とした
時に、i=5からi=8までを読み出し、j=2及びk
=1とした時に、i=5からi=8までを読み出し、j
=3及びk=1とした時に、i=5からi=8までを読
み出し、といった処理をj=1からj=8まで、k=1
からk=8まで繰り返した時の図でもある。図4と図5
とは、白丸及び黒丸の配置については同じなので、図1
2でも白丸と黒丸の関係はプロセス0とプロセス1でも
同じである。
示す。この数字の右及び図12の右端に示されている矢
印は、データが次の行へ連続していることを表すための
ものである。図4及び図5でも分かるように、kの値が
奇数の場合には全て白丸となっている。一方、kの値が
偶数の場合には、黒丸及び白丸が交互に現れる。上で述
べたように、iが1から4まで又は5から8まで4つ変
化するとjの値が変化する。jの値が変化するまでに、
黒丸は一つおきに2回現れる。よって、1次元目(i)
の移動距離は2(図12の*1)で、繰り返し回数は2
となる。また、jの値が変化した後の最初の黒丸と、j
の値が変化する前の最後の黒丸との距離が2次元目
(j)の移動距離となる。ここでは図12の*2で示し
たように、2次元目(j)の移動距離は2となる。また
●○●○の繰り返しはkが変化するまでに8回生じるの
で、2次元目(j)の繰り返し回数は8となる。さら
に、kの値が変化した後の最初の黒丸と、kの値が変化
する前の最後の黒丸との距離が3次元目(k)の移動距
離となる。ここではk=2の列の最後の黒丸からk=4
の最初の黒丸までに示したように、移動距離は34とな
る。k=2からk=8まで黒丸のある行とない行は4回
繰り返されるので、3次元目(k)の繰り返し回数は4
である。
報としては、一次元目(i)の移動距離2及び繰り返し
回数2、二次元目(j)の移動距離2及び繰り返し回数
8、三次元目(k)の移動距離34及び繰り返し回数4
が得られる。そして最初の黒丸のアドレスが、ベース・
アドレスとなる。このベース・アドレスとアドレス並び
の情報を得られれば、一次元に並べられた配列の要素の
うち、読み出すべき黒丸のアドレスを簡単に得ることが
できる。
送範囲をアドレス並びに変換する(ステップS10
9)。受信先アドレス並びの情報は、受け取ったデータ
を、一次元に並べられた、配列の要素のどの位置に書き
込むかということが簡単に分かるようにするための情報
である。
おける変数bのアドレス並びを図13を用いて説明す
る。この図13は、図6においてj=1及びk=1とし
てi=1からi=8までを並べ、j=2及びk=1とし
てi=1からi=8までを並べ、j=3及びk=1とし
てi=1からi=8までを並べ、といった処理をj=1
からj=8まで、k=1からk=8まで繰り返した場合
の図である。
は、各行においてどの範囲の配列の要素が示されている
かを表す。例えば、第1行目のj=1−4,k=1は、
j=1からj=4まででk=1の範囲であることを示し
ている。また、第2行目のj=5−8,k=1は、j=
5からj=8まででk=1の範囲であることを示してい
る。各行iについてはi=1からi=8まで全て含まれ
ている。この英数文字の右及び図13の右端の矢印は、
データが各行で連続していることを示している。
丸のみである。図13においてkは2行おきに変化する
ので、2行白丸のみの行が連続する。図13の第3行目
に示したように、i=1からi=8まででi=1及びi
=3の場合に黒丸が現れる。このi=1とi=3の距離
が、一次元目(i)の移動距離であり、図13の*1で
示すように移動距離2であることがわかる。また、jが
変化するまでに黒丸は2回しか現れないので、一次元目
(i)の繰り返し回数は2である。jが変化した後の最
初の黒丸とjが変化する前の最後の黒丸の距離が、二次
元目(j)の移動距離であり、図13の*2に示すよう
に移動距離6であることが分かる。●○●○○○○○の
繰り返し回数はkが変化するまで(図13の2行の間)
に8回あるので、二次元目(j)の繰り返し回数は8で
ある。さらに、kが変化した後の最初の黒丸からkが変
化する前の最後の黒丸までの距離が三次元目(k)の移
動距離で、ここでは70であることが分かる。この黒丸
が存在する行は4回同じように繰り返すので、三次元目
(k)の繰り返し回数は4である。
報としては、一次元目(i)の移動距離2及び繰り返し
回数2、二次元目(j)の移動距離6及び繰り返し回数
8、三次元目(k)の移動距離70及び繰り返し回数4
が得られる。そして最初の黒丸のアドレスが、ベース・
アドレスとなる。このベース・アドレスとアドレス並び
の情報を得られれば、一次元に並べられた配列の要素の
うち、書き込むべき黒丸のアドレスを簡単に得ることが
できる。
おける変数bのアドレス並びを図14を用いて説明す
る。この図14は、図7においてj=1及びk=1とし
てi=1からi=8までを並べ、j=2及びk=1とし
てi=1からi=8までを並べ、j=3及びk=1とし
てi=1からi=8までを並べ、といった処理をj=1
からj=8まで、k=1からk=8まで繰り返した場合
の図である。図14における表記法は図13と同じであ
る。
丸のみである。図14においてkは2行おきに変化する
ので、2行白丸のみの行が連続する。図14の第3行目
に示したように、i=1からi=8まででi=5及びi
=7の場合に黒丸が現れる。このi=5とi=7の距離
が、一次元目(i)の移動距離であり、図14の*1で
示すように移動距離2であることがわかる。また、jが
変化するまでに黒丸は2回しか現れないので、一次元目
(i)の繰り返し回数は2である。jが変化した後の最
初の黒丸とjが変化する前の最後の黒丸の距離が、二次
元目(j)の移動距離であり、図14の*2に示すよう
に移動距離6であることが分かる。○○○○●○●○の
繰り返し回数はkが変化するまで(図14の2行の間)
に8回あるので、二次元目(j)の繰り返し回数は8で
ある。さらに、kが変化した後の最初の黒丸からkが変
化する前の最後の黒丸までの距離が三次元目(k)の移
動距離で、ここでは70であることが分かる。この黒丸
が存在する行は4回同じように繰り返すので、三次元目
(k)の繰り返し回数は4である。
報としては、一次元目(i)の移動距離2及び繰り返し
回数2、二次元目(j)の移動距離6及び繰り返し回数
8、三次元目(k)の移動距離70及び繰り返し回数4
が得られる。そして最初の黒丸のアドレスが、ベース・
アドレスとなる。このベース・アドレスとアドレス並び
の情報を得られれば、一次元に並べられた配列の要素の
うち、書き込むべき黒丸のアドレスを簡単に得ることが
できる。
いてデータ転送情報を作成する(ステップS111)。
データ転送情報は、転送サイズ、送信元ベース・アドレ
ス、送信元アドレス並び、送信先ベース・アドレス、及
び送信先アドレス並びである。これらの情報は、アドレ
ス並びの情報を作成する際に全て得ることができるの
で、ここではまとめてプロセッサ・エレメント3のメモ
リ33内に格納する。これらの情報は各送信先プロセス
で共通している。よってデータ転送情報であるこれらの
情報については各データ転送で共用する。なお、送信先
プロセス名だけは共通していないので、別途リストとし
て保持する。なお、ここでは重複割付変数に関連するプ
ロセス及びそのプロセスを実行しているプロセッサ・エ
レメントは事前に分かっているものとする。
は、各プロセスに対応するデータ転送情報生成部11と
して機能する。
る(ステップS113)。同一化対象プロセスとは、こ
こではデータ転送の対象となる送信先プロセス数であ
り、自プロセスへも代入処理の代わりにデータ転送を行
うので自プロセスも含まれる。各プロセスには0からN
−1までの識別番号idが付されているものとする。そ
して、自プロセスの識別番号idを変数iに代入する
(ステップS114)。またiを1インクリメントする
(ステップS115)。もし、iが同一化対象プロセス
数N以上になった場合には(ステップS117)、i=
0とする(ステップS119)。もし、iが同一化対象
プロセスN未満である場合にはそのままステップS12
1に移行する。
トを作成する(ステップS121)。パケットは、送信
元ベース・アドレス及び送信元アドレス並びを用いて必
要なデータを読み出し、プロセスiの実行されているプ
ロセッサ・エレメントを宛先にして残りのデータ転送情
報でヘッダを構成すれば、作成できる。そして、通信制
御部31は通信ネットワーク1を介してプロセスiへの
データ転送を実施する(ステップS123)。
(ステップS125)。もし、iが自プロセスの識別番
号idと同じである場合には、処理を終了する(ステッ
プS127)。一方、iが自プロセスの識別番号idと
異なる場合にはステップS115に戻る。ここでは、自
プロセスへのデータ転送が行われるまで、ステップS1
15乃至S123が繰り返される。
125のうち通信制御部31の処理にあたるステップS
121及びS123を除く部分が、各プロセスに対して
スケジューリング部13として機能する。
しており、プロセスが3つ(識別番号0から2まで)あ
る場合には、プロセス0は、プロセス1、プロセス2、
プロセス0の順番でデータ転送を行い、プロセス1は、
プロセス2、プロセス0、プロセス1の順番でデータ転
送を行い、プロセス2は、プロセス0、プロセス1、プ
ロセス2の順番でデータ転送を行う。1つのプロセスを
実行するプロセッサ・エレメントが1つで送受信を同時
にできれば、送信先が衝突することが無いので、データ
転送の効率化が図れる。また、ここでは代入処理の代わ
りに行われる自プロセスへのデータ転送もスケジューリ
ングの対象になっている。
グ・アルゴリズムを示す図11は一例であって、例え
ば、図15のようにすることもできる。図15では、i
に自プロセスの識別番号idを代入する(ステップS1
31)。そして、通信制御部31を用いてデータ転送を
行う(ステップS133及びS135)。次に、iを1
インクリメントする(ステップS137)。1インクリ
メントされたiが同一化対象プロセス数N以上になって
いればi=0にする(ステップS139及びS14
1)。そして、iが自プロセスの識別番号idと同じに
なるまでステップS133乃至S141を繰り返す(ス
テップS125)。
転送が最初に行われるようになる。プロセスが3つ(識
別番号0から2まで)ある場合には、プロセス0は、プ
ロセス0、プロセス1、プロセス2の順番でデータ転送
を行い、プロセス1は、プロセス1、プロセス2、プロ
セス0の順番でデータ転送を行い、プロセス2は、プロ
セス2、プロセス0、プロセス1の順番でデータ転送を
行う。1つのプロセスを実行するプロセッサ・エレメン
トが1つで送受信を同時にできれば、送信先が衝突する
ことが無いので、データ転送の効率化が図れる。
る。図16では、iに自プロセスの識別番号idを代入
する(ステップS131)。そして、通信制御部31を
用いてデータ転送を行う(ステップS133及びS13
5)。次に、iを1デクリメントする(ステップS14
5)。1デクリメントされたiが0より小さくなればi
をN−1にする(ステップS147及びS149)。そ
して、iが自プロセスの識別番号idと同じになるまで
ステップS133乃至S149を繰り返す(ステップS
125)。
転送が最初に行われるようになり、さらに識別番号に対
して降順にデータ転送が行われる。プロセスが3つ(識
別番号0から2まで)ある場合には、プロセス0は、プ
ロセス0、プロセス2、プロセス1の順番でデータ転送
を行い、プロセス1は、プロセス1、プロセス0、プロ
セス2の順番でデータ転送を行い、プロセス2は、プロ
セス2、プロセス1、プロセス0の順番でデータ転送を
行う。1つのプロセスを実行するプロセッサ・エレメン
トが1つで送受信を同時にできれば、送信先が衝突する
ことが無いので、データ転送の効率化が図れる。
へのデータ転送を最後にするような変形も可能である。
図17に示すように、ステップS114でiに自プロセ
スの識別番号idを代入した後、iを1デクリメントす
る(ステップS151)。もし、1デクリメントされた
iが0より小さくなっていればiをN−1にする(ステ
ップS153及びS155)。そして通信制御部31が
プロセスiに対してデータ転送を行う(ステップS12
1及びS123)。ステップS151からステップS1
23をiが自プロセスの識別番号idになるまで繰り返
す(ステップS125)。
まで)ある場合には、プロセス0は、プロセス2、プロ
セス1、プロセス0の順番でデータ転送を行い、プロセ
ス1は、プロセス0、プロセス2、プロセス1の順番で
データ転送を行い、プロセス2は、プロセス1、プロセ
ス0、プロセス2の順番でデータ転送を行う。1つのプ
ロセスを実行するプロセッサ・エレメントが1つで送受
信を同時にできれば、送信先が衝突することが無いの
で、データ転送の効率化が図れる。
は上で述べたものに限定されず、各プロセスの転送先プ
ロセスが衝突しないようにするアルゴリズムであればよ
り効率的である。
ットワークを介したデータ転送を行うことにしていた
が、高速なメモリ転送等を使用するような変形も可能で
ある。この場合には、スケジューリング部13のスケジ
ューリング対象から自プロセスを削除し、スケジューリ
ング部13の処理の前又は後でメモリ転送等を実施す
る。例えば図11のスケジューリング部でステップS1
25ではi!=idを判断していたが、i!=id−1
とすることでスケジューリングの対象から自プロセスを
外すことができる。一方図16のように降順でプロセス
iに対してデータ転送を行う場合には、ステップS12
5でi!=id+1を判断すればよい。
これらの処理を実施するプログラムを作成することも可
能であるし、専用の回路を作成することも可能である。
これらの処理を実施するプログラムは、分散メモリ型並
列計算機のメモリに必要に応じて動的に呼び出される
が、図1に図示しないハードディスクや、磁気テープ、
フロッピー・ディスク、CD−ROM、DVD−RO
M、半導体ROM又はRAM等の記憶装置又は記憶媒体
に記憶されている。
る場合に必要となるプロセス間のデータ転送処理を高速
化することができた。
すブロック図である。
モリの様子を示した模式図である。
モリの様子を示した模式図である。
範囲を示すための模式図である。
範囲を示すための模式図である。
ータの範囲を示すための模式図である。
データの範囲を示すための模式図である。
変数a及び変数bの関係を模式的に示した図である。
図である。
示した模式図である。
した図である。
図である。
説明するための模式図である。
説明するための模式図である。
形1を示した図である。
形2を示した図である。
形3を示した図である。
グ部
Claims (8)
- 【請求項1】通信ネットワークにより接続された複数の
処理装置により複数のプロセスを実行する分散メモリ型
並列計算機であって、 前記複数のプロセスのうち少なくとも1のプロセスを実
行する各前記処理装置が、 前記複数のプロセスに対し重複割付けされた変数に前記
プロセスがデータを代入する場合に、代入される前記デ
ータの、各プロセスへのデータ転送をスケジューリング
するスケジューラと、 前記スケジューラに従って、前記通信ネットワークを介
するデータ転送を行うデータ転送手段と、 を有する、分散メモリ型並列計算機。 - 【請求項2】前記データ転送手段が、 前記プロセスによる前記データの代入処理として、代入
される前記データを、前記通信ネットワークを介して前
記プロセス自身に送信することを特徴とする請求項1記
載の分散メモリ型並列計算機。 - 【請求項3】各前記処理装置が、 前記データ転送手段が各プロセスへのデータ転送時に共
通して用いる、データ転送に関する情報を生成する生成
手段をさらに有する請求項1記載の分散メモリ型並列計
算機。 - 【請求項4】前記データ転送に関する情報が、 代入される前記データのベース・アドレス及びアドレス
並び情報とを含む、 請求項3記載の分散メモリ型並列計算機。 - 【請求項5】前記スケジューラが、 前記プロセスによる前記データの代入処理として行われ
るデータ転送をもスケジューリングすることを特徴とす
る請求項1記載の分散メモリ型並列計算機。 - 【請求項6】前記スケジューラが、 前記複数のプロセスに対し重複割付けされた変数にデー
タを代入する代入プロセスが複数存在する場合に、各前
記代入プロセスの送信先プロセスが重複しないようにス
ケジューリングすることを特徴とする請求項1記載の分
散メモリ型並列計算機。 - 【請求項7】前記複数のプロセスには各々識別番号が付
されており、 前記スケジューラが、 前記代入プロセスの識別番号に基づき、前記複数のプロ
セスの識別番号の昇順又は降順にて送信先プロセスを決
定することを特徴とする請求項6記載の分散メモリ型並
列計算機。 - 【請求項8】通信ネットワークにより接続された複数の
処理装置により複数のプロセスを実行する分散メモリ型
並列計算機のためのプログラムを格納した記憶媒体であ
って、 前記プログラムは、前記複数のプログラムのうち少なく
とも1のプロセスを実行する各前記処理装置に、 前記複数のプロセスに対し重複割付けされた変数に前記
プロセスがデータを代入する場合に、代入される前記デ
ータの、各プロセスへのデータ転送をスケジューリング
するステップと、 当該スケジューリングに従って、前記通信ネットワーク
を介するデータ転送を行うよう命令するステップと、 を実行させる、記憶媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27390399A JP2001101145A (ja) | 1999-09-28 | 1999-09-28 | 分散メモリ型並列計算機におけるデータ転送方式 |
US09/639,765 US6745233B1 (en) | 1999-09-28 | 2000-08-15 | Data transfer technique for distributed memory type parallel computer |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27390399A JP2001101145A (ja) | 1999-09-28 | 1999-09-28 | 分散メモリ型並列計算機におけるデータ転送方式 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2001101145A true JP2001101145A (ja) | 2001-04-13 |
Family
ID=17534189
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27390399A Pending JP2001101145A (ja) | 1999-09-28 | 1999-09-28 | 分散メモリ型並列計算機におけるデータ転送方式 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6745233B1 (ja) |
JP (1) | JP2001101145A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050015461A1 (en) * | 2003-07-17 | 2005-01-20 | Bruno Richard | Distributed file system |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
ATE89940T1 (de) * | 1986-04-02 | 1993-06-15 | Siemens Ag | Verfahren zum ansteuern eines gemeinsamen speichers eines aus einzelnen mikroprozessorsystemen bestehenden mehrprozessorsystems. |
JPH04167191A (ja) | 1990-10-31 | 1992-06-15 | Fujitsu Ltd | 分散メモリ型並列計算機における高速データ転送方式 |
US5386566A (en) * | 1991-03-20 | 1995-01-31 | Hitachi, Ltd. | Inter-processor communication method for transmitting data and processor dependent information predetermined for a receiving process of another processor |
JP3411641B2 (ja) | 1993-10-19 | 2003-06-03 | 富士通株式会社 | 高次元配列処理方法 |
GB2284494B (en) * | 1993-11-26 | 1998-09-09 | Hitachi Ltd | Distributed shared memory management system |
US5566349A (en) * | 1994-05-16 | 1996-10-15 | Trout; Ray C. | Complementary concurrent cooperative multi-processing multi-tasking processing system using shared memories with a minimum of four complementary processors |
JPH09204403A (ja) * | 1996-01-26 | 1997-08-05 | Hitachi Ltd | 並列計算機 |
US5987506A (en) * | 1996-11-22 | 1999-11-16 | Mangosoft Corporation | Remote access and geographically distributed computers in a globally addressable storage environment |
US6418517B1 (en) * | 1997-08-29 | 2002-07-09 | International Business Machines Corporation | Optimized function execution for a multiprocessor computer system |
US6167437A (en) * | 1997-09-02 | 2000-12-26 | Silicon Graphics, Inc. | Method, system, and computer program product for page replication in a non-uniform memory access system |
US6490661B1 (en) * | 1998-12-21 | 2002-12-03 | Advanced Micro Devices, Inc. | Maintaining cache coherency during a memory read operation in a multiprocessing computer system |
US6295553B1 (en) * | 1998-12-22 | 2001-09-25 | Unisys Corporation | Method and apparatus for prioritizing delivery of data transfer requests |
US6167489A (en) * | 1998-12-22 | 2000-12-26 | Unisys Corporation | System and method for bypassing supervisory memory intervention for data transfers between devices having local memories |
-
1999
- 1999-09-28 JP JP27390399A patent/JP2001101145A/ja active Pending
-
2000
- 2000-08-15 US US09/639,765 patent/US6745233B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6745233B1 (en) | 2004-06-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11016930B2 (en) | Digital processing connectivity | |
US8117288B2 (en) | Optimizing layout of an application on a massively parallel supercomputer | |
AU667797B2 (en) | Generating communication arrangements for massively parallel processing systems | |
KR20040004542A (ko) | 다차원 고속 푸리에 변환 구현 방법, 시스템 및 프로그램기억장치와 다차원 어레이 재배치를 수행하기 위한 방법,시스템 및 프로그램 기억 장치 | |
EP0466862A1 (en) | System for interconnecting router elements with parallel computer | |
JPH06243113A (ja) | 並列計算機における計算モデルのマッピング法 | |
Yeh et al. | Macro-star networks: efficient low-degree alternatives to star graphs | |
CN1770745A (zh) | 使用设备向量能够路由多播数据分组的集成电路 | |
JP6597105B2 (ja) | 並列情報処理装置、通信手順決定方法及び通信手順決定プログラム | |
Scherson et al. | Least common ancestor networks | |
CN117176638A (zh) | 一种路由路径确定方法及相关组件 | |
Kumar et al. | Scaling all-to-all multicast on fat-tree networks | |
JP2001101145A (ja) | 分散メモリ型並列計算機におけるデータ転送方式 | |
Lam et al. | Optimal algorithms for all-to-all personalized communication on rings and two dimensional tori | |
Greenberg et al. | Routing multiple paths in hypercubes | |
JP2020126487A (ja) | 並列処理装置、データ転送先決定方法およびデータ転送先決定プログラム | |
Loch et al. | Sparbit: a new logarithmic-cost and data locality-aware MPI Allgather algorithm | |
US20030046512A1 (en) | Parallel computer system and method for assigning processor groups to the parallel computer system | |
US5561805A (en) | System for selectively packing together datablocks and efficiently routing independent of network topology in a parallel computer system in accordance with a selected numbering system | |
Hong et al. | Bandwidth-aware resource allocation for computing independent tasks in heterogeneous computing systems*. | |
Santos et al. | Efficient simulation based on sweep selection for 2-d and 3-d ising spin models on hierarchical clusters | |
Al-Anzi et al. | Improved parallel cell placement algorithm using bounded edge-width routing model | |
Merry et al. | A constant time algorithm for the channel assignment problem using the reconfigurable mesh | |
auf der Heide et al. | Deterministic Routing With Bounded Buffers: Turning Offline Into Online Protocols. | |
JP2002207648A (ja) | 並列計算機の識別番号変換方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060424 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080215 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080219 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080418 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090707 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20091110 |