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

kameyama @ pccluster.org kameyama @ pccluster.org
2005年 7月 7日 (木) 10:25:44 JST


亀山です.

In article <42CC0DCD.5000209 @ 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台:57.86秒 2台:29.20秒 4台:14.65秒 8台:7.36秒 16台:3.73秒
> 単一の並列リージョン版で
> 1台:45.15秒 2台28.60秒 4台:14.36秒 8台:7.22秒 16台3.70秒
> となっています。
> 
> >1 台には CPU (プロセス) はいくつあるのでしょうか?
> >(1 CPU でしたら, 短縮されたのは OpenMP のオーバーヘッドということに
> >なりますが...)
> >  
> >
> PCクラスタの構成は、シングルCPUのPCを用いて、
> サーバーホスト -Pentium3-450MHz -256MB SDRAM
> 計算ホスト    -Pentium3-500MHz -512MB SDRAM
> サーバーホストと計算ホスト間は100BASEのEthernet
> 計算ホスト間はMyrinet-2000で接続しています。
> 
> 1台で22%の短縮、2台以上で約2%の短縮となっています。
> 1台実行時(通常こういう使い方はしないと思いますが・・・)では
> オーバーヘッドが大きいということでしょうか?

SCASH で使用する場合. 原則として, スレッドの数は
CPU の数に等しくなります.
つまり, 1 台 (= 1 CPU = 1 スレッド) のときは,
結果的に OpenMP の処理部分全部がすべてオーバーヘッド
であると考えられます,

> >>OMNI OpenMPでは並列リージョン開始時にマスタースレッドからスレーブスレッ
> >>ドへメモリのコピーが行われていると思うのですが、
> >>その内容は全スレッドが全データを受け取るのか、各スレッドが必要な分だけ
> >>データを受け取るのか、どちらでしょうか?
> >>    
> >>
> >
> >SCASH では, そのプロセスが同じ host にあるか, 異る host にあるかで
> >扱いが異ります.
> >同一の host の場合はデータを共有します.
> >異る host 上では page fault を使用して,
> >各プロセスがアクセスしようとしたときに, 必要なページを更新します.
> >
> 
> >開始時は、マスタスレッド側のスタックから共有される局所変数をコピーして
> >います。共有されるグローバルなデータはページにアクセスした時にSCASHで
> >コピーされます。
> >  
> >
> 必要なページだけがコピーされるのであれば、データ分割を行う場合
> 実行台数が増えればコピーされる範囲が減るということでしょうか。

そうなると思います.

                       from Kameyama Toyohisa



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