Vargas : exécution d'un travail mixte MPI/OpenMP en batch



Vous êtes ici : Support technique → Calcul scalaire → Exécution/contrôle d'un code en batch → Code mixte MPI+threads (OpenMP ou pthreads).


Les travaux sont gerés sur l'ensemble des noeuds par le logiciel LoadLeveler. Ils sont répartis après leur soumission dans des "classes". Vous pouvez consulter ici la structure des classes sur Vargas.

Pour soumettre un travail mixte MPI/threads (OpenMP ou pthreads) en batch, il faut :

  1. Créer un script de soumission.
    Voici un exemple, enregistré dans le fichier mixte.ll, qui définit un travail d'1h30mn Elapsed maximum, dont l'exécution se déroulera sur 8 processus MPI nécessitant chacun au plus 1.7 Go de mémoire (1.2Go de DATA demandee + 0.5Go de STACK par defaut) et demandant chacun 4 tâches OpenMP ou pthreads :

     vargas : cat mixte.ll
    # Nom arbitraire du travail LoadLeveler
    # @ job_name = Mixte
    # 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
    # @ total_tasks = 8
    # Nombre de tâches OpenMP/pthreads par processus MPI
    # @ parallel_threads = 4
    # Temps du job hh:mm:ss (1h30mn ici)
    # @ wall_clock_limit = 1:30:00
    # Memoire max. utilisee par processus (ici 1,2 Gigaoctets)
    # @ data_limit = 1.2Gb
    # 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 .
    
    # La memoire STACK max. (defaut 4Mo) utilisee (ici 64 Mo) par
    # les variables privees de chaque thread.
    export XLSMPOPTS=$XLSMPOPTS:stack=65536000
    
    # Execution du programme parallèle mixte
    ./a.out
        
  2. Soumettre ce script par la commande llsubmit :
    vargas : llsubmit  mixte.ll
          
Remarques :

Pour une étude plus approfondie, vous pouvez consulter :
© CNRS - IDRIS, 13/01/2012