sge

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 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

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

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

Docs

  • sge.txt
  • Dernière modification : 2017/08/25 09:56
  • de 127.0.0.1