Что вам нужно: 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.
Исходя из того, что вы говорите, предполагая, что вы использовали правильный синтаксис в каждом случае, это результат:
mpirun
, CLI (оригинальный пост).
"Работа".
mpirun
, S (комментарий?).
Та же ошибка, что и в пункте 4 ниже?
Обратите внимание, что mpirun hostname
в S должен был произвести аналогичный вывод в вашем slurm.err
.
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.
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