FPU 制御ワードを ( を使用して_controlfp()
) 変更する大規模な C++ プログラムがあります。一部の FPU 例外のマスクを解除し、SEHTranslator をインストールして型付き C++ 例外を生成します。VC++ 9.0 を使用しています。
OpenMP (v.2.0) を使用して、計算ループの一部を並列化したいと考えています。私はすでにそれを1つにうまく適用しましたが、数値結果はわずかに異なります(ただし、計算が異なる順序で実行されたことが原因である可能性があることは理解しています)。これは、FPU の状態がスレッド固有であるためだと思います。OpenMP スレッドにマスター スレッドからその状態を継承させる方法はありますか? または、新しいスレッドが正しい状態を設定する特定の関数を実行することを OpenMP を使用して指定する方法はありますか? この状況に対処するための慣用的な方法は何ですか?