gpt4 book ai didi

r - 在集群服务器上的 slurm 中提交 R 作业,并将对象保存在与 slurm 工作目录不同的目录中

转载 作者:行者123 更新时间:2023-12-05 07:17:34 45 4
gpt4 key购买 nike

我正在集群服务器上提交一个 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 进程在我的 $HOME 下寻找 /var/tmp/results/考虑绝对路径,但我不知道如何解决这个问题。

最佳答案

正如@carles-fenoy 所指出的,您必须确保所有计算节点都必须可以访问作业正在写入的目录。通常,大型集群确实有一个所有节点都可以访问的专用存储空间(参见例如 USC 的 scratch dir )。询问您的集群 IT 经理,看看您的集群中有什么。

我要提到的另一件事是值得您检查符号链接(symbolic link)。您可以在主目录中有一个符号链接(symbolic link),指向位于具有更多空间的节点中的另一个文件夹。我为我的 R 程序包执行此操作,如图所示 here .这样我就不必担心空间不足!

关于r - 在集群服务器上的 slurm 中提交 R 作业,并将对象保存在与 slurm 工作目录不同的目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58742886/

45 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com