我刷新openmp有点,并陷入这种奇怪的情况。剃掉了一堆,我创建了一个显示问题段错误与-fopenmp为一个简单的程序
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上指定标志,gfortran 4.3.4(10.6)编译,程序正确执行这个最小的小例子。
但是,如果我使用-fopenmp启用openmp,程序将终止并出现分段错误。显然,没有代码被执行,因为它立即崩溃。正如您所看到的,openmp在代码中不会用于并行化任何事情。我试图修改堆栈大小,都使用ulimit -fmax-stack-var-size,并且在任何情况下,千万个实数都不是我定义的一个大数组。
我在做什么错?
它适用于我,但只能通过删除-stack_addr规范。我得到页面零段和堆栈段之间的段重叠。我想指定stack_size,这将离开编译器安排的堆栈地址。 – 2010-06-18 23:14:58