SGE

=SGE : Sun Grid Engine=

Pour soumettre les jobs sur les noeuds du cluster il faut impérativement passer par l'interface SGE. La version installée est la 6.2, la documentation utilisateur de la version 6.1 du SGE au format pdf se trouve ici : [|sge_user_manual.pdf] (différences mineures avec la 6.2). Remarque : SGE raisonne en coeurs et non en processeurs, il génère automatiquement le hostfile pour mpi (script startmpi.sh).

1. soumettre un job : la commande "qsub"
====//** Pour soumettre un job à SGE, il faut d'abord créer un script qui contient les options et les commandes. Vous pouvez créer vos scripts à partir des exemples qui suivent. Attention, évitez le "copier-coller" à partir du navigateur, cela peut générer des caractères parasites dans votre script ( **//pour vous débarasser de ces caractères, passez d'abord le script par la commande "dos2unix").====

//**1.1 soumettre un job simple**//
qsub simple.sh


 * l'exemple du job //simple.sh// se trouve dans $SGE_ROOT/exemples/jobs/simple.sh :**

date sleep 20 date
 * 1) !/bin/sh
 * 2) This is a simple example of a SGE batch script
 * 3) request Bourne shell as shell for job
 * 4) $ -S /bin/sh
 * 5) print date and time
 * 1) Sleep for 20 seconds
 * 1) print date and time again

d'autres exemples se trouvent dans **$SGE_ROOT/exemples/jobs/**

//**1.2 Exemple Matlab**//
qsub sgetest.sh

détails du fichier sgetest.sh :

/apl/soft/matlab/2009b/bin/matlab -nodisplay -nodesktop -nojvm < test.m
 * 1) !/bin/sh
 * 2) $ -S /bin/sh
 * 1) $ -S /bin/sh

détails du programme test matlab : test.m :

f=fopen('fic.out','w') a=rand(10,10) fprintf(f,'%e10.3 ',a) fclose('all')

On peut ensuite voir le fichier résultat sgetest.sh.oXXXX (XXXX est le numéro du job affecté par SGE)

====//**1.3 exemple complexe : soumettre un job mpi (dakota) sur 6 coeurs (on suppose que l'utilisateur a copié le répertoire d'exemples dakota dans son répertoire de travail, et que la commande est exécutée à partir de ce répertoir**//**e**====

qsub -pe mpich 6 /root/Serviware/Tests/dakota.job

-bash-3.2$ qsub -pe mpich 6 /root/Serviware/Tests/dakota.job dakota_mogatest.in Your job 32 ("dakota.job") has been submitted -bash-3.2$

détails du fichier dakota.job :
-bash-3.2$ cat /root/Serviware/Tests/dakota.job pwd set -x export PATH="/opt/openmpi.gcc/1.2.8/bin:$PATH" export PATH="/apl/soft/Dakota/4.2/x86_64/bin/:$PATH" export PATH="$(pwd):$PATH" export LD_LIBRARY_PATH=/opt/openmpi.gcc/1.2.8/lib/ export OMPI_MCA_pls_rsh_agent=rsh caseList=$@ [ -z "$caseList" ] && caseList="dakota_rosenbrock.in dakota_pstudy.in" for case in $caseList;do mpirun -np $NSLOTS -machinefile $TMPDIR/machines dakota -i $case done -bash-3.2$
 * 1) !/bin/bash
 * 2) $ -pe mpich 6

//**1.4 Exemple ABAQUS**//
Lancement séquentiel de 3 jobs avec Abaqus 6.8-3 : le premier CUBE_DDM sur 1 CPU, le deuxième CUBE_DDM2 sur 2 CPU et le troisième CUBE_DDM4 sur 4 CPU. ( **NE JAMAIS DEPASSER 4 CPU !** )

qsub SGE_ABQ.sh

détails du fichier SGE_ABQ.sh : abq683 j=CUBE_DDM int abq683 j=CUBE_DDM2 cpu=2 int abq683 j=CUBE_DDM4 cpu=4 int

//**1.5 Exemple ANSYS12**//
Contrairement à Abaqus, le lien symbolique ANSYS12 ne fonctionne pas avec SGE et il est nécessaire de donner tout le chemin de l'executable ansys120. Lancement séquentiel de 3 jobs dans 3 répertoires différents (Mat2, Mat3 et Mat4) avec Ansys12 en tâche de fond (-b) sur la licence Academic Associate (-p aa_a) avec demande de mémoire étendue (-m) :

qsub SGE_ANSYS.sh

détails du fichier SGE_ANSYS.sh :

cd /home/benz/SALIMA-CS/Mat2 /apl/soft/ansys_inc/v120/ansys/bin/ansys120 -b -m -p aa_a -i 0_CS_MAT2.dat -o 0_CS_MAT2.out cd /home/benz/SALIMA-CS/Mat3 /apl/soft/ansys_inc/v120/ansys/bin/ansys120 -b -m -p aa_a -i 0_CS_MAT3.dat -o 0_CS_MAT3.out cd /home/benz/SALIMA-CS/Mat4 /apl/soft/ansys_inc/v120/ansys/bin/ansys120 -b -m -p aa_a -i 0_CS_MAT4.dat -o 0_CS_MAT4.out

2. qstat
moniteur texte, résultats dans fichier .job.XX

qstat <- voir ses jobs qstat -u '*' <- voir tous les jobs

-bash-3.2$ cat dakota.job.32 ... + mpirun -np 6 -machinefile /tmp/32.1.all.q/machines dakota -i dakota_mogatest.in Running MPI executable in serial mode. Running MPI executable in serial mode. Running MPI executable in serial mode. Running MPI executable in serial mode. Running MPI executable in serial mode. Running MPI executable in serial mode. DAKOTA version 4.2 released 11/05/2008. DAKOTA version 4.2 released 11/05/2008. ...

3. interface graphique qmon
qmon& jobarray : possibilité de lancer un job avec "n" sous-jobs l'interface "submit" du "qmon" sert à générer la ligne de commande "qsub" avec les bonnes options

**qconf -spl**
liste les environnements déclarés dans sge :

-bash-3.2$ qconf -spl make mpich mpich1 mpich16 mpich2 mpich32 mpich4 mpich8 openmp -bash-3.2$

**qconf -sp**
visualiser un environnement particulier :

-bash-3.2$ qconf -sp mpich pe_name mpich slots 999 user_lists NONE xuser_lists NONE start_proc_args /opt/sge/current/mpi/startmpi.sh -catch_rsh $pe_hostfile stop_proc_args /bin/true allocation_rule $fill_up control_slaves TRUE job_is_first_task FALSE urgency_slots min accounting_summary FALSE -bash-3.2$

4. qrsh
comme qsub mais en intéractif

ex:

qrsh -pe mpich 20 hostname

Rémarque : si le nouveau utilisateur est crée, il faut synchroniser les comptes car sinon, risque de mettre une file d'attente en erreur - dans cette situation, il faux exécuter la commande "clear error"

5. dépannage : si sge ne répond plus
vérifier :

ps axf | grep sge

sur toutes les machines, vérifier la présence des démons d'exécution sge :

/.../sge_execd

/opt/sge/.../sge_master

pour dépanner, chercher le message d'erreur à la fin du fichier :

ls /opt/sge/current/default/spool/qmaster/messages

1. relancer le master -bash-3.2$ /etc/init.d/sgemaster.matrics start 2. lancer execd sur le maître -bash-3.2$ /etc/init.d/sgeexecd.matrics start 3. sur les noeuds -bash-3.2$ dsh -a /etc/init.d/sgeexecd.matrics start

pour arrêter sge et tuer les jobs sur la machine concernée :

-bash-3.2$ /etc/init.d/sgeexecd.matrics stop

pour arrêter sge sans tuer les process :

-bash-3.2$ /etc/init.d/sgeexecd.matrics softstop


 * Remarque :**

si les jobs restent "pending" même quand les ressources sont disponibles et "qstat" répond "scheduler is not available" :

Can not get job info messages, scheduler is not available
 * 1) qstat -j 100

et si relancer le master ne suffit pas, dans ce cas nous avons testé avec succès l'arrêt et redémarrage du master (en effet, dans la version 6.2 le scheduler est integré au master)

-bash-3.2$ /etc/init.d/sgemaster.matrics stop -bash-3.2$ /etc/init.d/sgemaster.matrics start