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

Kosai Ikegami ikegami @ hpc.cs.ritsumei.ac.jp
2005年 7月 7日 (木) 01:58:53 JST


亀山様、さとう様、ご返信ありがとうございます。
立命館大学の池上です。

>>現在、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台実行時(通常こういう使い方はしないと思いますが・・・)では
オーバーヘッドが大きいということでしょうか?


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

>開始時は、マスタスレッド側のスタックから共有される局所変数をコピーして
>います。共有されるグローバルなデータはページにアクセスした時にSCASHで
>コピーされます。
>  
>
必要なページだけがコピーされるのであれば、データ分割を行う場合
実行台数が増えればコピーされる範囲が減るということでしょうか。
入力データのサイズに比例して実行時間の差も変化しているのである程度納得で
きるかと思います。

よろしくお願いします。


++
立命館大学 高性能計算研究室
池上広済
ikegami @ hpc.cs.ritsumei.ac.jp



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