Sun Grid Engine, форсируйте одно задание на узел

Я запускаю много повторов одного и того же задания, используя numpy в кластере, который использует механизм солнечной сетки для распределения заданий (звездный кластер). Каждый из моих узлов имеет 2 ядра (c3.large на AWS). Итак, у меня есть 5 узлов, каждый из которых имеет 2 ядра.

Матричные операции в numpy могут использовать более одного ядра одновременно. Я обнаружил, что SGE отправляет одновременно 10 заданий, каждое из которых использует ядро. Это приводит к увеличению времени выполнения заданий. Глядя на htop, похоже, что два задания на каждом ядре борются за ресурсы.

Как я могу указать qsub распределять 1 задание на узел. Чтобы, когда я отправляю свои задания, одновременно выполнялось только 5, а не 10?


person bill_e    schedule 26.02.2016    source источник


Ответы (1)


Шаг 1: Добавьте комплексные значения в свой кластер. Бегать

qconf -mc

Добавьте строку, например

exclusive        excl      INT         <=    YES         YES        0        0

Шаг 2: Для каждого из ваших узлов определите значение для этого сложного значения.

qconf -rattr exechost complex_values exclusive=1 <nodename>

Здесь мы устанавливаем исключительное значение 1. Затем, когда вы запускаете задания, запрашивайте «1» этого ресурса. Например.:

qrsh -l exclusive=1 <myjob>

Если бы вы хотели иметь 2 задания на узел, вы могли бы определить это значение равным 2 на шаге 2.

РЕДАКТИРОВАТЬ: вот как настроить его для каждого узла. Вы могли бы сделать это для всего кластера на шаге 1, установив значение в столбце «по умолчанию» равным 1.

person Finch_Powers    schedule 26.02.2016
comment
РЕДАКТИРОВАТЬ: вот как настроить его для каждого узла. Вы могли бы сделать это для всего кластера на шаге 1, установив значение в столбце по умолчанию равным 1. Это именно то, что я хочу сделать. Я пробовал это, но все равно запускал сразу 10 заданий вместо 5. Нужно ли запускать команду excl? - person bill_e; 26.02.2016
comment
Потом при запуске джобов делать: qrsh -lэксклюзив=1 qsub -e ... вот так..? - person bill_e; 26.02.2016
comment
Нет, qsub и qrsh — это инструменты для запуска заданий. qsub отсоединяется, qrsh интерактивен. Таким образом, вы можете просто заменить qrsh на qsub в примере. - person Finch_Powers; 26.02.2016
comment
Может по умолчанию не работает. Попробуйте установить его для каждого узла с помощью команды qconf -rattr. - person Finch_Powers; 26.02.2016