Блокирует qsub до завершения задания?

#performance #shell #parallel-processing #cluster-computing #qsub

#Производительность #оболочка #параллельная обработка #кластерные вычисления #qsub

Вопрос:

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

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

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

Ответ №1:

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

Ответ №2:

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

 qsub -I -x myscript.sh
  

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

Комментарии:

1. Вы не теряете возможность сохранять выходные данные в выходных файлах?

2. Таким образом, вы потеряли автоматическое сохранение выходных данных, но вы можете зарегистрировать свой сеанс терминала и сохранить выходные данные таким образом.

Ответ №3:

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