Я использую Eclipse с компилятором GNU Fortran для вычисления больших массивов для решения проблемы с матрицей. Тем не менее, я прочитал и заметил, что я не могу прочитать все свои данные в массиве, что приводит к сбою моего project.exe при вызове -fopenmp в мои настройки компилятора; в противном случае программа работает нормально.Большой массив Fortran Openmp на Eclipse; Program Crash
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
В своем стремлении найти решение вокруг него, я обнаружил, что наиболее вероятной причиной является ограничение размера стека, который можно увидеть тот факт, что, если я изложу nz_num к меньшим или равным 26561, программа будет работать должным образом. Возможное решение заключается в том, чтобы установить переменную окружения для увеличения стекирования, но программа не распознает, когда я ввожу «setenv» или «export» OMP_STACKSIZE в программу. Я делаю что-то неправильно? Есть ли какие-либо рекомендации относительно того, как я могу решить эту проблему?
Спасибо!
Просто найдите соответствующие вопросы. Эта проблема возвращается снова через регулярные промежутки времени. –
'OMP_STACKSIZE' не влияет на стек основного потока. 'ulimit -s ...' делает. –
@HristoIliev Я пробовал ваши решения, и все они не работали в отличие от ohm's – ceeely