2013-10-06 3 views
2

Я пытаюсь написать сценарий PBS.Параллельное выполнение с помощью скрипта PBS

Я должен использовать 4 узла в кластере и запускать 4 раза исполняемую программу. Трудность состоит в том, что 4 казни должны работать параллельно, один за другим узлом

На данный момент, я просто выделил узлы

#PBS -l nodes=4:ppn=1 

проблема, я не знаю, как быть уверены, программы выполняются параллельно. Как мне это сделать ?

+0

Вы пишите программу MPI? Ваша программа как-то общается? Запуск вашей программы с помощью PBS будет по существу делать 4 копии вашей программы на разных узлах вашего кластера, но это не заставит их общаться. Вам нужно использовать что-то вроде MPI, которое позволяет им выполнять вместе. –

+0

Перемещая это к ответу на это более ясно, что вы просите сейчас, и я не могу соответствовать моему ответу в лимите. –

+0

Помогает ли эта нить? http://stackoverflow.com/questions/18948727/naive-parallelization-in-a-pbs-file – dbeer

ответ

0

Если вы не уверены, что ваши процессы будут запускаться одновременно на нескольких узлах, вы можете использовать функцию MPI_BARRIER в вашем коде. Это предотвратит выполнение всех узлов до тех пор, пока они не выполнит эту функцию.

1

Если вам не нужна ваша программа для связи с другими копиями, вам не нужен MPI. MPI означает интерфейс передачи сообщений (MPI Forum Website) и является самым популярным способом написания параллельной программы. В Интернете есть множество обучающих программ, которые вы можете найти с помощью быстрого поиска. Я рекомендую взглянуть на них. Вы можете проверить все на своих машинах, самостоятельно установив библиотеку MPI. Они доступны в большинстве менеджеров пакетов. Наиболее популярными версиями с открытым исходным кодом являются MPICH и Open MPI. Если вы начинаете с нуля, постарайтесь получить самые последние версии, так как вы получите больше помощи от разных сообществ.

Вы можете выполнить программу, отличную от MPI, с помощью mpiexec, и она будет запускаться через несколько узлов (при условии, что вы правильно настроили настройки), но она не сделает ничего, чтобы заставить их общаться. Это должно быть сделано явно (опять же, см. Учебники MPI).

Если вы не собираетесь общаться между процессами (параллельными вычислениями), я должен задаться вопросом, почему вы хотите запустить несколько копий одной и той же программы в кластере для начала. Единственное, что приходит на ум, это простые утилиты обслуживания кластера, но есть намного лучшие способы сделать это, чем настройки PBS/MPI, и я бы предположил, что если вы выполняете обслуживание кластера, вы уже знаете, что использовать для этого ,

1

pbsdsh - очень простой способ добиться того, о чем вы говорите.

# this will launch one copy of <executable> on each execution slot. For -l nodes=4:ppn=1 
# it will launch it once per node. 
pbsdsh <executable> 

Иногда вам необходимо предоставить полный путь к pbsdsh в зависимости от вашей среды. По умолчанию используется/usr/local/bin/pbsdsh.