[SCore-users-jp] 計算ホストの台数によって計算誤差が変わる?

Mitsuhisa Sato msato @ is.tsukuba.ac.jp
2002年 11月 23日 (土) 01:13:48 JST


さとう@筑波大です。

後者のことはわかりかねねますが、ラプラス方程式はステップごとに
残差を計算して、それが適当な値になるまで繰り返すプログラムだと
おもいます。その残差を計算するのにMPIReduceというMPIの関数を
つかいますが、そのときに計算の順序が不定になるのは結構知られた
話で、計算の順序が違うと計算結果が若干違うためこのような結果になります。

解としては、自分でReductionのルーチンをかく(つまり、全部集めて、
きて、それを一定の順序で計算する)か、この程度のことは気にしない
ということですね。

このReductionの順序については、結構MPIでも議論されましたが、
結局は、不定のままということになっているようですね。

さとう。

At 11:50 02/11/22 +0900, Keizo Hayashi wrote:
>林敬三@綜合技術コンサルタントと申します。
>よろしくお願いします。
>
>SCore5.2で並列計算を実行させたとき、計算ホストの台数に
>よって計算結果が変わることがあり、疑問に思いましたので
>質問させていただきます。
>
>具体的には、共立出版の「Linuxで並列処理をしよう」という
>書籍で紹介されている、2次元ラプラス方程式を差分法で解く
>プログラムを実行したとき、
>計算ホストが1台の場合、計算結果(計算回数)は 1324、
>計算ホストが2台の時も同様に結果は 1324 となりますが、
>計算ホストが3台の場合だと、結果が 1323 となります。
>
>それから、三角関数やべき乗を多用した計算を繰り返す簡易な
>テストプログラムでも検証してみたところ、倍精度型の場合、
>有効数字11〜12桁のレベルですが計算ホストの台数によって
>計算結果がわずかに異なることがありました。
>
>そこで質問というのは、
>・ 計算ホストの台数に起因する計算誤差はあるのだろうか
>・ 台数が増えれば増えるほど、誤差も大きくなってしまうのだろうか
>というものです。
>
>上記の内容によっては、大規模な計算を行ったとき、誤差が蓄積
>されて、単一CPU+普通のプログラムの計算結果とSCoreクラスタ
>システム+並列化(mpi化された)プログラムの計算結果がかけ離
>れてしまう可能性があるのではないか?
>という点が気になります。
>
>原因として、ハードウェア、OS、コンパイラ、MPIライブラリ、プログラム
>の書き方、などいろいろありそうですが、どのような情報でも結構です
>ので、ぜひ教えていただきたく思います。
>
>簡単ですが使用環境は以下の通りです。
>サーバ専用ホスト1台+計算ホスト3台(全4台)
>計算ホスト台数は、scrunコマンドでノード数を指定することにより
>切り替えています。
>ソフトウェアは、Redhat Linux7.3+SCore5.2の構成です。
>
>では、以上よろしくお願いいたします。
>=================================
>(株)綜合技術コンサルタント IT管理室
>林 敬三   k-hayashi at sogo-eng.co.jp
>=================================
>_______________________________________________
>SCore-users-jp mailing list
>SCore-users-jp @ pccluster.org
>http://www.pccluster.org/mailman/listinfo/score-users-jp




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