Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
documentation:examples:submit_scripts [2020/04/16 14:50] – [job parallèle] ltaulell | documentation:examples:submit_scripts [2020/08/25 15:58] – modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
<note warning> | <note warning> | ||
+ | |||
+ | <note tip>Many more examples scripts are available on our [[https:// | ||
Ligne 9: | Ligne 11: | ||
* Usage du ''/ | * Usage du ''/ | ||
* Configuration de l' | * Configuration de l' | ||
+ | * Parallel Environment and '' | ||
+ | * OpenMP **must** match (-pe openmp8 8) | ||
+ | * OpenMPI **must** match **or** multiple (-pe mpi8_debian 8, -pe mpi8_debian 32) | ||
**Le script suivant se lance avec la commande** : '' | **Le script suivant se lance avec la commande** : '' | ||
Ligne 15: | Ligne 20: | ||
#!/bin/bash | #!/bin/bash | ||
### variables SGE | ### variables SGE | ||
- | HOMEDIR=$SGE_O_WORKDIR | ||
### shell du job | ### shell du job | ||
#$ -S /bin/bash | #$ -S /bin/bash | ||
Ligne 21: | Ligne 25: | ||
#$ -N testbash | #$ -N testbash | ||
### file d' | ### file d' | ||
- | #$ -q E5-2670deb68A | + | #$ -q E5_test |
### parallel environnement & nslots (a changer) | ### parallel environnement & nslots (a changer) | ||
#$ -pe mpi8_debian 8 | #$ -pe mpi8_debian 8 | ||
Ligne 34: | Ligne 38: | ||
### sinon SGE travaille dans ~/ | ### sinon SGE travaille dans ~/ | ||
- | cd ${HOMEDIR} | + | cd "${SGE_O_WORKDIR}" |
### environment modules | ### environment modules | ||
Ligne 50: | Ligne 54: | ||
### PREFIX doit matcher le modele openmpi (ligne 18) | ### PREFIX doit matcher le modele openmpi (ligne 18) | ||
- | PREFIX=/ | + | PREFIX="/ |
- | MPIRUN=${PREFIX}/ | + | MPIRUN="${PREFIX}/ |
### necessaire si plusieurs noeuds | ### necessaire si plusieurs noeuds | ||
### HOSTFILE=${TMPDIR}/ | ### HOSTFILE=${TMPDIR}/ | ||
Ligne 58: | Ligne 62: | ||
if [[ ! -d " | if [[ ! -d " | ||
then | then | ||
- | /bin/mkdir -p ${SCRATCHDIR} | + | /bin/mkdir -p "${SCRATCHDIR}" |
fi | fi | ||
Ligne 65: | Ligne 69: | ||
for FICHIER in INPUT.hdf5 MATHRICE cube3x3 | for FICHIER in INPUT.hdf5 MATHRICE cube3x3 | ||
do | do | ||
- | cp ${FICHIER} ${SCRATCHDIR}/ | + | cp -- "${FICHIER}" "${SCRATCHDIR}/ |
done | done | ||
Ligne 72: | Ligne 76: | ||
for FICHIER in OUTPUT.hdf5 mathrice.o | for FICHIER in OUTPUT.hdf5 mathrice.o | ||
do | do | ||
- | if [[ -e " | + | if [[ -e " |
then | then | ||
- | /bin/rm -f ${SCRATCHDIR}/ | + | /bin/rm -f "${SCRATCHDIR}/ |
fi | fi | ||
done | done | ||
Ligne 80: | Ligne 84: | ||
### hostfile SGE si repartition sur plusieurs noeuds | ### hostfile SGE si repartition sur plusieurs noeuds | ||
### ${TMPDIR}/ | ### ${TMPDIR}/ | ||
- | /bin/cat ${TMPDIR}/ | + | / |
- | /bin/rm -f ${HOMEDIR}/ | + | /bin/rm -f "${HOMEDIR}/ |
- | Master="`/ | + | Master=$(/ |
- | /bin/echo $Master >> ${HOMEDIR}/ | + | / |
### se placer dans le repertoire d' | ### se placer dans le repertoire d' | ||
- | cd ${SCRATCHDIR} | + | cd "${SCRATCHDIR}" || { echo " |
##${MPIRUN} -prefix ${PREFIX} -mca btl sm, | ##${MPIRUN} -prefix ${PREFIX} -mca btl sm, | ||
- | ${MPIRUN} -prefix ${PREFIX} -mca btl vader, | + | "${MPIRUN}" |
### recuperation des resultats à la fin du calcul | ### recuperation des resultats à la fin du calcul | ||
for FICHIER in OUTPUT.hdf5 mathrice.o | for FICHIER in OUTPUT.hdf5 mathrice.o | ||
do | do | ||
- | cp ${SCRATCHDIR}/ | + | cp -- "${SCRATCHDIR}/ |
done | done | ||
### | ### | ||
- | |||
</ | </ | ||
<code bash test_scratch.sh> | <code bash test_scratch.sh> | ||
- | |||
#!/bin/bash | #!/bin/bash | ||
# | # | ||
Ligne 111: | Ligne 113: | ||
#$ -N test1 | #$ -N test1 | ||
### file d' | ### file d' | ||
- | #$ -q AMD7702deb512 | + | #$ -q E5_test |
### charger l' | ### charger l' | ||
#$ -cwd | #$ -cwd | ||
Ligne 122: | Ligne 124: | ||
# aller dans le repertoire de travail/ | # aller dans le repertoire de travail/ | ||
# important, sinon, le programme est lancé depuis ~/ | # important, sinon, le programme est lancé depuis ~/ | ||
- | cd ${SGE_O_WORKDIR} | + | cd "${SGE_O_WORKDIR}" || { echo " |
- | + | ||
### configurer l' | ### configurer l' | ||
source / | source / | ||
Ligne 138: | Ligne 140: | ||
if [[ ! -d " | if [[ ! -d " | ||
then | then | ||
- | / | + | / |
else | else | ||
if [[ " | if [[ " | ||
Ligne 144: | Ligne 146: | ||
# cette commande est DANGEREUSE ! | # cette commande est DANGEREUSE ! | ||
# | # | ||
- | / | + | / |
fi | fi | ||
fi | fi | ||
### copie des fichiers sources dans le /scratch | ### copie des fichiers sources dans le /scratch | ||
- | /bin/cp ${HOMEDIR}/ | + | / |
### se placer dans le repertoire d' | ### se placer dans le repertoire d' | ||
- | cd ${SCRATCHDIR} | + | cd "${SCRATCHDIR}" || { echo " |
### execution du programme | ### execution du programme | ||
Ligne 160: | Ligne 162: | ||
### recuperation des resultats à la fin du calcul | ### recuperation des resultats à la fin du calcul | ||
- | /bin/cp ${SCRATCHDIR}/ | + | / |
### delete le dossier sur /scratch | ### delete le dossier sur /scratch | ||
if [[ " | if [[ " | ||
then | then | ||
- | /bin/rm -rf ${SCRATCHDIR} | + | /bin/rm -rf "${SCRATCHDIR}" |
fi | fi | ||
### | ### | ||
# fin | # fin | ||
- | |||
</ | </ | ||
===== job parallèle, variantes ===== | ===== job parallèle, variantes ===== | ||
Ligne 225: | Ligne 226: | ||
* variante : Copie des inputs dans ''/ | * variante : Copie des inputs dans ''/ | ||
- | <code bash> | + | <code bash var1_copy_inputs.sh> |
#!/bin/bash | #!/bin/bash | ||
#[...] | #[...] | ||
# Copy input from home to scratch (pick bash or tcsh version) | # Copy input from home to scratch (pick bash or tcsh version) | ||
- | cd $SGE_O_WORKDIR | + | cd "${SGE_O_WORKDIR}" || { echo " |
# for bash: | # for bash: | ||
SCRATCH="/ | SCRATCH="/ | ||
SCRATCHDIR=${SGE_O_WORKDIR/" | SCRATCHDIR=${SGE_O_WORKDIR/" | ||
- | # for tcsh/csh: | + | |
- | #set SCRATCHDIR = `echo $SGE_O_WORKDIR | awk -F "/" | + | /bin/mkdir -p "${SCRATCHDIR}" |
- | /bin/mkdir -p $SCRATCHDIR | + | |
- | /bin/cp -rf $INPUT $SCRATCHDIR/ | + | # you only can know what $INPUT is |
+ | /bin/cp -rf -- "${INPUT}" "${SCRATCHDIR}/" | ||
# go to scratch (instead of workdir) before running binary | # go to scratch (instead of workdir) before running binary | ||
- | cd ${SCRATCHDIR} | + | cd "${SCRATCHDIR}" || { echo " |
# run whatever binary | # run whatever binary | ||
- | whatever < $INPUT > $OUTPUT | + | whatever < "${INPUT}" |
# copy results from scratch to home | # copy results from scratch to home | ||
- | /bin/cp -r $SCRATCHDIR/ | + | /bin/cp -r -- "${SCRATCHDIR}/${OUTPUT}" "${SGE_O_WORKDIR}/" |
</ | </ | ||
* variante : Vérification de l' | * variante : Vérification de l' | ||
- | <code bash> | + | <code bash var1_scratch_exist.sh> |
#!/bin/bash | #!/bin/bash | ||
#[...] | #[...] | ||
- | cd $SGE_O_WORKDIR | + | cd "${SGE_O_WORKDIR}" || { echo " |
# for bash: | # for bash: | ||
SCRATCH="/ | SCRATCH="/ | ||
Ligne 263: | Ligne 266: | ||
if [[ -d "/ | if [[ -d "/ | ||
then | then | ||
- | mkdir -p ${SCRATCHDIR} | + | mkdir -p "${SCRATCHDIR}" |
else | else | ||
echo "/ | echo "/ | ||
Ligne 269: | Ligne 272: | ||
fi | fi | ||
- | /bin/cp -rf $INPUT $SCRATCHDIR/ | + | /bin/cp -rf "${INPUT}" "${SCRATCHDIR}/" |
# go to scratch (instead of workdir) before running binary | # go to scratch (instead of workdir) before running binary | ||
- | cd ${SCRATCHDIR} | + | cd "${SCRATCHDIR}" || { echo " |
</ | </ | ||
Ligne 278: | Ligne 282: | ||
* variante : Vérification de l' | * variante : Vérification de l' | ||
- | <code bash> | + | <code bash var1_create_scratch.sh> |
+ | #!/bin/bash | ||
### creation avec verification scratch global | ### creation avec verification scratch global | ||
- | if [[ -d "/ | + | ### avoid bash substitution |
+ | ### SCRATCHDIR=${SGE_O_WORKDIR/" | ||
+ | |||
+ | if [[ -d "/ | ||
then | then | ||
- | # pour scratch | + | SCRATCHDIR="/ |
- | | + | elif [[ -d "/ |
- | | + | then |
- | # pour scratch | + | |
- | # if [[ -e "/ | + | elif [[ -d "/ |
- | # SCRATCH="/ | + | then |
- | then | + | SCRATCHDIR="/ |
- | SCRATCHDIR=${SGE_O_WORKDIR/"${HOME}"/"${SCRATCH}"} | + | |
- | mkdir -p ${SCRATCHDIR} | + | |
- | else | + | |
- | echo "/scratch not found, cannot create ${SCRATCHDIR}" | + | |
- | exit 1 | + | |
- | fi | + | |
else | else | ||
- | | + | |
- | exit 1 | + | |
fi | fi | ||
+ | mkdir -p " | ||
</ | </ | ||
Ligne 319: | Ligne 322: | ||
#[...] | #[...] | ||
- | cd ${SCRATCHDIR} | + | cd "${SCRATCHDIR}" || { echo " |
- | export GAUSS_SCRDIR=${SCRATCHDIR} | + | export GAUSS_SCRDIR="${SCRATCHDIR}" |
#[...] | #[...] | ||
Ligne 338: | Ligne 341: | ||
NPERSOCKET=" | NPERSOCKET=" | ||
# | # | ||
- | ${MPIRUN} -prefix ${PREFIX} -mca btl vader, | + | "${MPIRUN}" |
</ | </ | ||
Ligne 348: | Ligne 351: | ||
#!/bin/bash | #!/bin/bash | ||
### variables SGE | ### variables SGE | ||
- | HOMEDIR=$SGE_O_WORKDIR | + | HOMEDIR="${SGE_O_WORKDIR}" |
### shell du job: | ### shell du job: | ||
#$ -S /bin/bash | #$ -S /bin/bash | ||
Ligne 365: | Ligne 368: | ||
# Variables pour OPENMP | # Variables pour OPENMP | ||
- | #export OMP_NUM_THREADS=8 | + | #export OMP_NUM_THREADS="8" |
- | export OMP_NUM_THREADS=$NSLOTS | + | export OMP_NUM_THREADS=${NSLOTS} |
- | ${EXEC_DIR}/ | + | "${EXEC_DIR}"/ |
</ | </ | ||
+ | |||
+ | <note tip>Many more examples scripts are available on our [[https:// | ||
+ | |||
===== Références ===== | ===== Références ===== |