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

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

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

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

5
задан dsimcha 12 May 2011 в 20:47
поделиться