PBS запускает несколько экземпляров одной и той же программы с разными аргументами
Как вы запускаете одну и ту же программу несколько раз, но с разными аргументами для каждого экземпляра кластера, переданного через PBS. Кроме того, возможно ли назначить каждую из этих программ на отдельный узел? В настоящее время, если у меня есть PBS со следующим скриптом:
#PBS -l nodes=1:ppn=1
/myscript
он будет запускать одну программу один раз на одном узле. Если я использую следующий скрипт:
#PBS -l nodes=1:ppn=1
/mscript -arg arg1 &
/myscript -arg arg2
Я считаю, что это будет запускать каждую программу последовательно, но он будет использовать только один узел. Могу ли я объявить несколько узлов, а затем делегировать конкретные узлы каждому экземпляру программы, которую я хочу запустить?
Любая помощь или предложения будут очень признательны. Я прошу прощения, если я ничего не понимаю или использую неверную терминологию... Я очень плохо знаком с кластерными вычислениями.
2 ответа
Вы хотите сделать это, используя форму MPI. MPI обозначает интерфейс для передачи сообщений, и существует множество библиотек, которые реализуют этот интерфейс. Я бы порекомендовал использовать OpenMPI, так как он очень хорошо интегрируется с PBS. Поскольку вы говорите, что вы новичок, вы можете оценить этот урок.
GNU Parallel
было бы идеально для этой цели. Пример сценария PBS для вашего случая:
#PBS -l nodes=2:ppn=4 # set ppn for however many cores per node on your cluster
#Other PBS directives
module load gnu-parallel # this will depend on your cluster setup
parallel -j4 --sshloginfile $PBS_NODEFILE /mscript -arg {} \
::: arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8
GNU Parallel
будет обрабатывать SSH-соединения с различными узлами. Я написал пример с аргументами в командной строке, но вы, вероятно, захотите прочитать аргументы из текстового файла. Вот ссылки на справочную страницу и учебник. вариант -j4
должен соответствовать ppn (количество ядер на узел).