wiki:IntegrationOpenMP/EnteteCommandesAda

Version 1 (modified by mafoipsl, 10 years ago) (diff)

--

Entête des jobs et commandes ada

Cette page décrit les entêtes des jobs sur vargas ainsi que les commandes à lancer pour avoir un exécutable simple ou un couplé.

Un executable séquentiel

  • Entête du job
  • Commande
    time ./create_etat0_limit.e
    

Un executable parallélisé avec OpenMP seulement

  • Entête du job
    # @ job_type = serial
    # @ parallel_threads = 4
    
  • Commande
    time ./gcm.e
    
  • Résultat : poe lance 1 tâche et 4 threads avec le programme : gcm.e

Un executable parallélisé avec MPI seulement

  • Entête du job
    # @ job_type = parallel
    # @ total_tasks = 32
    # @ environment = "BATCH_NUM_PROC_TOT=32"
    # @ resources = ConsumableCpus(1)
    
  • Commande
    time ./gcm.e
    
  • Résultat : poe lance 32 tâches, avec toute le même programme : gcm.e
  • On peut tourner sur moitié moins de processeurs en ajoutant cette ligne là dans l'entête. Pas prévu dans libIGCM actuellement :
    # @ task_affinity = cpu
    

Un executable parallélisé avec MPI seulement ayant besoin de plus de mémoire

  • On peut demander plus de threads sans les utiliser pour avoir plus de mémoire. Attention cela est facturé.
  • Entête du job
    # @ job_type = parallel
    # @ total_tasks = 32
    # @ parallel_threads = 2
    # @ environment = "BATCH_NUM_PROC_TOT=32"
    ##### @ resources = ConsumableCpus(1)
    

Un executable parallélisé avec MPI et OpenMP

  • Entête du job
    # @ job_type = parallel
    # @ total_tasks = 8
    # @ parallel_threads = 4
    # @ environment = "BATCH_NUM_PROC_TOT=32"
    
  • Commande
    export XLSMPOPTS=$XLSMPOPTS:stack=524288000
    time ./gcm.e
    
  • Résultat : poe lance 16 tâches, avec toute le même programme : gcm.e sur 4 threads
  • run.card : 285s avec 16MPI, 2OMP
  • run.card : 279 s avec 8 MPI, 4 OMP
  • plante avec 4 MPI et 8 OMP :
    1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7.
    1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7.
    1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7.
    1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7.
    

Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 26 procs, MPI seul

  • Entête du job
    # @ total_tasks = 32
    # @ environment = "BATCH_NUM_PROC_TOT=32"
    # @ resources = ConsumableCpus(1)
    
  • Commande
     time poe -pgmmodel mpmd -cmdfile ./run_file
    
    • avec run_file contenant, oasis en premier obligatoirement:
      ./oasis
      ./opa.xx  #==> 5 fois
      ...
      ./lmdz.x   #===> 26 fois
      ...
      
  • Résultat : poe lance 32 tâches : 1 oasis, 26 lmdz et 5 opa

Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 12 procs MPI et 4 tâches OpenMP

La méthode reste à valider.

  • Entête du job :
    # NEW : 2 Noeuds
    # @ task_geometry={(0,1,2,3,4,5,6,7,8,9,10,11)(12,13,14,15,16,17)}
    
  • Commande :
    time poe -pgmmodel mpmd -cmdfile ./run_file
    
    • avec run_file contenant, oasis en premier :
      ./oasis
      ./opa.xx   #==> 5 fois
      ...
      env OMP_NUM_THREADS=4 ./lmdz.x     #====> 12 fois
      ...
      

Entête du couplé IPSLCM5A sur Ada

#!/usr/bin/ksh
# ######################
# ##   VARGAS IDRIS   ##
# ######################
# Nom de la requete
# @ job_name = piControl2V
# Type de travail
# @ job_type = parallel
# Fichier de sortie standard
# @ output = Script_Output_piControl2V.000001
# Fichier de sortie erreur (le meme)
# @ error = Script_Output_piControl2V.000001
# Nombre de processus demandes
# @ total_tasks = 32
# @ environment = "BATCH_NUM_PROC_TOT=32"
# Temps CPU max. par processus MPI hh:mm:ss
# @ wall_clock_limit = 10:00:00
# Memoire max. utilisee par processus
# @ data_limit = 3.2gb
# Memoire stack demandee
# @ stack_limit = 0.3gb,0.3gb
# Pas d OpenMP
# @ resources = ConsumableCpus(1)
# Fin de l entete
# @ queue