使用OpenMP标志编译的非OpenMP Fortran代码的行为有所不同

时间:2019-05-02 21:30:12

标签: parallel-processing fortran openmp gfortran

我正在使用Fortran代码进行编译,并且可以按预期方式在顺序模式下运行,但是在代码中添加了OpenMP指令(大多数是循环并行化)后,它无法按预期运行。为了调试代码,我决定删除所有OpenMP指令,然后将它们逐个重新引入,以查看问题出在哪里。但是,从我的Fortran文件中删除了所有OpenMP代码后,使用-fopenmp-qopenmp标志进行的编译仍然提供与OpenMP指令仍然存在相同的结果。

我尝试删除.o文件和已编译程序留下的所有其他痕迹,但这没有任何改变。我已经尝试过gfortranifort编译器(在Linux Ubuntu和MacOS X上运行)。

我不确定在这种情况下是否需要显示任何代码,因为我的问题是在代码中没有任何OpenMP指令的情况下,使用-fopenmp-qopenmp标志会发生什么。

我希望不包含任何OpenMP指令而是使用-fopenmp-qopenmp标志进行编译的代码可以像未使用这些标志进行编译那样运行,并且会产生相同的结果。但这显然是不正确的。这种行为的根源是什么?

我想知道其他人是否也遇到过类似的问题并可能找到了解决方案。

0 个答案:

没有答案