私はGNU FortranコンパイラでEclipseを使用して、行列の問題を解決するために大きな配列を計算しています。しかし、私は読んで、配列に私のすべてのデータを読み込むことができないことに気付きました。私のコンパイラ設定に-fopenmpを呼び出すと、私のproject.exeがクラッシュする原因になります。そうでなければ、プログラムは正常に動作します。その周りに解決策を見つけるために私の探求でEclipse上のFortran Openmp大規模配列。プログラムクラッシュ
program Top_tier
integer, parameter:: n=145894, nz_num=4608168
integer ia(n+1), ja(nz_num)
double precision a(nz_num), rhs(n)
integer i
open (21, file='ia.dat')
do i=1, n+1
read(21,*) ia(i)
enddo
close(21)
open (21, file='a.dat')
do i=1, nz_num
read(21,*) a(i)
enddo
close(21)
open (21, file='ja.dat')
do i=1, nz_num
read(21,*) ja(i)
enddo
close(21)
open (21, file='b.dat')
do i=1, n
read(21,*) rhs(i)
enddo
close(21)
End
、私は、最も可能性の高い原因は、私はあまりまたは26561に等しいにnz_numを設定した場合という事実によって見ることができるスタックサイズの上限である発見しましたプログラムは正常に実行されます。可能な解決策は、stacksizeを増やすために環境変数を設定することですが、プログラムに "setenv"または "export" OMP_STACKSIZEを入力するとプログラムは認識しません。私は何か間違っているのですか?この問題をどのように解決できるかについてのアドバイスはありますか?
ありがとうございます!
関連する質問のみを検索してください。この問題は、定期的な間隔で再び戻ってきています。 –
'OMP_STACKSIZE'はメインスレッドのスタックに影響しません。 'ulimit -s ...'はそうです。 –
@HristoIliev私はあなたのソリューションを試しましたが、それらはすべてohmのものとは違って動作しませんでした – ceeely