私は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を使用しましたが、いずれの場合も、1000万の実数は大きな配列を定義するものではありません。
私は何を間違っているのですか?