是否有某种方法可以为sbatch
配置另一个默认目录(当前目录除外),以便在{{slurm-%j.out
时放置它生成的文件slurm-%A_%a.out
(或-o
) 1}}未指定?
我的目标是提供方便/低维护的方式
sbatch
生成的所有默认输出文件合并到一个位置;和我原本希望找到类似SLURM_DEFAULT_OUTPUT_DIRECTORY
环境变量的东西来处理这个问题,但如果有这样的变量,我就会错过它。
是否有其他机制可以达到预期效果?
(FWIW,我所追求的功能唯一的先例是Emacs的backup-directory-alist
,它告诉Emacs默认放置它生成的备份文件。这个功能比我更复杂之后,因为它支持多个这样的目录,根据原始文件名中的模式使用。)
答案 0 :(得分:3)
您可以使用以下内容编辑批处理脚本中输出的路径:
#SBATCH -o ./Report/output.%a.out#STDOUT
这会将输出文件放在批处理脚本旁边的“Report”文件夹中。
答案 1 :(得分:1)
另一种选择是使用Job Submit Plugin。
您可以在C
或LUA
中编写这样的插件,因此它会强制输出文件(默认基本名称,但在您的情况下是您自己的目录),如果尚未由脚本设置,也不是命令行。
答案 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一起提交的代码目录可以通过环境变量动态地传递给作业脚本。在执行代码之前,代码目录也可以设置为工作目录。我希望有人觉得这个解决方案很有帮助。