Ошибка при использовании srun или mpirun в slurm

Я пытаюсь отправить работу с slurm. Однако работа не выполняется, если я использую srun или mpirun. Однако он отлично работает с mpiexec, хотя и работает только с одним процессом, несмотря на выделение нескольких узлов и нескольких ядер.

Фактически используется следующая команда:

srun /nfs/home/6/sanjeevis/dns/lb3d/src/lbe -f input-default

Вот ошибка, которую я получаю с srun/mpirun:

[mpiexec@n1581] match_arg (utils/args/args.c:163): unrecognized argument pmi_args
[mpiexec@n1581] HYDU_parse_array (utils/args/args.c:178): argument matching returned error
[mpiexec@n1581] parse_args (ui/mpich/utils.c:1642): error parsing input array
[mpiexec@n1581] HYD_uii_mpx_get_parameters (ui/mpich/utils.c:1694): unable to parse user arguments

Код компилируется нормально, но я сталкиваюсь с проблемами из-за slurm. Любая помощь по этому поводу приветствуется.

Изменить: вот результат для which mpirun, mpiexec, and ldd исполняемого файла:

/nfs/apps/MPI/openmpi/3.1.3/gnu/6.5.0/cuda/9.0/bin/mpirun
/nfs/apps/ParaView/5.8/binary/bin/mpiexec
        linux-vdso.so.1 =>  (0x00007fff78255000)
        libmpi.so.12 => /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/intel64/lib/release_mt/libmpi.so.12 (0x00002ae6cb57d000)
        libz.so.1 => /nfs/apps/Libraries/zlib/1.2.11/system/lib/libz.so.1 (0x00002ae6cbd4c000)
        libmpifort.so.12 => /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/intel64/lib/libmpifort.so.12 (0x00002ae6cbf67000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00002ae6cc315000)
        librt.so.1 => /lib64/librt.so.1 (0x00002ae6cc519000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae6cc721000)
        libm.so.6 => /lib64/libm.so.6 (0x00002ae6cc93e000)
        libc.so.6 => /lib64/libc.so.6 (0x00002ae6ccc40000)
        libgcc_s.so.1 => /nfs/apps/Compilers/GNU/6.5.0/lib64/libgcc_s.so.1 (0x00002ae6cd003000)
        /lib64/ld-linux-x86-64.so.2 (0x0000558ea723a000)

Вот мой сценарий задания.


person SKPS    schedule 21.06.2020    source источник
comment
Есть ли stackoverflow.com/questions/33780992/ какой-либо помощи ?   -  person Ian Bush    schedule 21.06.2020
comment
Не совсем, потому что там пользователь использует флаг --mca и получает unrecognized argument mca по ошибке. В моем случае я не передаю pmi_args в качестве аргумента и не знаю, откуда он.   -  person SKPS    schedule 22.06.2020
comment
в вашем пакетном скрипте добавьте which mpirun, which mpiexec и ldd /nfs/home/6/sanjeevis/dns/lb3d/src/lbe, чтобы выяснить, какая библиотека MPI используется и кем.   -  person Gilles Gouaillardet    schedule 24.06.2020
comment
@francescalus: Спасибо. Я обновил сценарий вакансии и еще несколько деталей, о которых просил другой пользователь. Я не знаю о настройке PMI. Как я могу получить эту информацию?   -  person SKPS    schedule 24.06.2020
comment
@GillesGouaillardet: обновлена ​​необходимая информация и скрипт вакансии.   -  person SKPS    schedule 24.06.2020
comment
вы смешиваете три реализации MPI! mpirun от Open MPI, mpiexec, вероятно, является встроенным MPICH от Paraview, а ваше приложение построено с использованием Intel MPI. попробуйте вместо этого использовать /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin/mpirun (или /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin64/mpirun).   -  person Gilles Gouaillardet    schedule 24.06.2020
comment
или если вы хотите использовать srun, вам сначала нужно export I_MPI_PMI_LIBRARY=/path/to/slurm/pmi/library/libpmi.so   -  person Gilles Gouaillardet    schedule 24.06.2020
comment
@GillesGouaillardet: Большое спасибо! Я указал mpi на другую версию, и теперь она работает нормально. Я использовал MPI по умолчанию, который был другой версией. Придется понять, почему проявилось несоответствие. Поскольку вы помогли мне с более тонкими деталями, я могу назначить вам награду, если хотите.   -  person SKPS    schedule 24.06.2020
comment
Спасибо, я разместил свои комментарии в качестве ответа. Я не знаком с правилами награждения, и, если это возможно, я приглашаю вас подумать о том, чтобы поделиться наградой с @denfromufa, который первым дал подсказку о первопричине.   -  person Gilles Gouaillardet    schedule 25.06.2020
comment
@GillesGouaillardet на самом деле Ян Буш был первым, кто указал на проблему в первом комментарии. Просто SKPS не заметил эту точку в связанном ответе, и я заметил это после ответа.   -  person denfromufa    schedule 25.06.2020
comment
Я не нажимал на ссылку ... тогда давайте подумаем о том, чтобы отдать каждому свою справедливую долю!   -  person Gilles Gouaillardet    schedule 26.06.2020
comment
@denfromufa: Я просмотрел ответ Яна Буша, и в данном случае он не помогает. См. Мой ответ на комментарий Яна Буша.   -  person SKPS    schedule 26.06.2020
comment
@SKPS вы видели это в ссылке Яна? Типичный случай смешения нескольких реализаций MPI.   -  person denfromufa    schedule 26.06.2020
comment
@denfromufa: Спасибо! Ответ соответствует этому вопросу. Однако я считаю, что здесь это немного более тонко, потому что я не передаю никаких флагов во время выполнения, в отличие от этого (mca). Так что раньше я чувствовал, что здесь все сложнее. pmi_args ошибка кажется распространенной, но не рассматривается подробно. Так что я считаю, что эти вопросы и ответы помогут форуму.   -  person SKPS    schedule 26.06.2020


Ответы (2)


Основная причина - сочетание нескольких реализаций MPI, которые не взаимодействуют между собой:

  • mpirun из Open MPI
  • mpiexec скорее всего встроенный MPICH от Paraview
  • ваше приложение построено на Intel MPI.

Попробуйте вместо этого использовать /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin/mpirun (или /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin64/mpirun), чтобы средство запуска соответствовало вашей библиотеке MPI.

Если вы хотите использовать srun с Intel MPI, потребуется дополнительный шаг. Вам сначала нужно

export I_MPI_PMI_LIBRARY=/path/to/slurm/pmi/library/libpmi.so
person Gilles Gouaillardet    schedule 25.06.2020

Наиболее вероятная проблема заключается в том, что программа компилируется с одной реализацией MPI и вызывается с другой реализацией MPI. Убедитесь, что все переменные среды MPI установлены правильно: OPAL_PREFIX, MPI_ROOT, PATH и LD_LIBRARY_PATH.

person denfromufa    schedule 24.06.2020