Сочетание 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 и распространить его на выделенные процессоры.