Je ne sais pas quel service utiliser

Merci de lire cet article.

HOW TO SGE

  • Afficher mes jobs :

    qstat
    
  • Afficher tous les jobs :

    qstat -u \*
    
  • Avec plus de détails :

    qstat -f -u \*
    
  • Pour une vue résumée de la charge des queues :

    qstat -g c
    
  • Afficher uniquement les jobs qui tournent (état r) :

    qstat -s r
    
  • et en attente :

    qstat -s p
    
  • Cacher les queues vides:

    qstat -ne
    
  • Voir le détail pour le job dont l'identifiant est 999:

    qstat -j 999
    
  • Avoir tous les details sur le job n° 999

    qstat -f -j 999
    
  • Afficher tous les jobs par noeud :

    qhost -j
    
  • Afficher tous les noeuds par queue auxquels j'ai accès (en prenant en compte la charge actuelle) :

    qselect -U $USER
    
  • Lister les queues disponibles :

    qconf -sql
    
  • Pour afficher les détails de configuration d'une queue (ici la queue long.q) :

    qconf -sq long.q
    
  • Afficher les détails sur les ressources des noeuds disponibles par queue :

    qhost -q
    
  • Comment choisir la queue longue (long.q) pour un job :

    qsub -q long.q myjob.sh
    # ou
    qsub -l qname=long.q myjob.sh
    
  • Comment changer de queue pour un job en attente sur la queue longue :

    qalter -l qname=small.q job_id
    
  • Comment soumettre un executable sans passer par un script :

    qsub -b y my_exe
    
  • Soumission sur un noeud particulier de la file courte, par ex. sur le noeud 10 et la queue courte (small.q):

    qsub -q small.q@compute-0-10 myjob.sh
    
  • Comment lancer un job sur une machine donnée ex. sur le noeud 10 :

    qsub -l hostname=compute-0-10 myjob.sh
    
  • Soumettre un job 50 fois (Array of jobs) :

    qsub -t 1-50 myjob.sh
    

  • Suppression du job numéro 10 :

    qdel 10
    
  • En cas de problème, forcer la suppression du job numéro 10

    qdel -f 10
    
  • Supprimer tous vos jobs :

    qdel -u $USER
    
  • Se connecter sur un noeud de calcul pour faire des tests (à utiliser avec parcimonie et uniquement dans le cadre d'un test ou d'une compilation/installation) :

    qrsh
    

Signification des indicateurs d’état des queues obtenus par qstat -f :

  • a(larm), A(larm),
  • C(alendar suspended),
  • s(uspended),
  • S(ubordinate),
  • d(isabled), D(isabled),
  • E(rror)

Voir si votre job a été tué par SGE

Une petite commande a lancer sur le nœud maître permet de vérifier si votre job a été tué par SGE (SIGKILL):

awk -v username=$USER -F":" 'BEGIN{OFS="|"} $4==username && $13=="137" {print $1,$2,$4,$5,$6,"h_rt (en heure): "($11-$10)/3600}' /opt/gridengine/default/common/accounting

Si vous constatez par exemple que le h_rt vaut souvent 12.0003, il y a de grande chance pour que votre job ait été tué car il aurait dépassé la limite de temps définit par défaut (12h). Par conséquent, il convient de relancer votre job en définissant un h_rt plus élevé.

Pour rappel, cette option permet de définir le temps maximum pendant lequel votre job va tourner; par exemple, rajoutez l'option:

#$ -l h_rt=19:00:00

Vous permettra d'avoir un job qui durera, au maximum, 19h.

Fonctionnement du scratch et du home sur nos clusters

Le scratch sur nos clusters fonctionne souvent différemment que sur les autres clusters. En effet, ce dernier est local à chaque nœud. Si vous voulez l'utiliser, il faut donc prévoir une copie des données dans votre job vers le dossier /export/scratch puis les récupérer à la fin de votre job. Par conséquent, il est impossible d'utiliser un scratch avec un job de type MPI. La raison principale de ce choix est que la plupart des calculs ne sont pas du type MPI. Par conséquent, l'infrastructure est de type HTC, et non HPC, c'est à dire, sans réseau à faible latence. En l'absence d'un réseau de ce type, un filesystem parallélisé est impossible à mettre en place (à cause de performances très dégradées). En revanche pour des jobs simples, vous bénéficierai d'un accès particulièrement rapide vers ce scratch, puisque ce dernier est local à la machine.

Le HOME est exporté par NFS depuis quelques NAS. Ce dernier est donc le même sur tous les nœuds.

Exemple de script SGE avec utilisation de scratch

Comment remplacer l’usage de NFS par un accès aux disques locaux ? Il faut s’assurer que vous avez un rép. à votre nom sous /scratch/ dans tous les noeuds de calcul.

#!/bin/bash
#
#$ -S /bin/bash
#$ -cwd
#$ -e job_name.err
#$ -o job_name.out

export scratch=`mktemp -d /scratch/${USER}/job.XXXXXX`
/home/$USER/test.pl > $scratch/job_output
cp -rp $scratch /home/$USER
rm -rf $scratch

Utiliser R avec SGE

Exemple de code R (somme.R):

args<-commandArgs(TRUE);
debut = as.numeric(args[1]);
fin = as.numeric(args[2]);
vect = seq(debut, fin);
cat(sum(vect),"\n");

Exemple de script SGE (submit_somme.sge):

#!/bin/bash
#$ -S /bin/bash
#$ -cwd
#$ -j y

version = "3.5.3"
module load R-$version
R CMD BATCH --slave "--args $1 $2" somme.R sortie.txt

voir comment utiliser module

Lancer avec SGE pour faire la somme des entiers de 1 à 10

qsub submit_somme.sge 1 10

Connaître son quota

Il vous est possible de connaître votre quota LDAP avec le script get_myquota.sh. La valeur retournée n'est pas forcément celle présente sur le système. Contactez votre administrateur système en cas de doute.

Utiliser module

Voir ici : utiliser module

Comment transférer des données sur le cluster

Voir cet article. Pour les gros besoins/transferts, merci de nous consulter. En effet, le noeud maître ou noeud de login ne doivent pas être monopolisés par des transferts qui seraient bloquants pour les autres utilisateurs.

J'ai transféré des données texte éditées sous Windows

Il faudra les transformer avec l'outil dos2unix. Vous pouvez vérifier que votre fichier ne contient pas de caratères spéciaux avec cat :

cat -vt mon_fichier.txt
# si vous voyez des caratères tels que "^M" en fin de ligne, il faudra convertir le fichier.