首页 > 解决方案 > 使用 SLURM 在集群上运行作业时如何保存输出

问题描述

我想使用 SLURM 运行 R 脚本。我创建了 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的情况下运行脚本时,它运行良好并根据设置的路径保存了输出。

标签: rslurm

解决方案


Slurm 会将作业工作目录设置sbatch为发出命令时的工作目录。

假设/home目录安装在所有计算节点上,您可以cd在提交脚本或setwd()R 语法中显式更改工作目录。但这不应该是必要的。

三种可能:

  • 由于配置或硬件问题,工作根本没有开始;您可以通过查看该列的sacct命令找到。state
  • 该文件确实已创建,但在未共享的文件系统上的计算节点上;在这种情况下,最好的选择是通过 SSH 连接到计算节点(您可以使用 找到sacct)并在那里查找文件;或者
  • 脚本崩溃并且根本没有创建文件,在这种情况下,您应该查看作业的输出文件 ( .out/abc.out)。请注意,该.out目录必须在作业开始之前存在,并且由于它以 开头.,因此它将是一个隐藏文件,ls仅通过-a参数显示。

推荐阅读