Почему mpirun ведет себя так же, как при использовании с slurm?
Я использую Intel MPI и столкнулся с непонятным поведением при использовании mpirun
в сочетании с грязью.
Если я бегу (в узле входа в систему)
mpirun -n 2 python -c "from mpi4py import MPI; print(MPI.COMM_WORLD.Get_rank())"
тогда я получаю в качестве результата ожидаемые 0 и 1 распечатаны.
Однако, если я salloc --time=30 --nodes=1
и запустить то же самое mpirun
из интерактивного вычислительного узла я получаю два 0 вместо ожидаемых 0 и 1.
Тогда, если я изменю -n 2
в -n 3
(все еще в вычислительном узле), я получаю большую ошибку от слов slurm srun: error: PMK_KVS_Barrier task count inconsistent (2 != 1)
(плюс куча других вещей), но я не уверен, как это объяснить тоже...
Теперь, основываясь на этой странице OpenMPI, кажется, что такие операции должны поддерживаться, по крайней мере, для OpenMPI:
В частности, вы можете запустить mpirun Open MPI в интерактивном распределении SLURM (с помощью команды salloc), или вы можете отправить скрипт в SLURM (с помощью команды sbatch), или вы можете "напрямую" запускать исполняемые файлы MPI через srun.
Может быть, реализация Intel MPI, которую я использовал, просто не имеет такой же поддержки и не предназначена для непосредственного использования в среде с грязью (?), Но я все еще задаюсь вопросом: какова основная природа mpirun
и грязь (salloc
) что такое поведение произведено? Зачем ему печатать два 0 в первом "случае", и какова противоречивая задача, о которой идет речь во втором "случае"?