Почему 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 в первом "случае", и какова противоречивая задача, о которой идет речь во втором "случае"?

0 ответов

Другие вопросы по тегам