SGE: Sun Grid Engine, est un gestionnaire de travaux (batch scheduler).
Depuis 2011, est remplacé par 2 projets libres qui partent des sources de la dernière version publiée libre:
Installation
Tout est installé dans /local/export/sge (chemin utilisé sur les machines de l'IUSTI). Ce dossier est partagé sur toutes les machines de calcul, puisqu'il contient entre autres les spoolers.
Configuration
les files
Les machines de calcul sont organisées en files de travaux. Le nom des files doit permettre de se faire une idée des caractéristiques de la file, en terme de ressources disponibles (le but étant de partager le maximum de ressources entre chaque utilisateur).
En cas de doute, utiliser la queue “small” par défaut
queue | procs | memory/procs | slots | commentaires |
---|---|---|---|---|
small | 8 | 3Go | 5 | machine octopus |
big | 8 | 3Go | 1 | |
long | 8 | 2Go | 8 | 2 machines, charybde et scylla, à réserver au parallèle MPI |
latp | 32 | 256Go | 30 | cette queue est soumise à restriction |
Soumettre un job
séquentiel
parallèle
Exemple simple sur holopherne (les homedir ne sont pas en réseau):
/usr/lib64/openmpi/bin/mpirun -np $NSLOTS /usr/bin/hostname
et on lance:
qsub -q latp -pe impi 4 -cwd -j y ./exemple2.sh Your job 18540 ("exemple2.sh") has been submitted
Voici un autre exemple de script plus complexe, pour lancer un job parallèle (limité à 8 instances) sur la queue long (autre serveur avec homedir en réseau)
#!/bin/sh # #$ -S /bin/sh #$ -N "calcul_qsub" #$ -j y #$ -M me@cmi.univ-mrs.fr #$ -m be #$ -cwd # queue Long #$ -q long #$ -pe mpi_labo 8 PATHINIT=$PWD cd ~/pelicans/trunksource pel_env_new cd $PATHINIT module add mpi/sunhpc821c pel run -np $NSLOTS $EXE0 data.pel resu
- on peut mettre moins que 8 pour la ligne -pe
- dans la commande mpirun (ou son équivalent), ne pas mettre le nombre de procs, mais la varaible $NSLOTS
- on peut tester si la soumission sera acceptée, en tapant:
qsub -w v ./script.sh
paramétrique
on veut lancer:
monprog 100 monprog 200 monprog 400 ...
Plutôt que d'ecrire autant de scripts que de valeurs différentes du paramètre, on va utiliser la variable SGE_TASK_ID:
#!/bin/sh #$ -N mon_script_parametrique #$ -cwd #$ -j y #$ -S /bin/sh #$ -M moi@latp.univ-mrs.fr #$ -m be #$ -q small # num = $(10*(2**($SGE_TASK_ID) - 1)) /home/moi/mon_prog $num
et on lance par la commande:
qsub -q small -t 1-8 mon_script.sh
plus d'infos, man qsub
, option -t
avec un script matlab, il vaut mieux utiliser une fonction de matlab
#!/bin/bash # #$ -cwd #$ -S /bin/bash #$ -N "optimisme_FB" ##$ -o output ##$ -e output #$ -M gerard.henry@univ-amu.fr #$ -m be # . /etc/profile.d/modules.sh module purge matlab module load matlab/8.1 matlab -nodesktop -nosplash -r "FB_NbIt = str2num( getenv('SGE_TASK_ID') ); addpath(genpath('../Toolbox_optimism/'));params;exit"
le fichier params.m contenant le code:
if ~exist('FB_NbIt','var') FB.param.NbIt = 10; else FB.param.NbIt = FB_NbIt; end
modifier les propriétes de la queue de soumission
un seul job à la fois:
qstat -f queuename qtype resv/used/tot. load_avg arch states --------------------------------------------------------------------------------- all.q@octopus BIP 0/1/1 1.00 lx24-amd64
sinon:
[root@octopus ~]# source /local/export/sge/default/common/settings.sh [root@octopus ~]# qconf -mq all.q
et changer le nombre de slots
Check my job status
qstat -s prs -u $USER #check jobs that are pending, running, or suspended qstat -t -u $USER #display the nodes where the job is running qstat -ext -s p -u $USER #display extended information for my pending jobs
To switch jobs waiting in the queue from one queue to another:
qalter -l <short,long,medium,debug> <job>
or to modify all jobs submitted
qalter -l <short,long,medium,debug> -u $USER
qalter -l q=all.q <job> --> to switch to default low priority queue.
qstat -s h #jobs in hold status qstat -s r #jobs in running status qstat -s r -u $USER #jobs that are mine and running qstat -s s -u $USER #jobs that are mine and suspended
Fichiers
- voir installation
- sur fury, voir /donnees/provisoire/logiciels/SGE
- dernière version gratuite: 6u5
- depuis rachat par Oracle de SGE, plusieurs forks: