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

Reply via email to