我正在刷新openmp,并陷入了这种奇怪的情况。剃掉一堆,我创建了这个显示问题的最小的琐碎案例
program ex2
implicit none
integer, parameter :: n=10000000
integer :: i
real :: x(n)
do i=1,n
x(i) = 0.0d0
enddo
end program
在没有指定标志的情况下,mac (10.6) 上的 gfortran 4.3.4 可以编译,并且程序可以正确执行。
但是,如果我使用 -fopenmp 启用 openmp,程序会因分段错误而终止。显然,没有代码被执行,因为它立即崩溃。如您所见,openmp 从未在代码中用于并行化任何内容。我尝试修改堆栈大小,都使用ulimit -fmax-stack-var-size,无论如何,一千万实数不是我定义的大数组。
我究竟做错了什么 ?