Exemple de script avec documentation des options de qsub

De Wiki de Calcul Québec
Aller à : Navigation, rechercher
Autres langues :anglais 100% • ‎français 100%


Voici un exemple de script de soumission pour Torque (PBS), à soumettre avec la commande « qsub » ou « msub ». Il documente la plupart des options disponibles.

Fichier : exemple.pbs
#!/bin/bash
#
# On specifie ci-dessus l'interpreteur de commandes que PBS utilisera
# pour executer le script (sinon, l'interpreteur choisi est parfois
# surprenant). On peut utiliser bash, sh, ksh, csh, tcsh, zsh, perl
# et python, quoi qu'il est probablement plus facile de se limiter
# aux interpreteurs de commandes classiques (les cinq premiers).
#
 
# **************************************************************
#
#            EXEMPLE D'OPTIONS PBS USUELLES
#
# **************************************************************
 
# Une ligne commencant par #PBS est consideree comme une directive a
# PBS. Toute autre ligne commençant par un # est consideree comme un
# commentaire. 
# 
# Pour soumettre ce fichier, utiliser la commande :
#          qsub nom-de-ce-fichier
 
# --------------------------------------------------------------
# Specification du projet a qui on doit charger les ressources utilisees.
# Pour le moment, n'utiliser que sur Colosse et Guillimin.
#
#PBS -A abc-123-aa
 
# Selection du nombre de processeurs necessaires et de la quantite
# totale de memoire a reserver (ici, la variable d'environnement
# OMP_NUM_THREADS n'est pas initialisee par le script, si on roule un
# programme parallelise en OpenMP, on doit la definir soi-meme).
#
# Ici, on demande 12 processeurs (coeurs) par noeud sur un seul noeud et
# 47 Go de memoire vive. Specifier la memoire est utile sur les serveurs
# ou on peut lancer plusieurs taches par noeud, pour permettre a
# l'ordonnanceur de lancer le bon nombre de taches sur le noeud. Si on
# demande un noeud complet, on n'a pas toujours besoin de specifier la memoire.
# C'est utile toutefois sur les grappes non uniformes en memoire, pour
# permettre a l'ordonnanceur de choisir des noeuds appropries a la tache.
#
#PBS -l nodes=1:ppn=12 -l mem=47gb
#
# Faites attention a la quantite de memoire que vous demandez. Sur une machine
# ayant des noeuds de 48 Go, par exemple, demander -l mem=48gb n'aura pas l'effet
# escompte, car en realite la totalite des 48 Go n'est pas disponible aux taches.
# Il faut en demander un peu moins.
 
# --------------------------------------------------------------
#
# Limites de ressources : temps reel pendant lequel la tache peut rouler.
# Ici, 3 heures.
#
#PBS -l walltime=3:00:00
 
# Nom de la tache (par defaut, ce sera le nom du script, possiblement
# tronque)
#
#PBS -N myjob
 
# --------------------------------------------------------------
#
# Fichier de sortie standard (stdout) 
#
#PBS -o chemin/sortie.out
#
# (par defaut, le nom de la tache avec l'extension .oNNNN, ou NNNN est
# le numero de la requete)
#
# Par defaut, on ne peut mettre de variables d'environnement dans le nom
# du fichier de sortie, sauf celles qui sont exportees avec les options -v
# ou -V (voir ci-dessous) ou les variables de PBS dont le nom commence par PBS_
# (voir ci-dessous aussi).
 
# Joindre la sortie d'erreur standard a la sortie standard
#
#PBS -j oe
 
# --------------------------------------------------------------
#
# Fichier d'erreur standard (stderr), si on n'utilise pas l'option
# -j oe ci-dessus
#  #PBS -e chemin/sortie.err
# (par defaut, le nom de la tache avec l'extension .eNNNN)
 
# Permissions des fichiers de sortie standard (stdout) et d'erreur
# standard (stderr), qui par defaut ne peuvent etre lus et modifies que
# par l'utilisateur faisant la soumission. Ici, on rajoute la permission
# de lecture pour tout le monde. Note : cette option ne fonctionne pas
# avec la version de Torque installee sur Briaree, mais devrait fonctionner
# sur les autres serveurs.
#
#PBS -W umask=022
 
# --------------------------------------------------------------
#
# Nom de la queue de soumission de taches desiree.
# Une queue par defaut sera utilisee si cette donnee n'est pas fournie.
# Pour savoir quelle queue specifier, faites reference a la page "Executer
# une tache" du Wiki de Calcul Quebec. Il est souvent inutile de specifier
# la queue.
#
#PBS -q soumet
 
# --------------------------------------------------------------
#
# Fichiers devant etre copies sur le serveur d'execution (dans un
# repertoire preexistant) avant que le traitement du script ne commence.
# Vous pouvez aussi faire vos propres copies a l'interieur du script.
# Dans l'exemple ci-dessous, la machine d'execution est la machine
# locale. Les fichiers dans $HOME ou $SCRATCH n'ont pas a etre ainsi deplaces,
# etant accessibles par un systeme de fichiers partage.
# 
#PBS -W stagein=fichier-local@machine-distante:fichier-distant
 
# --------------------------------------------------------------
#
# Fichiers du serveur d'execution devant etre copies ailleurs apres
# execution de la tache
# 
#PBS -W stageout=fichier-local@machine-distante:fichier-distant
#
# Tous les fichiers specifies par stagein et stageout sont effaces sur
# la machine d'execution apres l'execution du script.
 
# --------------------------------------------------------------
#
# Moment apres lequel PBS considerera la tache pour execution.
# MMDDhhmm ( attention heure sur 24 heures... )
#      ( exemple : 6 fevrier a 15h06 sera  02061506 ) 
#      ( attention heure sur 24 heures... 05 sera 5 heure du matin...)
# 
#PBS -a 02061506
 
# --------------------------------------------------------------
#
# Envoi de courrier electronique :
#       
#                "b" : lorsque la tache commence
#                "e" : lorsque la tache finit.
#                "a" : lorsque la tache avorte (termine de façon prematuree
#                      avec une erreur)
#
#    Attention! Si vous utilisez plusieurs options de courrier, elles
#    doivent etre regroupees a l'interieur de la meme option (sinon,
#    seule la derniere est prise en compte).
#
#PBS -m ba
 
# Definir une adresse de courriel. Si vous voulez envoyer les messages de
# Torque ailleurs qu'a votre adresse dans la base de donnees de Calcul
# Canada, specifiez l'adresse a l'aide de l'option suivante :
#
#PBS -M utilisateur@domaine.ca
 
# --------------------------------------------------------------
#
# Determine si la tache peut etre interrompue et reprise de zero sans
# effets secondaires indesirables. Attention, sur certains serveurs de
# Calcul Quebec, PBS considere qu'une tache est redemarrable par defaut!
#
#PBS -r n
 
# --------------------------------------------------------------
#
# Transferer les variables d'environnement a la tache
#
#  #PBS -V
#
#
# Variables d'environnement a l'execution de la tache
#     
#   Variables predefinies :
#         Variables definies sur la machine d'execution
#         Variables transferees de la machine de soumission grace aux
#         options -v (variables specifiques) and -V (toutes les
#         variables).
#   Variables definies par PBS
#
# Variable caracterisant l'environnement d'une tache soumise par qsub
#
#     PBS_O_HOST    Machine ou a ete executee la commande qsub
#     PBS_O_LOGNAME Nom d'usager a l'endroit ou a ete executee la
#                   commande qsub
#     PBS_O_HOME    Repertoire d'usager $HOME sur la machine ou a ete
#                   executee la commande qsub
#     PBS_O_WORKDIR Repertoire de travail courant a l'endroit ou a ete
#                   executee la commande qsub
#
# Variables caracterisant l'environnement d'execution de la tache
#     PBS_ENVIRONMENT
#       deux valeurs possibles : PBS_BATCH :  tache PBS executee en lot
#                                PBS_INTERACTIVE : tache interactive PBS
#                                obtenue avec l'option -I.
#     PBS_O_QUEUE   Queue ou la tache a ete soumise a l'origine
#     PBS_QUEUE     Queue dans laquelle la tache est executee
#     PBS_JOBID     Numero d'identification de la tache PBS
#     PBS_JOBNAME   Nom de la tache
#
 
# Dependances
#
# La tache courante peut etre executee des que la tache 344 a commence
# son execution.
#PBS -W depend=after:344
#
# La tache courante peut etre executee des que la tache 345 a termine
# avec succes (elle ne sera pas executee en cas d'echec).
#PBS -W depend=afterok:345
#
# La tache courante peut etre executee des que la tache 346 a termine
# avec un code d'erreur (elle ne sera pas executee sinon).
#PBS -W depend=afternotok:346
#
# La tache courante peut etre executee des que la tache 347 a termine.
#PBS -W depend=afterany:347
 
# On lance un vecteur de taches (“ job array “) pour qsub. Les taches
# sont ici numerotees de 1 a 100. Ensuite, le script doit utiliser la
# variable d'environnement $PBS_ARRAYID pour determiner le travail a
# faire. Cette variable est l'indice d'une tache dans le vecteur.
# 
#PBS -t 1-100
#
# On peut aussi donner une liste d'indices ou d'intervalles separes par
# des virgules :
#
#     #PBS -t 1-5,10,21-25
#
# On peut aussi ajouter une limite sur le nombre de taches a rouler en
# meme temps dans le vecteur :
#
#     #PBS -t 1-100%5
#
# Seules cinq taches pourront rouler simultanement dans l'exemple ci-dessus.
 
# Avec msub, on utilise plutot la syntaxe
#
#    #PBS -t [1-100]
#
# et la variable d'environnement $MOAB_JOBARRAYINDEX
# comme indice de la tache dans le vecteur.  Pour indiquer le nombre de
# taches dans le vecteur, on utilise $MOAB_JOBARRAYRANGE. On peut aussi
# sauter des valeurs dans l'intervalle :
#
#    #PBS -t [1-101:10]%7
#
# L'exemple ci-dessus va rouler le script avec les indices 1, 11, 21, 31, ..., 101
# en limitant a sept le nombre de taches simultanees.
 
#Autres options disponibles seulement en ligne de commande :
#
#     qsub -I -X -lnodes=1:ppn=12 -lwalltime=1:0:0
#
#  ou
#
#     qsub -I -X script
#
# L'option -I permet d'obtenir une tache interactive. Le script est optionnel,
# mais s'il est present il ne sert qu'a transmettre d'autres options a PBS
# grace aux directives #PBS.
#
# L'option -X (qui doit obligatoirement etre accompagnee de -I) permet de faire
# de l'affichage graphique avec X Window. Ca ne fonctionne que si vous pouvez
# faire de l'affichage X Window de la machine de soumission et si les
# bibliotheques graphiques necessaires sont installees sur les noeuds de calcul.
 
# --------------------------------------------------------------
# La premiere instruction executable termine les directives a PBS.
###
 
# En general, on change le repertoire au debut du script car le
# repertoire est $HOME au depart.
cd repertoire
 
./a.out < entree$PBS_ARRAYID > sortie$PBS_ARRAYID


Outils personnels
Espaces de noms

Variantes
Actions
Navigation
Ressources de Calcul Québec
Outils
Partager