Как сохранить вывод при выполнении задания на кластере с помощью SLURM - PullRequest
1 голос
/ 07 ноября 2019

Я хочу запустить скрипт R, используя SLURM. Я создал скрипт R "test.R", как показано:

print("Running the test script")
write.csv(head(mtcars), "mtcars_data_test.csv")

Я создал скрипт bash для запуска этого скрипта R "submit.sh"

#!/bin/bash

#sbatch --job-name=test.job
#sbatch --output=.out/abc.out
Rscript  /home/abc/job_sub_test/test.R

И яотправил задание в кластер

sbatch submit.sh

Я не уверен, где сохранен мой вывод. Я посмотрел в домашнем каталоге, но без выходного файла.

Редактировать

Я также установил свой рабочий каталог в test.R, но ничего не изменилось.

setwd("/home/abc")
print("Running the test script")
write.csv(head(mtcars), "mtcars_data_test.csv")

Когда я запускал скрипт без SLURM Rscript test.R, он работал нормально и сохранял вывод в соответствии с заданным путем.

Ответы [ 2 ]

1 голос
/ 07 ноября 2019

Slurm установит рабочий каталог задания в каталог, который был рабочим каталогом при вводе команды sbatch.

Предполагая, что каталог /home смонтирован на всех вычислительных узлах, вы можете явно изменитьрабочий каталог с cd в сценарии отправки или setwd() в синтаксисе R. Но это не должно быть необходимым.

Три возможности:

  • либо задание вообще не запускалось из-за проблем конфигурации или оборудования;что вы можете узнать с помощью команды sacct, посмотрев на столбец state.
  • либо файл действительно был создан, но на вычислительном узле в файловой системе, которая не является общей;в этом случае лучшим вариантом будет SSH к вычислительному узлу (который вы можете узнать с помощью sacct) и поиск файла там;или
  • сценарий потерпел крах, и файл вообще не был создан, в этом случае вам нужно просмотреть выходной файл задания (.out/abc.out). Помните, что каталог .out должен присутствовать до запуска задания, и, поскольку он начинается с ., это будет скрытый файл, который отображается в ls только с аргументом -a.
0 голосов
/ 13 ноября 2019

Аргумент --output для sbatch относится к папке, из которой вы отправили задание. setwd внутри скрипта R не повлияет на него, потому что Slurm уже проанализировал этот аргумент и начал передавать выходные данные в файл к моменту запуска скрипта R.

Сначала, если вы хотите, чтобы вывод шел/home/abc/.out/ при отправке сценария убедитесь, что вы находитесь в своем домашнем каталоге, или укажите полный путь к аргументу --output.

Во-вторых, папка .out должна существовать;Я проверял это, и Slurm не создает его, если не создает.

...