Сочетание xargs параллельно и mpirun

У меня есть смущающе параллельный (bash) скрипт, работающий в вычислительном кластере. Сценарий является сценарием оболочки и не связан с какой-либо библиотекой MPI: это означает, что единственный способ передать ему рейтинг MPI - это параметр командной строки.

До сих пор я выполнял его только в пределах одного узла, и решение было простым:

 #!/bin/bash
 #SBATCH --nodes=1
 N=16
 seq $N | xargs -P $N -I% my_script.bash % $N

Как я могу масштабировать его с двумя узлами? Если я просто использую '--nodes=2' и N=32 затем xargs будет пытаться порождать все потоки на одном узле. С другой стороны я не могу использовать mpiexec один: потому что скрипт не связан с MPI библиотека, и я не знаю, как сказать сценарию, что это за потоки.

1 ответ

Решение

Ты можешь использовать srun в вашем скрипте представления, чтобы сделать это:

seq $N | xargs -P $N -I% srun --exclusive -N1 my_script.bash % $N

Это будет использовать srun запустить скрипт bash и распространить его на выделенные процессоры.

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