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 MPI en batch, il faut :
testmpi.ll :
# Nom du travail LoadLeveler # @ job_name = testmpi # 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 = parallel # Nombre de processus MPI demandes (max 4) # @ total_tasks = 4 # Temps ELAPSED max. pour l'ensemble du job en hh:mm:ss # @ wall_clock_limit = 0:10:00 # Memoire demandee par processus MPI (<= 4 Gb ou <= 8 Gb si < 1H00)) # @ 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 . # Execution d'un programme MPI ./a.out
llsubmit :
llsubmit testmpi.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 testmpi.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 par processus MPI. 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