我刷新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