Pour lancer des tâches parallèles à l'aide de SGE, il faut savoir,
lors de l'écriture d'un script de tâche (qui reste très similaire aux
scripts séquentiels), que le nombre de noeuds et la liste des noeuds
disponibles est fourni par SGE. Ces deux quantités sont utilisables à
l'intérieur d'un script parallèle grâce aux variables
$NSLOTS et $TMPDIR générées par SGE lors de
l'invocation d'un environnement parallèle de lancement. Le script
tache_par.sh
donne un exemple simple d'utilisation:
#! /bin/sh
# Ceci est un tres simple exemple de tache sequentielle
# Options SGE:
# utilise /bin/sh:
#$ -S /bin/sh
#
# nom:
#$ -N MaTacheParallele
#
# envoie un courriel lorsque la tache a fini
#$ -m e
#
# etablit des variables d'environnement
#$ -v PATH,MPI_DIR=/usr/local/mpich_gm
#
# predefinit un environnement parallele
#$ -pe mpich_pair 2-16
#
# utilise le repertoire courant pour lancer la job
#$ -cwd
# recoit dans
# $NSLOTS
# le nombre de noeuds qui sont utilises
# $TMPDIR/machines
# la liste valide de noeuds a utiliser, pour passer a mpirun
$MPI_DIR/bin/mpirun.ch_gm -np $NSLOTS -machinefile $TMPDIR/machines \
/home/mefpp_example/GIREF/bin/probDiffusion.opt /home/mefpp_example/projets/feracheval/fera12
Avec ce script, la tâche de calcul parallèle est soumise avec la commande:
qsub tache_par.sh
Pour changer les valeurs de certains paramètres qui sont précisés
dans le script de tâche, il n'est pas nécessaire d'éditer le script
puisqu'il suffit de préciser les nouvelles valeurs sur la ligne de
commande. Les valeurs des paramètres indiqués sur la ligne de commande
ont précédence (voir `man qsub`). Par
exemple, pour exécuter la tâche parallèle tache_par.sh
sur plus que 16 noeuds, il suffit d'écrire:
qsub -pe mpich_pair 24 tache_par.sh
|