我正在使用Fortran代码进行编译,并且可以按预期方式在顺序模式下运行,但是在代码中添加了OpenMP指令(大多数是循环并行化)后,它无法按预期运行。为了调试代码,我决定删除所有OpenMP指令,然后将它们逐个重新引入,以查看问题出在哪里。但是,从我的Fortran文件中删除了所有OpenMP代码后,使用-fopenmp
或-qopenmp
标志进行的编译仍然提供与OpenMP指令仍然存在相同的结果。
我尝试删除.o
文件和已编译程序留下的所有其他痕迹,但这没有任何改变。我已经尝试过gfortran
和ifort
编译器(在Linux Ubuntu和MacOS X上运行)。
我不确定在这种情况下是否需要显示任何代码,因为我的问题是在代码中没有任何OpenMP指令的情况下,使用-fopenmp
或-qopenmp
标志会发生什么。
我希望不包含任何OpenMP指令而是使用-fopenmp
或-qopenmp
标志进行编译的代码可以像未使用这些标志进行编译那样运行,并且会产生相同的结果。但这显然是不正确的。这种行为的根源是什么?
我想知道其他人是否也遇到过类似的问题并可能找到了解决方案。