Мы создаем наше программное обеспечение на SGE, работающем на ведомых устройствах CentOS, и оно работает хорошо. Мой вопрос: как сообщить SGE, что задание занимает несколько ядер на данном подчиненном устройстве, запустив несколько процессов?
Объяснение:
Процесс включает обучающие модели, которые влекут за собой множество последовательных небольших изменений в (относительно) больших файлах данных с количеством заданий более 10 000. Большинство инструментов, которые мы используем, поддерживают чтение и запись из stdin/out. Это позволит нам передавать данные от одного инструмента к другому (тесты показывают, что это также будет работать).
Проблема в том, что когда задание запускает два или более процессов, соединенных каналом, ведомое устройство будет перегружено. Как я могу сообщить SGE количество процессов, чтобы избежать этого? Это необходимо только для правильной работы SGE и узлов, а не для какой-либо формы учета.
Пример:
2 вычислительных узла, NodeA и NodeB, каждый с 10 слотами, настроенными для назначения заданий в режиме «заполнения».
Job1 "tool1 -a A -b B | tool2 -c C | tool3 -д Д"
Когда я запускаю «Job1», и он назначается узлу NodeA, там запускаются три процесса («tool1», «tool2», «tool3»). Но SGE знает только об одном задании и по-прежнему считает, что может назначить узлу А еще 9 заданий вместо 7, что может привести к перегрузке узла.
Я посмотрел на «pe_range», но, похоже, он относится к нескольким заданиям, а не к заданию с несколькими процессами.
Спасибо.