Changes between Version 1 and Version 2 of IntegrationOpenMP/EnteteCommandesAda


Ignore:
Timestamp:
01/09/13 10:52:10 (11 years ago)
Author:
millour
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • IntegrationOpenMP/EnteteCommandesAda

    v1 v2  
    88 * Entête du job 
    99{{{ 
    10  
     10# @ job_type = serial 
    1111}}} 
    1212 * Commande  
     
    2020# @ job_type = serial 
    2121# @ parallel_threads = 4 
     22### Mémoire (maximum 7.0gb par coeur; par ex. pour 4 threads on peut aller jusqu'à as_limit=28gb) 
     23# @ as_limit = 7.0gb 
    2224}}} 
    2325 * Commande  
    2426{{{ 
     27# Penser à définir la memoire STACK max. utilisée par les variables privees de chaque thread. 
     28# (sinon par défaut c'est un tout petit 4M) 
     29#export KMP_STACKSIZE=200M 
     30# Il est aussi possible d'utiliser la variable d'environnement OMP_STACKSIZE 
     31export OMP_STACKSIZE=200M 
     32 
    2533time ./gcm.e 
    2634}}} 
    27  * Résultat : poe lance 1 tâche et 4 threads avec le programme : gcm.e 
     35 * Résultat : lance 1 tâche et 4 threads avec le programme : gcm.e 
    2836 
    2937== Un executable parallélisé avec MPI seulement == 
     
    3139{{{ 
    3240# @ job_type = parallel 
     41# Nombre de processus demandes (ici 32) 
    3342# @ total_tasks = 32 
    34 # @ environment = "BATCH_NUM_PROC_TOT=32" 
    35 # @ resources = ConsumableCpus(1) 
    3643}}} 
    3744 * Commande  
    3845{{{ 
    39 time ./gcm.e 
     46poe ./gcm.e 
    4047}}} 
    4148 * Résultat : poe lance 32 tâches, avec toute le même programme : gcm.e 
    42  * On peut tourner sur moitié moins de processeurs en ajoutant cette ligne là dans l'entête. Pas prévu dans libIGCM actuellement : 
    43 {{{ 
    44 # @ task_affinity = cpu 
    45 }}} 
     49 * Remarque: La mémoire disponible est de 3.5gb par coeur (donc par tâche MPI pour un job MPI pur), on ne peut pas dépasser cette limite si on demande plus de 64 tâches. Par contre on peut demander jusqu'à 7.0gb par coeur ("# @ as_limit = 7.0gb" dans l'en-tête du job) si on utilise 64 tâches ou moins. Sinon (à tester...) il y a la possibilité comme sur Vargas de demander des "threads" fantômes pour obtenir plus de mémoire (mais attention ce sera facturé!!) en compilant en mode "MPI" seul mais en lancant un job mixte "MPI/OpenMP" suivant le modèle ci-après. 
    4650 
    47 == Un executable parallélisé avec MPI seulement ayant besoin de plus de mémoire == 
    48  * On peut demander plus de threads sans les utiliser pour avoir plus de mémoire. Attention cela est facturé. 
    49  * Entête du job 
    50 {{{ 
    51 # @ job_type = parallel 
    52 # @ total_tasks = 32 
    53 # @ parallel_threads = 2 
    54 # @ environment = "BATCH_NUM_PROC_TOT=32" 
    55 ##### @ resources = ConsumableCpus(1) 
    56 }}} 
    5751  
    58  
    5952== Un executable parallélisé avec MPI et OpenMP == 
    6053 
     
    6255{{{ 
    6356# @ job_type = parallel 
    64 # @ total_tasks = 8 
     57## nombre de processus demandées 
     58# @ total_tasks = 16 
     59## nombre de tâches par processus 
    6560# @ parallel_threads = 4 
    66 # @ environment = "BATCH_NUM_PROC_TOT=32" 
     61### Mémoire (si moins de 64 coeurs: maximum 7.0gb par processus MPI; par ex. pour 4 threads par processus, on peut aller jusqu'à as_limit=28gb) 
     62### Mémoire (si plus de 64 coeurs: maximum 3.5gb par processus MPI; par ex. pour 4 threads par processus, on peut aller jusqu'à as_limit=14gb) 
     63# @ as_limit = 28gb 
    6764}}} 
    6865 * Commande  
    6966{{{ 
    70 export XLSMPOPTS=$XLSMPOPTS:stack=524288000 
    71 time ./gcm.e 
     67# Penser à définir la memoire STACK max. utilisée par les variables privees de chaque thread. 
     68# (sinon par défaut c'est un tout petit 4M) 
     69#export KMP_STACKSIZE=200M 
     70# Il est aussi possible d'utiliser la variable d'environnement OMP_STACKSIZE 
     71export OMP_STACKSIZE=200M 
     72 
     73poe ./gcm.e 
    7274}}} 
    73  * Résultat : poe lance 16 tâches, avec toute le même programme : gcm.e sur 4 threads 
    74  * run.card : 285s avec 16MPI, 2OMP 
    75  * run.card : 279 s avec 8 MPI, 4 OMP 
    76  * plante avec 4 MPI et 8 OMP :  
    77 {{{ 
    78 1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7. 
    79 1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7. 
    80 1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7. 
    81 1587-120 SMP runtime library error. Memory allocation failed when creating thread number 7. 
    82 }}} 
     75 * Résultat : poe lance 16 tâches, avec toute le même programme : gcm.e avec 4 threads chaque 
     76 
    8377 
    8478== Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 26 procs, MPI seul == 
    85  * Entête du job 
    86 {{{ 
    87 # @ total_tasks = 32 
    88 # @ environment = "BATCH_NUM_PROC_TOT=32" 
    89 # @ resources = ConsumableCpus(1) 
    90 }}} 
    91  * Commande  
    92 {{{ 
    93  time poe -pgmmodel mpmd -cmdfile ./run_file 
    94 }}} 
    95   * avec run_file contenant, oasis en premier obligatoirement: 
    96 {{{ 
    97 ./oasis 
    98 ./opa.xx  #==> 5 fois 
    99 ... 
    100 ./lmdz.x   #===> 26 fois 
    101 ... 
    102 }}} 
    103  * Résultat : poe lance 32 tâches : 1 oasis, 26 lmdz et 5 opa 
     79 
     80A faire... 
     81 
    10482 
    10583== Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 12 procs MPI et 4 tâches OpenMP == 
    10684 
    107 La méthode reste à valider. 
     85A faire... 
    10886 
    109  * Entête du job : 
    110 {{{ 
    111 # NEW : 2 Noeuds 
    112 # @ task_geometry={(0,1,2,3,4,5,6,7,8,9,10,11)(12,13,14,15,16,17)} 
    113 }}} 
    114  * Commande : 
    115 {{{ 
    116 time poe -pgmmodel mpmd -cmdfile ./run_file 
    117 }}} 
    118    * avec run_file contenant, oasis en premier : 
    119 {{{ 
    120 ./oasis 
    121 ./opa.xx   #==> 5 fois 
    122 ... 
    123 env OMP_NUM_THREADS=4 ./lmdz.x     #====> 12 fois 
    124 ... 
    125 }}} 
    12687 
    12788== Entête du couplé IPSLCM5A sur Ada == 
    12889 
    129 {{{ 
    130 #!/usr/bin/ksh 
    131 # ###################### 
    132 # ##   VARGAS IDRIS   ## 
    133 # ###################### 
    134 # Nom de la requete 
    135 # @ job_name = piControl2V 
    136 # Type de travail 
    137 # @ job_type = parallel 
    138 # Fichier de sortie standard 
    139 # @ output = Script_Output_piControl2V.000001 
    140 # Fichier de sortie erreur (le meme) 
    141 # @ error = Script_Output_piControl2V.000001 
    142 # Nombre de processus demandes 
    143 # @ total_tasks = 32 
    144 # @ environment = "BATCH_NUM_PROC_TOT=32" 
    145 # Temps CPU max. par processus MPI hh:mm:ss 
    146 # @ wall_clock_limit = 10:00:00 
    147 # Memoire max. utilisee par processus 
    148 # @ data_limit = 3.2gb 
    149 # Memoire stack demandee 
    150 # @ stack_limit = 0.3gb,0.3gb 
    151 # Pas d OpenMP 
    152 # @ resources = ConsumableCpus(1) 
    153 # Fin de l entete 
    154 # @ queue 
    155 }}} 
     90A faire...