Next: Up: Previous:

並列化

流体力学の解析計算に ABCL/f のような並列オブジェクト指向言語を用いる場合, 図5.5に示すように,

figure421

                     図5.5: 1つの並列オブジェクトが1つのセルに対応
1つのセルを1つのオブジェクトとして定義する手法が 最も単純なものと考えられる. 各セル(並列オブジェクト)に対して, 圧力・密度等の物理量を計算するメソッドを起動する. それぞれのメソッドでは, いくつかの値を隣接するセルのオブジェクトから得る必要がある. そのようなものついては, 必要になった時点で 値を得ることとなる. 図5.6に Newton-Raphson法による収束計算の1回分を示す.

figure429

                     図5.6: 並列オブジェクトのPEへの割付と計算
図5.6に示すように ある連続する3つの並列オブジェクト(=セル)がそれぞれ PEのl番目, m番目, n番目に割り付けられているとする. 収束計算のためのループ内では, 以下の順に値を計算する.
  1. tex2html_wrap_inline1250 を求める
    前時刻の計算結果と 前回の収束のための計算の結果を用いて計算が行なわれる. したがって, すべてのセルにおいて並列に計算が実行できる.
  2. tex2html_wrap_inline1252 を求める
    前時刻の計算結果, 前回の収束のための計算の結果と 直前に計算された 同一セルの tex2html_wrap_inline1250 の値, および隣接するセルの tex2html_wrap_inline1256 の値を用いて計算が行なわれる. したがって, すべてのセルにおいて並列に計算が実行できるが, 同一セルの tex2html_wrap_inline1250 と, 隣接するセルの tex2html_wrap_inline1256 は計算が終了していなければならない.
  3. tex2html_wrap_inline1262 を求める
    前時刻の計算結果, 前回の収束のための計算の結果と 直前に計算された 同一セルの tex2html_wrap_inline1252 の値, および隣接するセルの tex2html_wrap_inline1266 の値を用いて計算が行なわれる. したがって, すべてのセルにおいて並列に計算が実行できるが, 同一セルの tex2html_wrap_inline1252 と, 隣接するセルの tex2html_wrap_inline1266 は計算が終了していなければならない.
  4. tex2html_wrap_inline1272 を求める
    前時刻の計算結果, 前回の収束のための計算の結果と 直前に計算された 同一セルの tex2html_wrap_inline1274 の値を用いて計算が行なわれる. したがって, すべてのセルにおいて並列に計算が実行できるが, 同一セルの tex2html_wrap_inline1274 は計算が終了していなければならない.
計算の終了後 前回の収束のための計算の結果と比較し, 差(絶対値)がある決められた値よりも小さければ収束したとみなし, ここでの計算結果をその時刻での値とする. そうでなければ, さらに収束のための計算を繰り返す.

さて, 1つのセルを1つのオブジェクトとして定義した場合に, ある1つのセル(=1つの並列オブジェクト)において, 隣接するセル(他の並列オブジェクト)から計算のために 必要な値を得るための通信処理時間が 全処理時間の多くを占めてしまう場合がある. つまり, 各セルにおいて実行される計算が比較的単純である場合, 計算処理にかかる時間はわずかであり, それと同等かそれ以上の通信処理時間を費やして 隣接セルから必要な値を通信により得るのである.

そこで, 計算処理時間が通信処理時間よりも十分に大きくする方法として, 図5.7 に示すような, 複数のセルを1つのオブジェクトとして定義することが考えられる. この場合には, 複数のセルを1つの並列オブジェクトとして定義し, 物理量ごとに配列(ベクトル)を用いる. 通常, FORTRAN などで用いられる方法と同様である. 図5.8に Newton-Raphson法による収束計算の1回分を示す.

figure457

                     図5.7: 1つの並列オブジェクトが複数のセルに対応

figure464

                     図5.8: 並列オブジェクトのPEへの割付と計算
複数のセルを1つのオブジェクトとした場合にも, 両端のセルについて計算する時には, その隣接するセルの値が必要となるので, 他のオブジェクトから必要な値を得なければならない. そのために1つのオブジェクトが必要な通信処理時間は, 1つのセルを1つのオブジェクトとした場合と同等であり, 計算処理時間は, 複数セルにした分だけ比例して増える. したがって, 1つのオブジェクトに多くのセルを定義すれば, 相対的に通信処理時間は小さくなる.

また, 並列オブジェクトの参照において, その並列オブジェクトが同一PEに存在していた場合には PE間の通信処理は必要なくなる. しかし, 配列に対する参照に比べると他のオブジェクトに対する参照の方が 多くの処理を必要とする. したがって, たとえ1つのPE で実行する場合においても N個のセルをN個の並列オブジェクトで表現するより N個のセルを配列で表現する方がよい.



Mitsubishi Research Institute,Inc.
Mon Feb 24 13:38:59 JST 1997