Ограничение ядер на задание в sun gridengine

В настоящее время я настраиваю gridengine на Ubuntu 16.04 с помощью sun gridengine. Большинство функций, которые я хочу использовать, работают. Тем не менее, я борюсь со следующей проблемой:

  • У меня 32-ядерная машина (64 потока)
  • Я выполняю задания, в которых используется программное обеспечение, такое как Matlab...
  • Эти программные пакеты могут использовать несколько потоков для вычислений.

Текущая ситуация: Очередь имеет 2 слота, Процессоры установлены на 1. Я отправляю одно задание, и для расчета используются все 64 потока. Я отправляю второе задание, и оба выполняются параллельно. Итак, для теста времени выполнения я не могу контролировать количество используемых ядер.

Я также попытался настроить параллельную среду (подключенную к этой очереди). Но также, если я запускаю там задание, используются все ядра.

Я предполагаю, что у меня есть общая проблема понимания.

Кто-нибудь знает или имеет представление, как можно настроить что-то подобное:

а) каждый слот может использовать только одно ядро ​​(тогда параллельная среда позволит мне указать слоты/ядра задания

б) ограничить ядра отправленной работы

Важно также, что это не только верхняя, но и нижняя граница. Но я думаю, это может быть решено количеством слотов.

Заранее спасибо за любые идеи.


person Paul    schedule 23.05.2016    source источник


Ответы (1)


Вы не можете (легко) контролировать количество потоков, которые может создать процесс, но, используя последний механизм сетки, вы можете контролировать количество ядер, к которым он может получить доступ. Если у вас новый движок сетки, проверьте параметр -binding qsub и параметр USE_CGROUPS в sge_conf. Если у вас более старый движок сетки, вы можете попробовать поэкспериментировать с методом starter_method.

person William Hay    schedule 28.06.2016
comment
Специально не ограничивая количество потоков, но мне удалось создать сценарий оболочки, используя cpulimit (cpulimit --limit 100 --include-children "$@") и starter_method, чтобы заставить все задания выполняться в этом сценарии для заданной очереди (qconf -rattr queue starter_method /full/path/limit_cpu.sh my_queue.q), чтобы ограничить ЦП, который использует каждое задание. - person danclewley; 22.05.2021