私はFortranで書かれたCFDコードを使用しています。 その一部はOpenMPと並列化されています。私がOpenMPを回して、WindowsのLinuxマシンで同じコンパイラオプション(-O3)を使用しても、私は別の結果を得ます。最適化(-O0)をオフにし、コンパイラオプションに-fp-modelソースを追加すると、2回の繰り返しステップの後にNaNしか表示されません。別の理由がありますか?彼らが同じであることを保証する)
ありがとう、 セバスチャン
P.S .:両方のマシンが同じインテルFortranコンパイラ2013を使用し、64ビットでインテルXeon CPUを搭載しています。
回答:
回答№1は1アルゴリズムと解像度に応じて、バグのないCFDコードは並列処理を有効にすることによって大幅に異なる結果を得ることができます。
HPMarkが示唆するように、小さな違いはプラットフォームを変更するときに予想されます。大きな違いは、コンパイラーやシステム固有のコードがいくつかあり、移植の作業が必要であることを示します。最適化レベルをDOWNにしたときに大きな問題が発生すると、メモリの不具合が発生する可能性があります。
このような混乱した状況に遭遇したときには、一度に1つだけ変更するように注意してください。