[SCore-users-jp] OMNI OpenMP 並列リージョン開始時の動作について

kameyama @ pccluster.org kameyama @ pccluster.org
2005年 7月 6日 (水) 20:29:41 JST


亀山です.

In article <20050706131225.F6AE.IKEGAMI @ hpc.cs.ritsumei.ac.jp> Kosai Ikegami <ikegami @ hpc.cs.ritsumei.ac.jp> wrotes:
> 現在、OMNI OpenMPを用いてJpegエンコーダ・デコーダを作成しています。
> これまで処理ステップごとに5回(*2)の並列リージョンを用いて並列化していま
> したが、実行時間の短縮を狙って1回(*2)の並列リージョンにまとめて実行した
> ところ、実行時間の差が
> 
> 1台:12.7秒 2台:0.5秒 4台:0.3秒 8台:0.1秒 16台:0.02秒
> 
> という結果が得られたのですが、1台実行時に大幅に時間が短縮されました。
> 1台実行時だけ大幅に時間が短縮される原因がわかりません。

全体の実行時間が不明なので, 何 % 短縮されているのか不明です.
また, ここで host の台数のみしか情報がありませんが,
1 台には CPU (プロセス) はいくつあるのでしょうか?
(1 CPU でしたら, 短縮されたのは OpenMP のオーバーヘッドということに
なりますが...)

> OMNI OpenMPでは並列リージョン開始時にマスタースレッドからスレーブスレッ
> ドへメモリのコピーが行われていると思うのですが、
> その内容は全スレッドが全データを受け取るのか、各スレッドが必要な分だけ
> データを受け取るのか、どちらでしょうか?

SCASH では, そのプロセスが同じ host にあるか, 異る host にあるかで
扱いが異ります.
同一の host の場合はデータを共有します.
異る host 上では page fault を使用して,
各プロセスがアクセスしようとしたときに, 必要なページを更新します.

                       from Kameyama Toyohisa



SCore-users-jp メーリングリストの案内