- ベストアンサー
数値計算の結果がハードウェア構成によって異なることはあるか?
同じ工業用のシミュレーションソフトである数値計算をさせた場合に同じOSでハードウェア構成の異なる(メモリ・CPU等)PCで若干異なるの計算結果が出でてくる事例がありうるかどうかと考えられる原因をお教えくださると助かります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
再度の回答になってしまい、すみません。 「微妙な差であることが多い」とのことですので、おそらく離散化誤差などの処理の度ごとの違いが、結果の違いになっていると思われます。 ただ、1割未満でも、5%程度の差があるようであれば、それなりに大きな差とも言えますので、たとえば自動的に離散化しているところの、離散化単位を手動で小さくできる機能はないかなど、お調べになってみてもいいかもしれません。 また、メモリの件ですが、一般的にはマトリクスを解く上で、実メモリ上ですべてのマトリクスを展開できたほうが、効率がいいわけです。しかし、大規模計算の場合ハードディスクに一時的に退避させる必要があることもあるので、こういう処理を自動で行っているソフトも多いと思われます。 ただ、この際にアラート表示(メモリが足りないのでハードディスクを使いますが、処理が遅くなりますよといったようなもの)が出るものと、出ないものがあるので、出ないものの場合には、少し注意が必要なこともあります。 特に、直接法で解いているときは、途中経過を渡しても、そのマトリクスを順に解いているので、そんなに変わらないのですが、間接法で解いているときは、片っ端から代入してるだけのようなものなので、その途中経過をハードディスクに保存して、それを参照しながら続きの計算をする場合に、厳密でないソフトウェアでは、適当に当たっていない数値を代入して再開することもあると思います。その場合、代入して解けたものを正として、計算を続けていくので、2つ以上の解があった場合にどちらの数値をとったかで、結果に影響が出ることも考えられるわけです。 以上、専門家の方のようなので、よくご存知の内容かもしれませんが、ご参考までに。
その他の回答 (2)
- uskt
- ベストアンサー率49% (361/733)
コンピュータシミュレーションでは、多くの場合、形状やシミュレーション環境を、数式に置き換えます。この場合に、全体を何らかの形で計算単位に分割して、それぞれ計算を行っていくと思うのですが、ハードウェア構成の違いで、計算できる量が異なってくる場合があるので(実メモリにしか計算途中の結果を保持できないなど)、結果も異なってくる可能性があります。 また、形状を数式に置き換える、離散化処理の際の、開始場所が違っていると、結果に微妙に影響することも考えられます。 ただ、いずれの場合も、大規模な計算でない限りは、1割以内の数値の差の範囲で収まると思われますので、それ以上ということであれば、何か別の要因も考えられます。 非常に稀な例ですが、N社のワークステーションに、純正ではなくサードパーティー製のメモリを搭載したところ、エラーで終了してしまうという問題を経験したことが、一度だけあります。
お礼
もちろん、形状を置き換える際などの処理事態の違いはわかりますし、微妙な差であることが多いのですが、 「実メモリにしか計算途中の結果を保持できない」 こういう場合はやはり存在するのですね。メモリによってソフトが挙動を かえるようにそもそも設計されている場合が一般的にあるのでしょうか。 ありがとうございます。
- FEX2053
- ベストアンサー率37% (7991/21371)
本当にバージョンまで同じOSならば、OSがハードウエアの差を吸収しますので、 同じ結果になるはずなんですが・・・ でも、例えば同じWinXPでも64Bit版と32Bit版では、CPUの処理ロジックが 違いますので、フローティング計算で同じ結果が出るとは限らないかと。 つか、64Bit版と32Bit版だと、そのソフトそのもののロジックが違ってる 可能性がありますよね。また、I/Fが違うと入力データに差が出ますので、 そっちの差が出たのかも。 ハードウエアの正確な型番、OSのビルドまで含めた正確なバージョン、 使ってるソフトの製品名とバージョン、行った計算の内容が分からないと なんとも言えないと思いますよ。
お礼
もちろん、最後の点は了解しているのですが、64bitと32bitではありそうですね。I/Fによる差は考えたことがありませんでした。なるほど。
お礼
ありがとうございます。やはりHDDに退避させるだんかいで結果に影響がある可能性があるわけですね。特に代入して解いている場合というのはまさに当てはまります。2度にわたり。大変ご丁寧にありがとうございます。