Создайте поддельное задание для SGE, чтобы заполнить все узлы перед запуском задания, которое будет выполняться на полных узлах

Проблема отправки заданий на SGE для запуска на полных узлах уже рассматривалась на этом форуме. Было предложено несколько решений, одно из которых - настроить SGE для использования параметра -l excl = TRUE, другое решение - запросить у SGE жесткую память или ограничения нагрузки.

Я использую кластер из мой университет для моей магистерской диссертации, параллельная среда openmpi настроена со стратегией заполнения. Обычно узлы кластера содержат по 16 или 20 ядер, проблема в том, что некоторые пользователи вместо запуска вычислений с числом ядер, кратным 16 (или 20), они запускают свои задания с произвольным числом ядер. . В результате, когда я запускаю задание с -pe openmpi 16, иногда SGE резервирует процессоры на 3 узлах (например, 6 + 1 + 10), что очень замедляет вычисления.

Я попросил администратора настроить кластер чтобы разрешить -l excl = TRUE, но он отказался изменять конфигурацию перед выполнением тестов (я не знаю, как долго).

Теперь у меня есть новая идея, которая может позволить мне получить результат, аналогичный (- l excl = TRUE), но без изменения кластера:

  1. Напишите сценарий, который будет сканировать очередь и оценивать количество ядер, которые должны быть запрошены SGE, чтобы он заполнил все работающие узлы и позволил только полностью освободить узлы.
  2. Запустить поддельное задание с вычисленным количеством ядер, которое будет ждать определенное время.
  3. запустить мое истинное задание (например, -pe openmpi 2 * 16 = 32).
  4. Удалить поддельное задание, чтобы разрешить другие пользователи могут использовать его ядра

Кто-нибудь может предоставить мне пример такого кода?

-1
задан 15 March 2018 в 19:05
1 ответ

У меня отлично работает запуск заданий с qsub -l cpu = 0 (или cpu = 0,1 ).

0
ответ дан 5 December 2019 в 20:21

Теги

Похожие вопросы