Next:
Up:
Previous:
並列計算機上で動作するABCL/fプログラムを, 1台のCPUで実行した時の性能
を, 同じアルゴリズムの逐次版をC++で記述したものと比較した. ABCL/fの方
は, スレッドを生成する木の段数をいろいろかえて, それによりオーバーヘッ
ドの違いも調べた. また, 参考のために1プロセッサで動くことを前提として
プログラムを書いた時の性能も調べた. 使用した計算機は, SparcStation 10
(CPU SuperSparc 50Mhz, 80MB memory)である.
C++は並列実行のためのオーバーヘッドがない, 純粋な逐次プログラムである.
それに対してABCL/fは, 一つは1プロセッサ上で動作することを前提としたプ
ログラム(以下, 逐次版ABCL/f), 残りは, 複数プロセッサで動く実行可能ファ
イル(以下, 並列版ABCL/f)を1台で動かしているものである. 並列ABCL/fは,
C++に比べて 以下のようなオーバーヘッドを含んでいる.
- Future呼び出し時の生成およびreply boxの生成.
- メッセージのポーリング
- これまでに得られた解の更新のための排他制御
図5.4は, 種々の問題サイズ(
)に
対して, C++, 逐次ABCL/f, で, 実行時間を比べたものである. 問題の大きさ
によらず, 並列版ABCL/fが課すオーバーヘッドはC++プログラムに対して,
80% 程度である. 逐次版ABCL/fでは, 60% 程度になっている. また並列版
ABCL/fにおいて, futureを行なう深さを増やしてもほとんどオーバーヘッド
が増えていないことも注目に値する. つまりABCL/fの実装上の目標であった
ローカルなスレッド生成が実際に高速に行なわれていることがわかる.
図5.4: C++とABCL/fの実行時間の比較
Mitsubishi Research Institute,Inc.
Thu Feb 27 10:00:46 JST 1997