Блокировать qsub до тех пор, пока работа не будет выполнена?

В настоящее время у меня есть программа-драйвер, которая запускает несколько тысяч экземпляров программы «полезной нагрузки» и выполняет некоторую постобработку вывода. В настоящее время драйвер вызывает программу полезной нагрузки напрямую, используя функцию shell(), из нескольких потоков. Функция shell() выполняет команду в текущем рабочем каталоге, блокируется до завершения выполнения команды и возвращает данные, отправленные командой на стандартный вывод. Это хорошо работает на одной многоядерной машине. Я хочу изменить драйвер, чтобы вместо этого отправлять qsub заданий в большой вычислительный кластер для большего параллелизма.

Есть ли способ заставить команду qsub выводить результаты на стандартный вывод вместо файла и блокировать до завершения задания? По сути, я хочу, чтобы это действовало как можно больше как «нормальное» выполнение команды, чтобы я мог распараллелить кластер с минимальной модификацией моей программы-драйвера.

Редактировать: я думал, что все двигатели сетки в значительной степени стандартизированы. Если это не так, и это имеет значение, я использую Torque.


person dsimcha    schedule 12.05.2011    source источник


Ответы (3)


Вы не указываете, какую систему очередей вы используете, но SGE поддерживает параметр «-sync y» для qsub, который заставит его блокироваться до тех пор, пока задание не завершится или не завершится.

person Steve Baker    schedule 12.05.2011

В TORQUE это делается с помощью опций -x и -I. qsub -I указывает, что он должен быть интерактивным, а -x говорит, что нужно запускать только указанную команду. Например:

qsub -I -x myscript.sh

не вернется, пока myscript.sh не завершит выполнение.

person dbeer    schedule 13.03.2012
comment
Вы не теряете возможность сохранять вывод в выходных файлах? - person static_rtti; 24.07.2012
comment
Таким образом вы потеряли автоматическое сохранение вывода, но вы можете зарегистрировать сеанс терминала и таким образом сохранить вывод. - person dbeer; 24.07.2012

В PBS вы можете использовать qsub -Wblock=true <command>

person naught101    schedule 16.09.2016