Projet

Général

Profil

GAUSSIAN G16

Voici dans un premier temps un script de soumission :

#!/bin/csh -x
#SBATCH -o gaussian.%j.out
#SBATCH --nodes=1
#SBATCH --ntasks=16
#SBATCH --mem-per-cpu=2500mb
#SBATCH -t 24:00:00
#SBATCH --comment="gaussian without gpu" 

# load the module environment 
#debian case
if ( -f /etc/csh/login.d/modules ) then
source /etc/csh/login.d/modules
endif

#redhat case
if ( -f /etc/profile.d/modules.csh ) then
source /etc/profile.d/modules.csh
endif

# and the gaussian module
module load gaussian/g16-B.01

# load environment variable for gaussian
# first option using TMPDIR
source $g16root/g16/bsd/g16.login
# second option using scratch dir. To use it, comment first option and uncomment next line.
# source $g16root/g16/bsd/g16.login.scratch
# just to debug
env
# create an id for storing result of this job
setenv SJID "$SLURM_JOB_NAME"_"`echo $SLURM_JOB_ID | cut -d . -f 1`_`date '+%d%m%Y'`" 
if (! -d $GAUSS_SCRDIR ) then
        mkdir -p $GAUSS_SCRDIR

endif
# this part is only to use this script in interactive mode without slurm system
if ! $?SLURM_JOB_ID then
   setenv SLURM_SUBMIT_DIR $PWD
   setenv SLURM_JOB_NAME $1
   setenv SLURM_JOB_ID "S"`date '+%H%M%S'`
endif

# go to the computation directory and copy input
cd $GAUSS_SCRDIR
cp -p $SLURM_SUBMIT_DIR/$SLURM_JOB_NAME.c* .
# modify or create NProcShared to use the same as define in SBATCH
set lineproc=`grep -ic "\%nproc" "./$SLURM_JOB_NAME.com"`
    if ( "$lineproc" != 0 ) then
        foreach occurence (`grep -i "\%nproc" ./$SLURM_JOB_NAME.com `)
            sed -i "s/$occurence/%NProcShared=$SLURM_JOB_CPUS_PER_NODE/" ./$SLURM_JOB_NAME.com 
        end
    else
         sed -i  "1i\%NProcShared=$SLURM_JOB_CPUS_PER_NODE"  ./$SLURM_JOB_NAME.com
    endif
echo "SLURM_JOB_CPUS_PER_NODE = "$SLURM_JOB_CPUS_PER_NODE

# modify or create Mem to use the same as define in SBATCH
#compute mem first
@ RMEM= $SLURM_JOB_CPUS_PER_NODE * $SLURM_MEM_PER_CPU - 100
set lineproc=`grep -ic "\%mem" "./$SLURM_JOB_NAME.com"`
    if ( "$lineproc" != 0 ) then
        foreach occurence (`grep -i "\%mem" ./$SLURM_JOB_NAME.com `)
            sed -i "s/$occurence/%Mem=${RMEM}MB/" ./$SLURM_JOB_NAME.com 
        end
    else
         sed -i  "1i\%Mem=${RMEM}MB"  ./$SLURM_JOB_NAME.com
    endif
echo "SLURM_MEM_PER_CPU = "$SLURM_MEM_PER_CPU 
# start gaussian calculation
#alias timit '/usr/bin/time -f "Elapsed: %e  User: %U  System: %S  PageF: %F"'
 g16 $SLURM_JOB_NAME.com

# return of ooutput in the directory we have submit the calculation and where must be the .com inputfile
mkdir -p $SLURM_SUBMIT_DIR/$SJID
mv -f * $SLURM_SUBMIT_DIR/$SJID

#liberation du scratch
/bin/rm -rf $GAUSS_SCRDIR

Pour utiliser ce script il suffit de ce placer dans le répertoire où se trouve votre fichier d'entré avec l'extension .com est de taper :

sbatch -J <nom du fichier sans l'extension> <chemin vers le script de soumission> 

par exemple, si mon arborescence est la suivante :
[paurel@login01 home]$ tree
.
└── paurel
    ├── Calcul
    │   └── Gaussian
    │       └── butoxyiso_MP2.com
    └── gaussian_16.slurm

3 directories, 2 files

gaussian_16.slurm étant le script de soumission ci dessus et butoxyiso.com mon fichier input.
Je dois me placer dans le répertoire où se trouve mon input grace à la commande:
 cd ~/Calcul/Gaussian 

Puis lancer le job avec la commande:
 sbatch -J buoxyiso ~/gaussian_16.slurm 

Les résultats me reviendront dans un répertoire de la forme butoxyiso_<numero du job>_<date de la soumission sous la forme jjmmyyyy>