我有一个修改 FPU 控制字的大型 C++ 程序(使用_controlfp()
)。它取消屏蔽一些 FPU 异常并安装 SEHTranslator 以生成类型化的 C++ 异常。我正在使用 VC++ 9.0。
我想使用 OpenMP (v.2.0) 来并行化我们的一些计算循环。我已经成功地将它应用于一个,但数值结果略有不同(尽管我理解这也可能是由于计算以不同的顺序执行的)。我假设这是因为 FPU 状态是线程特定的。有没有办法让 OpenMP 线程从主线程继承该状态?或者是否有某种方法可以使用 OpenMP 指定新线程执行设置正确状态的特定函数?处理这种情况的惯用方法是什么?