Как я могу запустить Open MPI под Slurm - PullRequest
2 голосов
/ 20 марта 2019

Я не могу запустить Open MPI с Slurm через Slurm-script.

Как правило, я могу получить имя хоста и запустить Open MPI на моей машине.

$ mpirun hostname
myHost
$ cd NPB3.3-SER/ && make ua CLASS=B && mpirun -n 1 bin/ua.B.x inputua.data # Works

Но если я выполню ту же операцию через slurm-скрипт mpirun hostname вернет пустую строку и, следовательно, я не смогу запустить mpirun -n 1 bin/ua.B.x inputua.data.

slurm-script.sh:

#!/bin/bash
#SBATCH -o slurm.out        # STDOUT
#SBATCH -e slurm.err        # STDERR
#SBATCH --mail-type=ALL

export LD_LIBRARY_PATH="/usr/lib/openmpi/lib"
mpirun hostname > output.txt # Returns empty
cd NPB3.3-SER/ 
make ua CLASS=B 
mpirun --host myHost -n 1 bin/ua.B.x inputua.data
$ sbatch -N1 slurm-script.sh
Submitted batch job 1

Ошибка, которую я получаю:

There are no allocated resources for the application
  bin/ua.B.x
that match the requested mapping:    
------------------------------------------------------------------
Verify that you have mapped the allocated resources properly using the
--host or --hostfile specification.

A daemon (pid unknown) died unexpectedly with status 1 while attempting
to launch so we are aborting.

There may be more information reported by the environment (see above).

This may be because the daemon was unable to find all the needed shared
libraries on the remote node. You may set your LD_LIBRARY_PATH to have the
location of the shared libraries on the remote nodes and this will
automatically be forwarded to the remote nodes.
------------------------------------------------------------------
mpirun noticed that the job aborted, but has no info as to the process
that caused that situation.
------------------------------------------------------------------
An ORTE daemon has unexpectedly failed after launch and before
communicating back to mpirun. This could be caused by a number
of factors, including an inability to create a connection back
to mpirun due to a lack of common network interfaces and/or no
route found between them. Please check network connectivity
(including firewalls and network routing requirements).
------------------------------------------------------------------

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Если Slurm и OpenMPI являются последними версиями, убедитесь, что OpenMPI скомпилирован с поддержкой Slurm (запустите ompi_info | grep slurm, чтобы выяснить это) и просто запустите srun bin/ua.B.x inputua.data в своем скрипте отправки.

Как вариант, mpirun bin/ua.B.x inputua.data тоже должно работать.

Если OpenMPI скомпилирован без поддержки Slurm, должно работать следующее:

srun hostname > output.txt
cd NPB3.3-SER/ 
make ua CLASS=B 
mpirun --hostfile output.txt -n 1 bin/ua.B.x inputua.data

Убедитесь также, что при запуске export LD_LIBRARY_PATH="/usr/lib/openmpi/lib" вы не перезаписываете другие необходимые пути к библиотекам. Лучше, вероятно, будет export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/lib/openmpi/lib" (или более сложная версия , если вы хотите избежать начального :, если он изначально был пустым.)

0 голосов
/ 01 апреля 2019

Что вам нужно: 1) запустить mpirun, 2) с slurm, 3) с --host. Чтобы определить, кто несет ответственность за то, чтобы это не сработало ( Задача 1 ), вы можете протестировать несколько вещей. Что бы вы ни тестировали, вы должны тестировать точно одинаково через командную строку ( CLI ) и через slurm ( S ). Понятно, что некоторые из этих тестов будут давать разные результаты в случаях CLI и S .

Несколько примечаний: 1) Вы не тестируете точно одно и то же в CLI и S. 2) Вы говорите, что «не можете запустить mpirun -n 1 bin/ua.B.x inputua.data», в то время как проблема на самом деле с mpirun --host myHost -n 1 bin/ua.B.x inputua.data. 3) Тот факт, что mpirun hostname > output.txt возвращает пустой файл ( Проблема 2 ) не обязательно имеет то же происхождение, что и ваша основная проблема, см. Параграф выше. Вы можете решить эту проблему, используя scontrol show hostnames или с переменной окружения SLURM_NODELIST (на которой основан scontrol show hostnames), но это не решит проблему 1.


Чтобы обойти Проблема 2 , которая не самая важная, попробуйте несколько вещей через CLI и S. Сценарий слерма, приведенный ниже, может быть полезен.
#SBATCH -o slurm_hostname.out        # STDOUT
#SBATCH -e slurm_hostname.err        # STDERR
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}/usr/lib64/openmpi/lib"

mpirun hostname > hostname_mpirun.txt               # 1. Returns values ok for me
hostname > hostname.txt                             # 2. Returns values ok for me
hostname -s > hostname_slurmcontrol.txt             # 3. Returns values ok for me
scontrol show hostnames > hostname_scontrol.txt     # 4. Returns values ok for me
echo ${SLURM_NODELIST} > hostname_slurmcontrol.txt  # 5. Returns values ok for me

(объяснение команды export см. this ). Из того, что вы говорите, я понимаю, что 2, 3, 4 и 5 работают нормально для вас, а 1 - нет. Теперь вы можете использовать mpirun с подходящими опциями --host или --hostfile.

Обратите внимание на другой формат вывода: scontrol show hostnames (например, для меня cnode17<newline>cnode18) и echo ${SLURM_NODELIST} (cnode[17-18]).

Имена хостов, возможно, также могут быть получены в именах файлов, заданных динамически с %h и %n в slurm.conf, ищите, например, SlurmdLogFile, SlurmdPidFile.


Чтобы диагностировать / обойти / решить Проблема 1 , попробуйте mpirun с / без --host, в CLI и S. Исходя из того, что вы говорите, предполагая, что вы использовали правильный синтаксис в каждом случае, это результат:
  1. mpirun, CLI (оригинальный пост). "Работа".

  2. mpirun, S (комментарий?). Та же ошибка, что и в пункте 4 ниже? Обратите внимание, что mpirun hostname в S должен был произвести аналогичный вывод в вашем slurm.err.

  3. mpirun --host, CLI (комментарий). Ошибка

    There are no allocated resources for the application bin/ua.B.x that match the requested mapping:
    ...
    This may be because the daemon was unable to find all the needed shared
    libraries on the remote node. You may set your LD_LIBRARY_PATH to have the
    location of the shared libraries on the remote nodes and this will
    automatically be forwarded to the remote nodes.
    
  4. mpirun --host, S (оригинальный пост). Ошибка (так же, как пункт 3 выше?)

    There are no allocated resources for the application
      bin/ua.B.x
    that match the requested mapping:    
    ------------------------------------------------------------------
    Verify that you have mapped the allocated resources properly using the
    --host or --hostfile specification.
    ...
    This may be because the daemon was unable to find all the needed shared
    libraries on the remote node. You may set your LD_LIBRARY_PATH to have the
    location of the shared libraries on the remote nodes and this will
    automatically be forwarded to the remote nodes.
    

Согласно комментариям, у вас может быть неправильный LD_LIBRARY_PATH установленный путь. Вам также может понадобиться использовать mpi --prefix ...

Относящиеся? https://github.com/easybuilders/easybuild-easyconfigs/issues/204

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...