[slurm-users] temporary SLURM directories

Diego Zuccato diego.zuccato at unibo.it
Mon May 23 10:56:53 UTC 2022


Hi Arsene.

I did something like that some weeks ago.

I used the lines
Prolog=/home/conf/Prolog.sh
TaskProlog=/home/conf/TaskProlog.sh
Epilog=/home/conf/Epilog.sh

The scripts for prolog and epilog manage the creation (and permissions 
assignment) of a directory in local storage (including the job ID, so 
that different jobs don't get messed up).

TaskProlog script should export an environment variable but I couldn't 
make it work :(
In your case, TaskProlog should copy the dataset to the local storage 
and then you should add a TaskEpilog script to copy back the result. I 
don't know if the TaskEpilog gets run for aborted jobs.

Moreover, IIRC you shouldn't do slow operations in task prolog or 
epilog, so in your case a state machine implemented as a job array could 
probably be better suited than TaskProlog/TaskEpilog (you'd need 
Prolog/Epilog anyway): the first "job" copies to scratch, the second 
does the number crunching and the third copies back the results.

HIH,
Diego

Il 23/05/2022 11:30, Arsene Marian Alain ha scritto:
> Dear SLURM users,
> 
> I am IT Administrator of a small scientific computing center. We 
> recently installed SLURM as a job scheduler on our Cluster and 
> everything seems to be working fine. I just have a question about how to 
> create temporary directories with SLURM.
> 
> We use some programs for scientific calculation (such as Gromacs, 
> Gaussian, NAMD, etc.). So, the process is the following:
> 
> When we need to launch a calculation the first step is to copy all the 
> necessary files from the local "$SLURM_SUBMIT_DIR" directory to the 
> "/scratch" of the remote node, second step is to access the "/scratch" 
> of the remote node and then run the program. Finally, when the program 
> finishes we copy all the output files from the remote node's "/scratch" 
> back to the local "$SLURM_SUBMIT_DIR" directory.
> 
> So, is there any way to automatically generate a temporary directory 
> inside the "/scratch" of the remote node?
> 
> At the moment I am creating that directory manually as follows:
> 
> "export HOMEDIR=$SLURM_SUBMIT_DIR
> 
> export SCRATCHDIR=/scratch/job.$SLURM_JOB_ID.$USER
> 
> export WORKDIR=$SCRATCHDIR
> 
> mkdir -p $WORKDIR
> 
> cp $HOMEDIR/* $WORKDIR
> 
> cd $WORKDIR
> 
> $NAMD/namd2 +idlepoll +p11 run_eq.namd > run_eq.log
> 
> wait
> 
> cp $WORKDIR/* $HOMEDIR"
> 
> The main problem when you create the "/scratch" manually is that in case 
> the calculation ends (successfully or unsuccessfully), users have to 
> check the "/scratch" and remove the directory manually. I know I could 
> include a line at the end of my script to delete that directory when the 
> calculation is done, but I'm sure there must be a better way to do this.
> 
> Thanks in advance for the help.
> 
> best regards,
> 
> Alain
> 

-- 
Diego Zuccato
DIFA - Dip. di Fisica e Astronomia
Servizi Informatici
Alma Mater Studiorum - Università di Bologna
V.le Berti-Pichat 6/2 - 40127 Bologna - Italy
tel.: +39 051 20 95786



More information about the slurm-users mailing list