Ulam : exécution d'un travail MPI en batch


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 :

  1. Créer un script de soumission. Voici un exemple enregistré dans le fichier 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
    	  
  2. Soumettre ce script (uniquement depuis Ulam) via la commande llsubmit :
    llsubmit testmpi.ll
    	  

Remarques :

Mots-clefs LoadLeveler utiles

notification

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.

as_limit

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

© CNRS - IDRIS, 23/04/2012