Les travaux sont gérés sur l'ensemble des coeurs par le logiciel LoadLeveler; ils sont répartis après soumission dans des "classes". Vous pouvez consulter ici les limites des classes sur Ulam.
Pour soumettre un travail OpenMp en batch, il faut :
testomp.ll :
# Nom du travail LoadLeveler # @ job_name = testomp # Fichier de sortie standard du travail # @ output = $(job_name).$(jobid) # Fichier de sortie d'erreur du travail # @ error = $(job_name).$(jobid) # Type de travail # @ job_type = serial # Nombre de coeurs demandes ( max 4). # @ resources = consumableCpus(4) # Temps ELAPSED max. pour l'ensemble du job en hh:mm:ss # @ wall_clock_limit = 0:10:00 # Memoire totale demandee pour le code OMP (<= 4 Gb ou <= 8 Gb si < 1H) # @ as_limit = 1.7gb # pour recevoir un mail en cas de depassement du temps Elapsed (ou autre pb.) # @ notification = error # @ queue # Pour avoir l'echo des commandes set -x # Repertoire temporaire de travail cd $TMPDIR # La variable LOADL_STEP_INITDIR est automatiquement positionnee par # LoadLeveler au repertoire dans lequel on tape la commande llsubmit cp $LOADL_STEP_INITDIR/a.out . # Nombre de threads OpenMP utilises pour l'execution # (doit correspondre au nombre de coeurs reserves via la directive # loadleveler "consumableCpus"). export OMP_NUM_THREADS=4 # Execution d'un programme OMP ./a.out
llsubmit :
llsubmit testomp.ll
dans cet exemple, on suppose que l'exécutable a.out se situe dans le répertoire de soumission, c'est-à-dire le répertoire dans lequel on entre la commande llsubmit (la variable LOADL_STEP_INITDIR est automatiquement valorisée par LoadLeveler).
le fichier de sortie du calcul testomp.numero_job se trouve également dans le répertoire de soumission, il est créé dès le début de l'exécution du travail; l'éditer ou le modifier pendant le déroulement du travail peut perturber celui-ci,
Le mot-clef LoadLeveler notification
peut être utilisé pour recevoir un message.
notification = complete génère un mail en fin de travail;
notification = all au démarrage et à la fin d'un travail.
Ces mails sont le seul moyen de récupérer éventuellement un message d'erreur
du type WALL CLOCK limit exceeded. Nous recommandons de n'utiliser que
notification = error pour ne genérer un message qu'en cas de problème.
Le mot-clef LoadLeveler as_limit permet de spécifier une taille mémoire pour l'ensemble du code OpenMP. Pensez à coder au plus juste la mémoire afin de permettre une meilleure répartition des requêtes batch. La directive s'utilise de la façon suivante :
# @ as_limit = 2gb