私が取り組んでいる Fortran で書かれた熱水力学のコードがあります。私のデバッグ バージョンでは、-check bounds
コンパイル時に ifort 11.1 のオプションを使用します。過去にこの方法で配列境界エラーをキャッチしました。しかし最近、特定のケースでソリューションが急速に爆発しているのを見ました。奇妙な点は、コードのリリース バージョンでうまく収束していたことです。案の定-check bounds
、デバッグ makefile からフラグを削除すると問題が解決しました。
奇妙なことは、以前に使用した他の多くのテスト ケースでデバッグ バージョンが正常に動作し、コード内の配列境界の外に出てもエラーが発生しなかったことです。この動作は私には非常に奇妙に思えます。コードに何らかのバグがあるのか 、それとも何なのかわかりません。この種の動作を引き起こしている可能性のあるアイデアはありますか?
リクエストに応じて、リリースとデバッグに使用するフラグは次のとおりです。
リリース:-c -r8 -traceback -extend-source -override-limits -zero -unroll -O3
デバッグ:-c -r8 -traceback -extend-source -override-limits -zero -g -O0
もちろん、元の質問が示すように-check bounds
、デバッグの場合はフラグのオンとオフを切り替えます。