LINUX.ORG.RU

Стала сегфолтится MPI-программа

 , ,


0

1

Благородные доны, прощу совета по следующему вопросу: имеется кластер от SGI, на котором крутится какой-то модифицированный SLES. Имеется самописанная мной программа, которая использует fftw и mpi (рассчитывается дифракция при прохождении света через телескоп).

Программа успешно работала (почти целый год), но относительно недавно SLES проапгрейдили. Я не уверен, что именно это является причиной, но кажется лично я никаких других изменений не вносил в исходный код. Сама прога на фортране.

Сейчас она сегфолтится на весьма простом месте, типа

where (data <= 1.0)
  data = 0.0
elsewhere
  data = 1.0
endwhere
дата - массив само собой. Если эти строки чуть переделать (упростить), то начинает сегфолтитася на следующих строках. Т.е. по-моему это всё рандомно. Никакого особенного вывода я не вижу (идет обычный вывод и вдруг прерывается), scheduler (pbs) возвращает код 1, где-то там еще виден код возврата самой проги - 9 (интырнет говорит что сегфолт).

Изначально она компилировалась при помощи 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. Но именно их на кластере нет. Кто что посоветует? Как выявить источник проблемы?

Буду признателен за советы.

кластер от SGI

А оно ещё живо? Или это старый шкаф сливающий современным ноутбукам?

anonymous
()
Ответ на: комментарий от anonymous

хрен знает, но если учесть параметры

112 compute nodes(linux servers) with each 2 Xeon E5-2680V3 processors.
24 compute cores per node, 2688 cores in total
88 compute nodes with 64GB Ram, 24 compute nodes with 256GB Ram (Fat configuration): 11776 GB Ram in total
Infiniband FDR (56 Gbit/sec) interconnect between all compute nodes. 4 lane (160Gbit/sec) interconnect between the computer rooms
Scratch storage: 2 storage systems with each between 60 and 100 TB of storage capacity (in function of configuration)
Home directories: fully redundant storage system with 20TB of capacity
Software
PBSPro Batch scheduler
Sles Linux for the servers
Intel Parallel Studio XE Cluster edition (compiler suite with all compilers)
Alinea DDT & Map license for debugging and profiling up to 256 processes.
Additional softwares already used on the Space Pole, such as Matlab, Idl, python,

То я очень удивлен имеющимися у вас ноутбуками.

sshestov
() автор топика

Openmpi достаточно легко собирается на линухе, можно попробовать собрать его в хомяка, и уже им собрать твою приладу. Если включить отладку, то можно будет поймать стэк падения

anonymous
()

Включение же даже mpi-инициализации типа

приводит к тому самому последующему сегфолту (через много строк).

Очень похоже на баг в mpi, если конечно ты не пытался использовать указатели в фортране (это можно с некоторыми извращениями).

Другой вариант - тщательно надо бы проверить, не используется ли где неинициализированная переменная. Попробуй включить все предупреждения компилера на максимум.

Прога успешно работает на другом компе попроще с gfortran/openmpi.

Немного не в курсе, а mpi с gfortran не компилируется?

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

говорю ж, оно какое-то

время назад работало, и по-моему именно связано с обновлением SLES.

OpenMPI на кластере установлен; но совершенно точно просят запускать на выполнение при помощи mpiexec_mpt, т.е. специальной запускалкой из комплекта mpt. Вроде так? С другой стороны, всё-таки OpenMPI подключается модулем, видимо можно запускать и командой mpirun.

Указатели использую, поскольку fftw через них и работает (си-шная библиотека, они массивы указателями принимают). Именно такое использование прописано в документации. ifort очень капризен до неинициализированных переменных, строк и прочих таких дел. Думаю, оно б сегфолтилось сразу.

На кластере есть ifort/icc, mpt, gcc (но не gfortran) и OpenMPI. На другом компе (не кластер), где только g- да Open- всё работает замечательно.

Моя текущая гипотеза - собрать в хомяке fftw и линковаться с ним. Может быть при обновлении про него забыли... Его статиком нужно собирать? Или можно линковаться к so-шкам на кластере?

Спасибо за советы.

sshestov
() автор топика
Ответ на: говорю ж, оно какое-то от sshestov

А попробуй погонять заглушку вместо fftw, а то что-то как-то возможно где-то тут течет память или еще что-то происходит.

praseodim ★★★★★
()
Ответ на: говорю ж, оно какое-то от sshestov

Его статиком нужно собирать? Или можно линковаться к so-шкам на кластере?

Я бы линковал его статиком. И OpenMPI тоже статиком, если это возможно.

tailgunner ★★★★★
()
Ответ на: openmpi от integr1

та как то это уж

сильно сложно. Хотя, конечно, хочется разобраться с проблемой (с причинами, ведь работало ж), проще ждать 4 часа каждый раз, чтобы посчиталось на компе попроще

sshestov
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.