Отправлять задания R в slurm на сервер кластера и сохранять объекты в другом каталоге, чем рабочий каталог slurm. - PullRequest
1 голос
/ 07 ноября 2019

Я отправляю задание R на кластерный сервер, который, кажется, работает правильно, поскольку я сохраняю результаты в том же рабочем каталоге, в котором находятся мои файлы сценариев. На самом деле я хочу сохранить результаты из R (через saveRDS()) в другом каталоге (например, /var/tmp/results), но я думаю, что Slurm перенаправляет вывод моего bash-скрипта в свой рабочий каталог, вызывая ошибку No such file or directory R.

Я осмотрелся, но не смог найти способ указать другой путь для задания, полученного в результате. Возможно, я использовал неправильные ключи из-за моих языковых ограничений, так как я не являюсь носителем английского языка, и я прежде извиняюсь, если это что-то тривиальное.

Я добавлю в следующий скрипт, который я вызываю, т.е. my_script.sh

#!/bin/bash
#SBATCH --ntasks=1
#SBATCH --array=1-2
#SBATCH --mem-per-cpu=15000                  
#SBATCH -e hostname_%j.err               
#SBATCH -o hostname_%j.out

module load R

FILES=($HOME/simulation_study_bnp/models/*.R)
FILE=${FILES[$SLURM_TASK_ARRAY_ID]}

echo ${FILE}

srun Rscript runModel.R ${FILES[$SLURM_ARRAY_TASK_ID]}

Сценарий R runModel получает код каждого файла в папке modelsзагрузить некоторые данные и выполнить анализ. Все необходимые файлы находятся в $HOME/simulation_study_bnp/models/, где $HOME является моим домашним каталогом на сервере (например, / users / my_dir).

Сценарий R runModel.R должен сохранить часть результатов, но по другому пути, например /var/tmp/results/ вне моего $HOME. Когда я запускаю что-то вроде Rscript runModel.R models/filename.R, все работает нормально. После некоторых испытаний мое мнение таково, что при отправке my_script.sh через sbatch процесс ищет /var/tmp/results/ в моем $HOME вместо рассмотрения абсолютного пути, но я понятия не имею, как это решить.

...