是否有某种方法可以配置替代默认目录(当前目录除外)sbatch以放置未指定时生成的文件slurm-%j.out(或slurm-%A_%a.out)-o?
我的目标是有一种方便/低维护的方式来
sbatch到一个地方;和我曾希望找到类似SLURM_DEFAULT_OUTPUT_DIRECTORY环境变量的东西来解决这个问题,但如果有这样的变量,我设法错过了它。
是否有其他机制可以达到预期的结果?
(FWIW,我所追求的功能的唯一先例是 Emacs 的backup-directory-alist,它告诉 Emacs 将默认情况下放置它生成的备份文件。这个功能比我所追求的更复杂,因为它支持多个这些目录,根据原始文件名中的模式使用。)
将日志文件传递到 bash 脚本中的文件夹中,如下所示:
#SBATCH -o ./Report/output.%a.out # STDOUT
Run Code Online (Sandbox Code Playgroud)
这会将输出文件放在批处理脚本旁边的“报告”文件夹中。
下面的.sh文件将 slurm 输出 .out 文件保存在
“ /home/YOUR_USER/lustre/PROJECT/output/%j.out ”
其中 %j 是正在运行的作业的 jobid,如此处所述。
因此,在上面提到的输出目录中,您会发现类似的内容:
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
Run Code Online (Sandbox Code Playgroud)
小智 0
我遇到了同样的问题,我的解决方案是将提交脚本复制到指定用于输出的目录中。然后我运行位于输出目录中的脚本。打算使用 SLURM 提交的代码目录可以通过环境变量动态地传递到作业脚本。也可以在执行代码之前将代码目录设置为工作目录。我希望有人觉得这个解决方案有帮助。