Changes between Version 1 and Version 2 of IntegrationOpenMP/EnteteCommandesAda
- Timestamp:
- 01/09/13 10:52:10 (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
IntegrationOpenMP/EnteteCommandesAda
v1 v2 8 8 * Entête du job 9 9 {{{ 10 10 # @ job_type = serial 11 11 }}} 12 12 * Commande … … 20 20 # @ job_type = serial 21 21 # @ 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 22 24 }}} 23 25 * Commande 24 26 {{{ 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 31 export OMP_STACKSIZE=200M 32 25 33 time ./gcm.e 26 34 }}} 27 * Résultat : poelance 1 tâche et 4 threads avec le programme : gcm.e35 * Résultat : lance 1 tâche et 4 threads avec le programme : gcm.e 28 36 29 37 == Un executable parallélisé avec MPI seulement == … … 31 39 {{{ 32 40 # @ job_type = parallel 41 # Nombre de processus demandes (ici 32) 33 42 # @ total_tasks = 32 34 # @ environment = "BATCH_NUM_PROC_TOT=32"35 # @ resources = ConsumableCpus(1)36 43 }}} 37 44 * Commande 38 45 {{{ 39 time ./gcm.e46 poe ./gcm.e 40 47 }}} 41 48 * 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. 46 50 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 job50 {{{51 # @ job_type = parallel52 # @ total_tasks = 3253 # @ parallel_threads = 254 # @ environment = "BATCH_NUM_PROC_TOT=32"55 ##### @ resources = ConsumableCpus(1)56 }}}57 51 58 59 52 == Un executable parallélisé avec MPI et OpenMP == 60 53 … … 62 55 {{{ 63 56 # @ job_type = parallel 64 # @ total_tasks = 8 57 ## nombre de processus demandées 58 # @ total_tasks = 16 59 ## nombre de tâches par processus 65 60 # @ 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 67 64 }}} 68 65 * Commande 69 66 {{{ 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 71 export OMP_STACKSIZE=200M 72 73 poe ./gcm.e 72 74 }}} 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 83 77 84 78 == 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 80 A faire... 81 104 82 105 83 == Un couplé avec Oasis sur 1 proc, NEMO sur 5 procs et LMDZ sur 12 procs MPI et 4 tâches OpenMP == 106 84 107 La méthode reste à valider.85 A faire... 108 86 109 * Entête du job :110 {{{111 # NEW : 2 Noeuds112 # @ 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_file117 }}}118 * avec run_file contenant, oasis en premier :119 {{{120 ./oasis121 ./opa.xx #==> 5 fois122 ...123 env OMP_NUM_THREADS=4 ./lmdz.x #====> 12 fois124 ...125 }}}126 87 127 88 == Entête du couplé IPSLCM5A sur Ada == 128 89 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 }}} 90 A faire...