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 (количество ядер на узел).

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