Благородные доны, прощу совета по следующему вопросу: имеется кластер от SGI, на котором крутится какой-то модифицированный SLES. Имеется самописанная мной программа, которая использует fftw и mpi (рассчитывается дифракция при прохождении света через телескоп).
Программа успешно работала (почти целый год), но относительно недавно SLES проапгрейдили. Я не уверен, что именно это является причиной, но кажется лично я никаких других изменений не вносил в исходный код. Сама прога на фортране.
Сейчас она сегфолтится на весьма простом месте, типа
where (data <= 1.0)
data = 0.0
elsewhere
data = 1.0
endwhere
Изначально она компилировалась при помощи ifort 15, в качестве mpi использовалась mpt/2.12 (реализация mpi от SGI).
Опытным путем установлено, что если закомментить всё, что относится к mpi, то работает как нужно. Включение же даже mpi-инициализации типа
call MPI_INIT(ierr)
call MPI_COMM_RANK(MPI_COMM_WORLD,my_id,ierr)
call MPI_COMM_SIZE(MPI_COMM_WORLD,num,ierr)
Пробовал понижать -O, разные комбинации версий компилятора и mpt. Эффект тот же.
Прога успешно работает на другом компе попроще с gfortran/openmpi. Но именно их на кластере нет. Кто что посоветует? Как выявить источник проблемы?
Буду признателен за советы.