У меня есть ужасно параллельный (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 и распространения его по выделенным процессорам.
Похожие вопросы
Новые вопросы
multithreading
Для вопросов, касающихся многопоточности, способность компьютера или программы выполнять работу одновременно или асинхронно, используя несколько одновременных потоков выполнения (обычно называемых потоками).