SGE / UGE / etc..стандартизированный способ отправки заданий OpenMP на несколько ядер?


Я ищу способ отправить задание OpenMP планировщику Grid Engine, указав при этом количество ядер, на которых оно должно выполняться. Что-то эквивалентное варианту LSF -n или варианту PBS -l узлов=[count].

Когда я ищу на этом, я вижу кучу ответов, определяющих синтаксис, как " - pe threaded [количество ядер]". В этих ответах нет упоминания о необходимости создания параллельной среды, называемой"потоковой". Но когда я пробую этот синтаксис, он терпит неудачу, говоря, что запрошенная параллельная среда threaded не существует. И когда я набираю "qconf-spl", единственным результатом, который я получаю, является"make". Итак-должна ли эта" потоковая " параллельная среда существовать по умолчанию, или это то, что должно быть создано вручную в кластере?

Если он должен быть создан вручную, существует ли какой-либо другой синтаксис для отправки заданий нескольким ядрам, который не зависит от настраиваемого именования в кластере? Это относится к сторонней программе, которая подчиняется кластеру, так что Я не хочу полагаться не только на клиента, создавшего это ЧП, но и на то, что он назвал его так же, и т. д... Я надеялся, что вариант-l может иметь что-то, но я не смог найти никакой перестановки, чтобы достичь этого.

1 3

1 ответ:

Если вы получаете только "make" как возможную параллельную среду, то это означает, что в вашем кластере нет параллельных сред.

Существует два решения вашей проблемы, в зависимости от этих двух ситуаций:

A) у вас есть доступ root/admin к кластеру

Б) вы не

В случае B, хорошо попросите вашего администратора создать параллельную среду. В случае а необходимо создать параллельную среду. Чтобы создать новую параллельную среду, необходимо тип (требуется привилегия root/admin):

qconf -ap <pe_name>

И редактор по умолчанию будет начинаться с файла pe_conf по умолчанию, который вы должны отредактировать. Если вам нужно настроить только параллельную среду openMP, вы можете использовать следующие опции:

pe_name            smp
slots              9999
user_lists         NONE
xuser_lists        NONE
start_proc_args    /bin/true
stop_proc_args     /bin/true
allocation_rule    $pe_slots
control_slaves     FALSE
job_is_first_task  FALSE
urgency_slots      min
accounting_summary TRUE

И для параллельной среды MPI:

pe_name            mpi
slots              9999
user_lists         NONE
xuser_lists        NONE
start_proc_args    /opt/sge/mpi/startmpi.sh $pe_hostfile
stop_proc_args     /opt/sge/mpi/stopmpi.sh
allocation_rule    $fill_up
control_slaves     FALSE
job_is_first_task  TRUE
urgency_slots      min
accounting_summary TRUE

Как вы заметили, в последнем случае вы укажете SGE на правильный сценарий инициализации и сценарий завершения работы для вашей конфигурации MPI. В первом случае вы просто указываете на /bin/true.

В allocation_rule отличаются в этом примере. $fill_up означает, что SGE заполнит любой процессор, который он может найти, частями задания MPI, в то время как для конфигурации smp вы просто выделяете правильное количество слотов на той же машине, т. е. $pe_slots.

Если вы используете MPI, ваши узлы должны быть соединены с помощью высокопроизводительного коммутатора, такого какinfiniband , иначе ваши рабочие места будут тратить гораздо больше времени на общение, чем на вычисления.

Править: о, Кстати: правильный synthax, чтобы представить работу с a параллельная среда эффективно:

qsub -pe <pe_name> <nb_slots>

ОКОНЧАТЕЛЬНОЕ РЕДАКТИРОВАНИЕ: окончательный ответ на этот вопрос содержится в комментариях ниже. На практике SGE не может обрабатывать многопоточные задания, если в кластере не задана параллельная среда (PE). Если у вас нет прав администратора в кластере, вы должны либо угадать для правильного PE, который должен использоваться с помощью qconf -spl и проверить различные PEs с помощью qconf -sp <pe_name>, либо добавить опцию в своем программном обеспечении, которая позволяет пользователям указывать PE это нужно использовать.

В противном случае, т. е. если в кластере нет PE, вы не можете использовать параллельную версию вашего программного обеспечения.

См. В комментариях для получения дополнительной информации.