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

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

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

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

1 ответ

Решение

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

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

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

Б) ты не

В случае B, попросите вашего администратора создать параллельную среду. В случае A вы должны создать параллельную среду. Чтобы создать новую параллельную среду, вы должны набрать (требуется привилегия 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, иначе ваши задания будут тратить гораздо больше времени на общение, чем на вычисления.

РЕДАКТИРОВАТЬ: о, кстати: правильный синтакс, чтобы представить работу в параллельной среде эффективно:

qsub -pe <pe_name> <nb_slots>

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

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

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

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