**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: * [[https://arc.liv.ac.uk/trac/SGE/wiki|the Son of Grid Engine project]] * [[http://gridscheduler.sourceforge.net/|Open Grid Scheduler]] ====== 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 ===== * [[http://wikis.sun.com/display/GridEngine/Configuring+Queues]] 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 | machine octopus | long | 8 | 2Go | 8 | 2 machines, charybde et scylla, à réserver au parallèle MPI | | latp | 32 | 256Go | 30 | cette [[http://mmg.cnrs-mrs.fr/doku.php?id=bullx_reservation|queue]] est soumise à restriction | ===== Soumettre un job ===== ==== séquentiel ==== voir [[http://sites.univ-provence.fr/~iusti/doku.php?id=sge#script_d_un_code_sequentiel]] ==== 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 or to modify all jobs submitted qalter -l -u $USER qalter -l q=all.q --> 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 [[reserve:sge|installation]] * sur fury, voir /donnees/provisoire/logiciels/SGE * dernière version gratuite: 6u5 * depuis rachat par Oracle de SGE, plusieurs forks: ^ Projet ^ mailing list ^ Site ^ | [[https://arc.liv.ac.uk/trac/SGE|Son of Grid Engine project]] | [[sge-discuss@liv.ac.uk]] | [[https://arc.liv.ac.uk/mailman/listinfo/sge-discuss]] | | [[http://gridengine.org|Open Source Grid Engine Community]] | [[users@gridengine.org]] | [[http://gridengine.org/mailman/listinfo/users]] | | [[http://gridscheduler.sourceforge.net/|Open Grid Scheduler]] | [[gridscheduler-users@lists.sourceforge.net]] | [[http://sourceforge.net/mailarchive/forum.php?forum_name=gridscheduler-users]] | | Oracle GridEngine (ex-SGE) | | [[http://forums.oracle.com/forums/forum.jspa?forumID=859|forum Oracle GridEngine]] | ====== Docs ====== * http://migale.jouy.inra.fr/faq/calcul/utilisation * http://wikis.sun.com/display/GridEngine/Monitoring+and+Controlling+Jobs * https://www.nbcr.net/pub/wiki/index.php?title=Understanding_SGE_job_status