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++に比べて 以下のようなオーバーヘッドを含んでいる.

図5.4は, 種々の問題サイズ( tex2html_wrap_inline587 )に 対して, C++, 逐次ABCL/f, で, 実行時間を比べたものである. 問題の大きさ によらず, 並列版ABCL/fが課すオーバーヘッドはC++プログラムに対して, 80% 程度である. 逐次版ABCL/fでは, 60% 程度になっている. また並列版 ABCL/fにおいて, futureを行なう深さを増やしてもほとんどオーバーヘッド が増えていないことも注目に値する. つまりABCL/fの実装上の目標であった ローカルなスレッド生成が実際に高速に行なわれていることがわかる.

figure125

     図5.4: C++とABCL/fの実行時間の比較 


Mitsubishi Research Institute,Inc.
Thu Feb 27 10:00:46 JST 1997