Ulam : exécution d'un travail OpenMP 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 OpenMp en batch, il faut :

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

© CNRS - IDRIS, 23/04/2012