使用不同标志的OpenMP编译会产生不同的结果

时间:2014-04-12 12:38:03

标签: openmp fortran90

我开发了一个FORTRAN代码,我使用以下命令编译:

ifort -g -O0 -openmp -openmp_report -threads -ipo

使用上述标志运行此代码时,在运行串行和并行(OpenMP)时,我将结果保留为15位数。我还查看了英特尔Inspector 2013 - 我没有任何数据竞争条件。

然而,当我将优化编译标志更改为-O2-O3时,我得到一个小错误,该错误随着时间的推移而增长(它是一个随时间积分的模拟),从{{ 1}}朝着更大的数字。 10^15-O2中的任何一个的结果都不同(最多为点后的第五个数字)。

任何人都可以建议我如何改进我的代码,使其以与-O3标志相同的精度(双精度)运行?

提前致谢, 插口。

0 个答案:

没有答案