VisualC++コンパイラの最適化で奇妙な状況に直面しています。
10個の静的ライブラリを危険にさらす中規模のc++コードでは、最適化をオン(/ O1、/ O2、または/ Ox)にしてコードをコンパイルすると、プログラムを実行すると正しい出力が生成されます。
ただし、/ Odを使用すると、プログラムは誤った出力を生成します。
私はこの質問が非常に一般的であることを知っていますが、原因が何であるか、またはそれが何に関連している可能性があるかについての手がかりを感謝します。
psコードはFEM数値を実行しているため、浮動小数点演算の多くが実行されます。psコードはVisualStudio2010にあります。
編集:コードの出力例:
r(残差)の差はかなり大きい
I.最適化なし:
Solver. time: 0.12, iteration: 1
Solver.
------------------------------------
determining values:
dg. 0
limit of dg. 0.897278
dr. 7675.3
limit of dr. 45.3704
r. 7675.3
limit of r. 453.704
dx. 0.122164
limit of dx. 8.97278e-005
------------------------------------
II。最適化あり:
Solver. time: 0.12, iteration: 1
Solver.
------------------------------------
determining values:
dg. 0
limit of dg. 0.897278
dr. 5894.53
limit of dr. 45.3704
r. 5894.53
limit of r. 453.704
dx. 0.122164
limit of dx. 8.97278e-005
------------------------------------
psコード自体のサンプルを提供することはできませんが、bcsコードのどこから問題が発生しているのかは実際にはわかりません。