Я отправляю задание 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
вместо рассмотрения абсолютного пути, но я понятия не имею, как это решить.