Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to configure the directory for sbatch's default output file?

Tags:

slurm

Is there some way to configure an alternative default directory (other than the current directory) for sbatch to put the file slurm-%j.out (or slurm-%A_%a.out) that it generates when the -o is not specified?

My goals here are to have a convenient/low-maintenance way to

  1. consolidate all default output files generated by sbatch in one place; and
  2. avoid cluttering the current directory with such files.

I had hoped to find something like a SLURM_DEFAULT_OUTPUT_DIRECTORY environment variable to take care of this, but if there is such a variable, I managed to miss it.

Is there some other mechanism to achieve the desired results?


(FWIW, the only precedent that comes to mind for the functionality I'm after is Emacs's backup-directory-alist, which tells Emacs were to put the backup files it generates by default. This feature is more sophisticated than what I'm after, because it supports multiple such directories, to be used according to patterns in the original filenames.)

like image 267
kjo Avatar asked Sep 28 '17 11:09

kjo


3 Answers

Pass a log file into a folder as follows in bash script:

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

This will put the output files in "Report" folder next to your batch script.

like image 148
milihoosh Avatar answered Oct 20 '22 18:10

milihoosh


The .sh file below will save the slurm output .out file at

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

where %j is the jobid of the running job as explained here.

So, in the output directory mentioned above you'll find something similar to this:

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
like image 35
Matheus Torquato Avatar answered Oct 20 '22 19:10

Matheus Torquato


An other option is to use a Job Submit Plugin.

You can write such a plugin either in C or in LUA so it forces the output file (default base name but your own directory in your case) if not already set by the script nor the command line.

like image 1
Gilles Gouaillardet Avatar answered Oct 20 '22 19:10

Gilles Gouaillardet