Subject | : Re: bench2.sadの計算で微妙に異なる結果が? |
Date | : 2008/02/13(Wed) 18:04:25 |
Contributor | : Akio Morita |
> 自宅のPowerMacG5でコンパイルしたSADで、bench2.sadの計算から、微妙に異なる結果が出ます。 > 以下に示しますが、特に目立つのは、Emittance関数の計算結果とダイナミックアパーチャサーベイのスコアです。 > コンパイル時に使用したsad.confを示すので、エキスパートのご指摘をお願いします。 > 微妙に異なる結果がでるとのことですが、なにと比較したかの条件が明示されてないので 誰も追試できないと思うのですが? 少なくとも、追試や解析には比較した2者の o SADのソース o コンパイル条件 o CPUアーキテクチャー o OS に関する情報は最低限必要かと思われます 仮に同一のソースを使っているとして、すぐに思い当たる要因としては... o コンパイル条件やコンパイラが異なる場合 -コードの最適化に伴う動作変化(言語仕様的に動作が実装依存又は未定義なコードが存在する場合) @最適化オプションにはIEEE754を破るものも存在します -コンパイラのデフォルトオプションの違い -コンパイラのバグ o CPUアーキテクチャー/OSが異なる場合 -浮動小数点演算の精度・丸め・内部表現が異なる -浮動小数点演算での例外処理が異なる @CPUが複数の精度・丸めをサポートする場合、OS・コンパイラ間で初期設定が異なる場合があるので要注意 @最近のCPUでは、内部表現はIEEE754を採用しているものが多いのでメモリー上の表現形は統一されていますが CPU内で保持される演算途中の中間結果の表現がメモリー上と異なる実装も存在するので要注意 (例: Intel i387 FPU 中間結果は拡張倍精度(80bit)で保持し、出力するまで単・倍精度に丸めない) などが挙げられます > また、曜日がずれるのは自宅でもofficeでも同様です。 > 曜日がずれるとはどの様な意味でしょうか? SADの起動メッセージで表示される曜日は、idate()で得られる{year,month,day}から計算しているはずですが idate()からの戻り値とローカルタイムでの日付は整合していますか? 整合しない場合、タイムゾーン設定の不備か idate()の実装上の問題が考えられます #同時に表示している時刻と日付は異なるサブルーチンを経由しているので、独立した問題です