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édenteProchaine révisionLes deux révisions suivantes | ||
documentation:examples:submit_scripts [2015/11/03 08:44] – [job parallèle, variantes] ltaulell | documentation:examples:submit_scripts [2020/07/23 15:00] – [job parallèle] ltaulell | ||
---|---|---|---|
Ligne 2: | Ligne 2: | ||
<note warning> | <note warning> | ||
+ | |||
+ | <note tip>Many more examples scripts are available on our [[https:// | ||
+ | |||
===== job parallèle ===== | ===== job parallèle ===== | ||
Ligne 7: | Ligne 10: | ||
* Soumission avec un seul script | * Soumission avec un seul script | ||
* Usage du ''/ | * Usage du ''/ | ||
- | * Environnement Debian 7 | ||
- | * < | ||
* 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 16: | 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 22: | 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 29: | Ligne 32: | ||
### exporte les variables d' | ### exporte les variables d' | ||
#$ -V | #$ -V | ||
+ | ### mails en debut et fin d' | ||
+ | #$ -m b | ||
+ | #$ -m e | ||
- | ### sinon SGE travaille dans ~/ | ||
- | cd ${HOMEDIR} | ||
- | ### modeles: | + | ### sinon SGE travaille dans ~/ |
- | # | + | cd " |
- | #source / | + | |
- | #source / | + | |
### environment modules | ### environment modules | ||
- | source /usr/share/modules/ | + | source /usr/share/lmod/lmod/ |
- | module | + | module |
- | module load Base/psmn | + | |
- | module load openmpi/1.4.1-intel-11.1.069 | + | |
### definition SCRATCHDIR | ### definition SCRATCHDIR | ||
- | SCRATCHDIR=${SGE_O_WORKDIR/ | + | SCRATCH="/ |
+ | SCRATCHDIR=${SGE_O_WORKDIR/ | ||
### verif SCRATCHDIR | ### verif SCRATCHDIR | ||
echo " | echo " | ||
- | BINDIR="/ | + | BINDIR="/ |
- | EXEC="spinev" | + | EXEC="phylomerge" |
### PREFIX doit matcher le modele openmpi (ligne 18) | ### PREFIX doit matcher le modele openmpi (ligne 18) | ||
- | PREFIX=/softs/openmpi-1.4.1-intel-11.1.069 | + | PREFIX="/applis/PSMN/ |
- | MPIRUN=${PREFIX}/ | + | MPIRUN="${PREFIX}/ |
### necessaire si plusieurs noeuds | ### necessaire si plusieurs noeuds | ||
- | HOSTFILE=${TMPDIR}/ | + | ### HOSTFILE=${TMPDIR}/ |
### creation du repertoire de travail dans le /scratch | ### creation du repertoire de travail dans le /scratch | ||
if [[ ! -d " | if [[ ! -d " | ||
then | then | ||
- | /bin/mkdir -p ${SCRATCHDIR} | + | /bin/mkdir -p "${SCRATCHDIR}" |
fi | fi | ||
Ligne 68: | 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 75: | 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 | ||
### hostfile SGE si repartition sur plusieurs noeuds | ### hostfile SGE si repartition sur plusieurs noeuds | ||
- | /bin/cat ${TMPDIR}/ | + | ### ${TMPDIR}/ |
- | /bin/rm -f ${HOMEDIR}/ | + | / |
- | Master="`/ | + | /bin/rm -f "${HOMEDIR}/ |
- | /bin/echo $Master >> ${HOMEDIR}/ | + | Master=$(/ |
+ | / | ||
### 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, |
+ | " | ||
### 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 | ||
# | # | ||
### variables SGE | ### variables SGE | ||
- | HOMEDIR=/ | ||
### shell du job | ### shell du job | ||
#$ -S /bin/bash | #$ -S /bin/bash | ||
Ligne 113: | Ligne 113: | ||
#$ -N test1 | #$ -N test1 | ||
### file d' | ### file d' | ||
- | #$ -q monointelbig | + | #$ -q E5_test |
### charger l' | ### charger l' | ||
#$ -cwd | #$ -cwd | ||
Ligne 119: | Ligne 119: | ||
#$ -V | #$ -V | ||
### mails en debut et fin d' | ### mails en debut et fin d' | ||
- | #$ -m be | + | #$ -m b |
+ | #$ -m e | ||
# 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 ${HOMEDIR} | + | cd "${SGE_O_WORKDIR}" |
- | + | ||
### configurer l' | ### configurer l' | ||
- | source /usr/share/modules/init/bash | + | source /usr/share/lmod/lmod/ |
- | module use / | + | module load IntelComp/15.0.2 |
- | module load Base/psmn | + | |
- | module load intel/14.0.1 | + | |
### definition SCRATCHDIR | ### definition SCRATCHDIR | ||
- | SCRATCHDIR=/ | + | # |
+ | #SCRATCHDIR=${SGE_O_WORKDIR/" | ||
+ | SCRATCHDIR=" | ||
### verif SCRATCHDIR | ### verif SCRATCHDIR | ||
echo " | echo " | ||
Ligne 139: | Ligne 140: | ||
if [[ ! -d " | if [[ ! -d " | ||
then | then | ||
- | / | + | / |
else | else | ||
if [[ " | if [[ " | ||
Ligne 145: | 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 161: | 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 ===== | ||
+ | |||
+ | |||
+ | * variante utilisant [[documentation: | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | #!/bin/bash | ||
+ | #[...] | ||
+ | |||
+ | source / | ||
+ | module load R/3.2.4 | ||
+ | |||
+ | #[...] | ||
+ | </ | ||
* variante du script : Appel à plusieurs queues (même cluster) | * variante du script : Appel à plusieurs queues (même cluster) | ||
Ligne 212: | 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: | ||
- | SCRATCHDIR=${SGE_O_WORKDIR/ | + | SCRATCH="/scratch/Bio" |
- | # for tcsh/csh: | + | SCRATCHDIR=${SGE_O_WORKDIR/" |
- | #set SCRATCHDIR = `echo $SGE_O_WORKDIR | + | |
- | /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: | ||
- | SCRATCHDIR=${SGE_O_WORKDIR/ | + | SCRATCH="/ |
+ | SCRATCHDIR=${SGE_O_WORKDIR/ | ||
if [[ -d "/ | if [[ -d "/ | ||
then | then | ||
- | mkdir -p ${SCRATCHDIR} | + | mkdir -p "${SCRATCHDIR}" |
else | else | ||
echo "/ | echo "/ | ||
Ligne 254: | 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 263: | 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 "/ |
- | # pour scratch | + | then |
- | # if [[ -e "/ | + | SCRATCHDIR="/ |
- | then | + | elif [[ -d "/ |
- | | + | then |
- | else | + | SCRATCHDIR="/ |
- | echo "/ | + | |
- | exit 1 | + | |
- | fi | + | |
else | else | ||
- | | + | |
- | exit 1 | + | |
fi | fi | ||
+ | mkdir -p " | ||
</ | </ | ||
- | * variante : Job gaussian sur 8 coeurs | + | * variante : Job gaussian sur 8 coeurs |
<code bash> | <code bash> | ||
Ligne 291: | Ligne 312: | ||
#$ -q x41zlin32gb | #$ -q x41zlin32gb | ||
#$ -pe gaussian8 8 | #$ -pe gaussian8 8 | ||
- | |||
- | #[...] | ||
- | </ | ||
- | |||
- | * variante : Job gaussian sur 4 coeurs (mais réservation d'un noeud entier à 8 coeurs) | ||
- | |||
- | <code bash> | ||
- | #!/bin/bash | ||
- | ### SGE | ||
- | #$ -q sl390lin48 | ||
- | #$ -pe gaussian8 4 | ||
#[...] | #[...] | ||
Ligne 312: | Ligne 322: | ||
#[...] | #[...] | ||
- | cd ${SCRATCHDIR} | + | cd "${SCRATCHDIR}" || { echo " |
- | export GAUSS_SCRDIR=${SCRATCHDIR} | + | export GAUSS_SCRDIR="${SCRATCHDIR}" |
#[...] | #[...] | ||
Ligne 325: | Ligne 335: | ||
### SGE | ### SGE | ||
#$ -q sl390lin48 | #$ -q sl390lin48 | ||
- | #$ -pe gaussian8 | + | #$ -pe gaussian8 |
#$ -cwd | #$ -cwd | ||
#$ -V | #$ -V | ||
Ligne 331: | Ligne 341: | ||
NPERSOCKET=" | NPERSOCKET=" | ||
# | # | ||
- | ${MPIRUN} -prefix ${PREFIX} -mca btl sm, | + | "${MPIRUN}" |
</ | </ | ||
Ligne 341: | 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 358: | Ligne 368: | ||
# Variables pour OPENMP | # Variables pour OPENMP | ||
- | #export OMP_NUM_THREADS=$NSLOTS | + | #export OMP_NUM_THREADS=" |
- | export OMP_NUM_THREADS=8 | + | export OMP_NUM_THREADS=${NSLOTS} |
- | ${EXEC_DIR}/ | + | |
+ | "${EXEC_DIR}"/ | ||
</ | </ | ||
+ | <note tip>Many more examples scripts are available on our [[https:// | ||
- | * variante utilisant [[documentation: | ||
- | <code bash> | + | ===== Références ===== |
- | # | + | |
- | #[...] | + | |
- | ### modeles: | + | * https://wiki.crc.nd.edu/w/index.php/Submitting_an_array_Job_to_SGE |
- | # | + | * https://bioinformatics.uconn.edu/ |
- | # | + | |
- | # | + | |
- | + | ||
- | source | + | |
- | module use / | + | |
- | module load Base/psmn | + | |
- | module load openmpi/ | + | |
- | + | ||
- | #[...] | + | |
- | </code> | + |