是否可以为sbatch的默认输出文件配置目录?

时间:2017-09-28 11:46:58

标签: slurm

是否有某种方法可以为sbatch配置另一个默认目录(当前目录除外),以便在{{slurm-%j.out时放置它生成的文件slurm-%A_%a.out(或-o) 1}}未指定?

我的目标是提供方便/低维护的方式

  1. sbatch生成的所有默认输出文件合并到一个位置;和
  2. 避免使用此类文件混乱当前目录。
  3. 我原本希望找到类似SLURM_DEFAULT_OUTPUT_DIRECTORY环境变量的东西来处理这个问题,但如果有这样的变量,我就会错过它。

    是否有其他机制可以达到预期效果?

    (FWIW,我所追求的功能唯一的先例是Emacs的backup-directory-alist,它告诉Emacs默认放置它生成的备份文件。这个功能比我更复杂之后,因为它支持多个这样的目录,根据原始文件名中的模式使用。)

4 个答案:

答案 0 :(得分:3)

您可以使用以下内容编辑批处理脚本中输出的路径:

#SBATCH -o ./Report/output.%a.out#STDOUT

这会将输出文件放在批处理脚本旁边的“Report”文件夹中。

答案 1 :(得分:1)

另一种选择是使用Job Submit Plugin

您可以在CLUA中编写这样的插件,因此它会强制输出文件(默认基本名称,但在您的情况下是您自己的目录),如果尚未由脚本设置,也不是命令行。

答案 2 :(得分:1)

下面的 .sh 文件会将 slurm 输出 .out 文件保存在

"/home/YOUR_USER/lustre/PROJECT/output/%j.out"

其中 %j 是正在运行的作业的作业 ID,如 here 所述。

因此,在上面提到的输出目录中,您会发现类似以下内容:

399937.out

#!/bin/bash
#SBATCH --job-name=JOB_ID_NAME
#SBATCH --time=4-00:00          # adjust this to match the walltime of your job
#SBATCH --cpus-per-task=28      # adjust this if you are using parallel commands
#SBATCH --mem=1000              # adjust this according to the memory requirement per node you need
#SBATCH --mail-user=YOUR-EMAIL  # adjust this to match your email address
#SBATCH --mail-type=ALL
#SBATCH --output=/home/YOUR_USER/lustre/PROJECT/output/%j.out

答案 3 :(得分:0)

我遇到了同样的问题,我的解决方案是将提交脚本复制到为输出指定的目录中。然后我运行了位于输出目录中的脚本。打算与SLURM一起提交的代码目录可以通过环境变量动态地传递给作业脚本。在执行代码之前,代码目录也可以设置为工作目录。我希望有人觉得这个解决方案很有帮助。