Невозможно отправить задания в pbs в R, когда сам источник R вызывается заданием, отправленным в pbs - PullRequest
0 голосов
/ 26 ноября 2018

Скажем, у меня есть следующие документы в каталоге,

> dir()
# [1] "master.job"  "master.R"  "P1.job"  "P2.job"  "P1.R"  "P2.R"

master.job отправлено в pbs для передачи master.R, P1.job для источника P1.R, P2.job для источника P2.R и т.д. ... Источник master.R время от времени создает новые Px.job и Px.R и отправляет новое задание, созданное с помощью команды (в R) system("qsub Px.job").master.R действует как процесс мониторинга верхнего уровня и определяет, когда создавать и отправлять новые задания.

При подключении к кластеру с использованием SSH я могу просто вызвать R в консоли, а затем использовать команду:

> source("master.R")

И процесс запускается без проблем.Но таким образом мне придется оставить свой компьютер включенным, потому что, как только я отключусь от сервера, процесс будет убит.Поэтому мне нужно отправить работу master.job в pbs для моей цели.Однако, когда я сделал это таким образом, я столкнулся со следующей ошибкой при достижении шага system("qsub Px.job"):

socket_connect_unix не удалось: 15137

qsub: невозможно подключиться к серверу (null) (errno = 15137) не удалось подключиться к trqauthd

Есть предложения?Ясно, что я могу отправить задание через консоль R (либо system("qsub Px.job") или source("master.R")), но тогда почему не получается отправить то же задание (Px.job) через другой процесс R (master.R)Когда он вызывается по заданию (master.job)?


Я совершенно уверен, что кто-то спросит, зачем мне делать что-то подобное.

В начале ябыло только одно задание: P.job, источники P.R.P.R - это исходный код, который неоднократно вызывает другую проприетарную программу X. В программе X есть ошибка, которая не устранена в текущей версии, где в некоторых точках она зависает навсегда .Когда он замораживается, P.R не сможет его обнаружить (я также не могу внести никаких изменений в программу X).Поэтому мне нужен другой отдельный, независимый процесс, переданный в pbs, который может (1) уничтожить (с qdel) отправленное задание P.job (и, следовательно, P.R), когда дисковый ввод-вывод в определенных каталогах отсутствует для определенногоколичество времени, (2) проверить ход выполнения и (3) повторно отправить еще один P.job (который получит еще один P.R) в соответствии с ходом выполнения.

...