| Sujet : PISCES avec et sans AGRIF / release-v1.3 - petit point route |
| De : Christophe Hourdin <christophe.hourdin@locean.ipsl.fr> |
| Date : 23/12/2022 15:48 |
| Pour : Stephane Pous <stephane.pous@locean.ipsl.fr>, Xavier Capet <xavier.capet@locean.ipsl.fr> |
Salut!
J'espère que Steph tu es rétabli et que Xavier la campagne se
passe bien.
On s'est un peu raté ces derniers temps.
Je pars pour 2 semaines en Catalogne, de retour le Lundi 9
Janvier.
2/ La release v1.3 réduit les problèmes AGRIF/PISCES à
un problème exclusivement AGRIF!
Elle passe le test CVTK de reproductibilité MPI
croco+AGRIF+PISCES
et plante le test CVTK de reproductibilité MPI croco+AGRIF+PISCES
Ce qui est intéressant, c'est que pour chaque découpage ou croco+AGRIF+PISCES plante, croco+AGRIF plante aussi!!
3/ Il reste cependant un problème d'inputs propre à PISCES sans
doute, qui rend l'utilisation d'AGRIF instable si la BIO est
initialisée dans croco_ini et croco_bry
| Sujet : | PISCES avec et sans AGRIF / release-v1.3 - petit point route |
|---|---|
| Date : | Wed, 14 Dec 2022 11:45:11 +0100 |
| De : | Christophe Hourdin <christophe.hourdin@locean.ipsl.fr> |
| Pour : | Gildas Cambon <gildas.cambon@ird.fr>, Rachid Benshila <rachid.benshila@legos.obs-mip.fr>, Renaud Person <renaud.person@locean.ipsl.fr> |
Hep les stars!
Ca faisait longtemps!
Je reviens vous taquiner un peu. Certain que ça vous manquait.
Un peu long désolé mais facile à lire.
Le plus important pour moi c'est d'échanger sur les points 1 et
5. (en bleu, temps de lecture 1mn30 :-)
Le reste, vous lisez si ça vous intéresse, c'est un petit bilan
retour d'expérience.
1/ Fichiers d'input BENGUELA VHR...
encore!
Gildas, ta nouvelle version sans Nan dans le fichier ini de la
grille fille m'a permis de ne plus planter et de pouvoir achever
de tourner croco AGRIF + PISCES avec toutes les options de DEBUG
assez strictes suivantes:
gfortran :
# DEBUG nemo2 : nemo1 + add -fdefault-real-8 for conflict REAL16 REAL8 with AGRIF
FFLAGS1="-Og -g -fdefault-real-8 -fdefault-double-8 -fbacktrace -funroll-all-loops -fcray-pointer -ffree-line-length-none -fcheck=all -finit-real=nan -ffpe-trap=invalid,zero,overflow -ffpe-summary=invalid,zero,
ifort :
# DEBUG nemo0 : NEMO Seb Oct 2022
FFLAGS1="-O0 -g -i4 -r8 -traceback -check all,noarg_temp_created -fpe-all0 -ftrapuv -debug all -fp-model strict -ftz -init=arrays,snan,huge -no-wrap-margin"
Mais ça ne m'a pas permis pour autant de passer le test de reproductibilité MPI AGRIF+PISCES en 2x2 que Rachid disait passer sans BIO_HADV_WENO.
Et comme Rachid est un homme d'honneur, animé par la foi, j'ai
finit par utiliser ses fichiers d'inputs, ce qui a remédié au
problème!! Curieux.
Je passe bien, avec ses fichiers, la reproductibilité en 1 way et 2 way sans BIO_HADV_WENO.
BRYPISCESAGRIF1W22 & BRYPISCESAGRIF2W22
.. c'est un bon progrès et bon signe sur les progrès de PISCES,
mais hélas ça ne veut pas dire pour autant que les problèmes de
repro MPI sont réglés pour AGRIF + PISCES. cf ci après.
En regardant vite fait, il y a pas mal de différences entre les
inputs de Gildas qui sont ceux du web fraichement mis à jour et
ceux que Rachid m'a passé. (par exemple pas d'initialisation
pour les champs bio dans le croco_ini.nc mère chez Rachid).
Mais je ne vois pas à priori en quoi ça peut impacter la
reproductibilité MPI??? Et si vous avez une idée ça m'intéresse.
En plus on voit pas mal de choses passer sur le forum concernant des dysfonctionnements liés aux fichiers d'inputs générés par les croco tools
Si on peut échanger un peu là dessus à l'occasion je veux bien.
Ca serait bien au final qu'on ait un jeu d'inputs commun et
fiable disponible sur le web pour pouvoir causer de la même
chose.
Retour d'expérience... ou direct => 5/ Conclusions et questions:
2/ CVTK
Je suis en mesure de faire tourner maintenant de manière semi
automatique la chaine CVTK avec gitlab-runner (et donc à
l'identique de ce qui tourne sur le gitlab de l'INRIA) sur les
machines suivantes:
SPIRIT / DATARMOR / JEANZAY / IRENE & IRENE-AMD
En attendant de tirer au clair ce problème des fichiers
d'inputs, j'ai avancé avec les inputs de Rachid et j'ai un peu
chahuté PISCES (sans AGRIF), puis agréablement surpris par les
résultats, j'ai fait pareil pour AGRIF + PISCES, sur les 5
machines.
3/ Validation repro MPI PISCES (sans AGRIF)
Les tests qui suivent ont été faits avec la branche "dev_63-pisces-bug-fixes" du 28 Oct 2022.
Cette branche contient strictement les mêmes bugfix pour PISCES
que la release-v1.3.
Les tests valent donc à priori pour la release-v1.3/
J'ai essentiellement utilisé gfortran, mais vérifié qu'avec ifort aussi un même test passait sur toutes les machines.
Tous les tests passent avec les options strictes de debug (en
haut de page) pour gfortran et ifort.
Le résultats sympas, c'est que quelque soit le découpage MPI et quelque soit la machine, tous les tests passent.
Les temps indiqués n'ont pas d'intérêt pour ce message.
Mais là où il y a un temps c'est que ça correspond à un test
repro MPI valide!
--------------------------------------------------- (TEMPS en minutes) | SPIRIT | DATARMOR | JEANZAY | IRENE | IRENE-AMD | -------------------------------------------------------------------------------------------------------- 4 procs (1x4 2x2 4x1) -------------------------------------------------------------------------------------------------------- BRYPISCES14_gfortran_DEBUG_nemo2 | 5 | 5 | 5 | 5 | 5 | BRYPISCES22_gfortran_DEBUG_nemo2 | 4 | 5 | 6 | 5 | 5 | BRYPISCES41_gfortran_DEBUG_nemo2 | 4 | | | | | -------------------------------------------------------------------------------------------------------- 15 procs (3x5 5x3) -------------------------------------------------------------------------------------------------------- BRYPISCES35_gfortran_DEBUG_nemo2 | 5 | | | | | BRYPISCES53_gfortran_DEBUG_nemo2 | 4 | | | | | -------------------------------------------------------------------------------------------------------- 16 procs (4x4 2x8 8x2) -------------------------------------------------------------------------------------------------------- BRYPISCES44_gfortran_DEBUG_nemo2 | 5 | | | | | BRYPISCES28_gfortran_DEBUG_nemo2 | 5 | | | | | BRYPISCES82_gfortran_DEBUG_nemo2 | 4 | | | | | -------------------------------------------------------------------------------------------------------- 42 procs (6x7 7x6) -------------------------------------------------------------------------------------------------------- BRYPISCES67_gfortran_DEBUG_nemo2 | 5 | | | | | BRYPISCES76_gfortran_DEBUG_nemo2 | 5 | | | | | -------------------------------------------------------------------------------------------------------- 64 procs (8x8) -------------------------------------------------------------------------------------------------------- BRYPISCES88_gfortran_DEBUG_nemo2 | | | | 6 | | -------------------------------------------------------------------------------------------------------- 100 procs (10x10) -------------------------------------------------------------------------------------------------------- BRYPISCES1010_gfortran_DEBUG_nemo2 | | | | 6 | | -------------------------------------------------------------------------------------------------------- 144 procs (12x12) -------------------------------------------------------------------------------------------------------- BRYPISCES1212_gfortran_DEBUG_nemo2 | | | | 6 | | -------------------------------------------------------------------------------------------------------- 289 procs (17x17) -------------------------------------------------------------------------------------------------------- BRYPISCES1717_gfortran_DEBUG_nemo2 | | | | 8 | | -------------------------------------------------------------------------------------------------------- 484 procs (22x22) -------------------------------------------------------------------------------------------------------- BRYPISCES2222_gfortran_DEBUG_nemo2 | | | | 8 | | -------------------------------------------------------------------------------------------------------- REMAKE avec ifort (temps 7 à 12 x plus lent!) -------------------------------------------------------------------------------------------------------- BRYPISCES14_ifort____DEBUG_nemo0 | 36 | 31 | 49 | 60 | 43 | BRYPISCES22_ifort____DEBUG_nemo0 | 37 | 30 | 49 | 60 | 45 | BRYPISCES14_ifort____DEBUG_nemo0_sans-no-wrap-margin | 35 | | | | | BRYPISCES22_ifort____DEBUG_nemo0_sans-no-wrap-margin | 36 | | | | | -------------------------------------------------------------------------------------------------------- BRYPISCES14_ifort____PROD_croco0_sans-no-wrap-margin | | | 6 | | | BRYPISCES22_ifort____PROD_croco0_sans-no-wrap-margin | | | 6 | | | -------------------------------------------------------------------------------------------------------- Remarque 1:Ce temps comprennent compilation mono proc + execution mono proc avec ecriture du check_file + compilation mpi + execution mpi avec lecture du check_fileC'est étonnant qu'on ait des temps 7 à 12 fois plus lent pour ifort que pour gfortran !!! Pourtant, avec ces options de compilation, ifort ne détecte en général pas plus de problèmes que gfortran.
Remarque 2:
L'option sans-no-wrap-margin permet de ne plus avoir les nombreux retours à la ligne avec ifort qui rendait les comparaisons de sortie de job compliquée!
4/ Validation repro MPI AGRIF + PISCES
Les tests suivants sont réalisés
- avec la release-v1.3 qui intègre tous les
bugfix PISCES
- avec gfortran (toujours les mêmes options strictes de
compilation)
- Sans BIO_HADV_WENO5
- sur 1 pas de temps qui suffit pour faire planter.
La bonne nouvelle c'est que la plupart des découpages MPI
passent pour AGRIF + PISCES.
Partout où le test plantait, j'ai refait le même test AGRIF
mais sans PISCES.
Partout où AGRIF+PISCES plante, AGRIF seul plante aussi!
Le problème qui persiste aujourd'hui, et peut-être pas le moindre, semble être maintenant un problème spécifiquement AGRIF.
---------------------------------------------------
(TEMPS en minutes) | SPIRIT | DATARMOR | JEANZAY | IRENE | IRENE-AMD |
--------------------------------------------------------------------------------------------------------
4 procs (1x4 2x2 4x1)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W22 | 12 | | | 15 | |
BRYPISCESAGRIF2W22 | 15 | | | 15 | |
BRYPISCESAGRIF1W14 | 11 | | | 15 | |
BRYPISCESAGRIF2W14 | 11 | | | 15 | |
BRYPISCESAGRIF1W41 | 11 | | | 15 | |
BRYPISCESAGRIF2W41 | 11 | | | 16 | |
--------------------------------------------------------------------------------------------------------
15 procs (3x5 5x3)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W35 | 10 | | | 14 | |
BRYPISCESAGRIF2W35 | 10 | | | 14 | |
BRYPISCESAGRIF1W53 | 10 | | | 14 | |
BRYPISCESAGRIF2W53 | 10 | | | 15 | |
--------------------------------------------------------------------------------------------------------
42 procs (6x7 7x6)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W67 | 10 | | | 14 | |
AGRIF1W67========= (sans PISCES) | 6 (avec test OPENMP) 6 | | |
BRYPISCESAGRIF2W67 | 10 | | | 15 | |
AGRIF2W67========= (sans PISCES) | 7 (avec test OPENMP) 7 | | |
BRYPISCESAGRIF1W76 | PLANTE | | PLANTE | PLANTE| |
AGRIF1W76========= (sans PISCES) | PLANTE | | PLANTE | PLANTE| |
BRYPISCESAGRIF2W76 | PLANTE | | PLANTE | PLANTE| |
AGRIF2W76========= (sans PISCES) | PLANTE | | PLANTE | PLANTE| |
--------------------------------------------------------------------------------------------------------
49 procs (7x7)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W77 | 11 | | | 14 | |
BRYPISCESAGRIF2W77 | 11 | | | 15 | |
--------------------------------------------------------------------------------------------------------
64 procs (8x8)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W88 | | | 19 | 15 | |
BRYPISCESAGRIF2W88 | | | 17 | 14 | |
--------------------------------------------------------------------------------------------------------
81 procs (9x9)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W99 | | | 17 | 15 | |
AGRIF1W99========= (sans PISCES) | | | 7 | 10 (avec test OPENMP)
BRYPISCESAGRIF2W99 | | | 18 | 14 | |
AGRIF2W99========= (sans PISCES) | | | 7 | 10 (avec test OPENMP)
--------------------------------------------------------------------------------------------------------
100 procs (10x10)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W1010 | | | 17 | 14 | |
BRYPISCESAGRIF2W1010 | | | 21 | 15 | |
--------------------------------------------------------------------------------------------------------
169 procs (13x13)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W1313 | | | PLANTE | PLANTE| |
AGRIF1W1313========= (sans PISCES) | | | PLANTE | PLANTE| |
BRYPISCESAGRIF2W1313 | | | PLANTE | PLANTE| |
AGRIF2W1313========= (sans PISCES) | | | PLANTE | PLANTE| |
--------------------------------------------------------------------------------------------------------
484 procs (22x22)
--------------------------------------------------------------------------------------------------------
BRYPISCESAGRIF1W2222 | | | PLANTE | PLANTE| |
AGRIF1W2222========= (sans PISCES) | | | PLANTE | PLANTE| |
BRYPISCESAGRIF2W2222 | | | PLANTE | PLANTE| |
AGRIF2W2222========= (sans PISCES) | | | PLANTE | PLANTE| |
--------------------------------------------------------------------------------------------------------
croco_grd.nc dimensions:
xi_u = 168 ;
eta_u = 172 ;
xi_v = 169 ;
eta_v = 171 ;
xi_rho = 169 ;
eta_rho = 172 ;
xi_psi = 168 ;
eta_psi = 171 ;
croco_grd.nc.1 dimensions:
xi_u = 175 ;
eta_u = 242 ;
xi_v = 176 ;
eta_v = 241 ;
xi_rho = 176 ;
eta_rho = 242 ;
xi_psi = 175 ;
eta_psi = 241 ;
DECOUPAGE MAX: 22x22 => 7 à 8 points par sous domaine MPI
=> pour découpage MPI grille mère 22x22 : 170 / 22 => entre 7 et 8 points par sous domaine MPI en lon et en lat
=> pour découpage MPI grille fille 22x22 : 175 / 22 ~= 8 points par sous domaine MPI en lon
242 / 22 = 11 points par sous domaine MPI en lat
Le plantage avec un découpage en 6 sur la latitude pour
BRYPISCESAGRIF1W76 et BRYPISCESAGRIF2W76 montre que les plantages ne sont pas liés à un nombre de
points trop petit par domaine MPI.
5/ Conclusions et questions:
La release v1.3 peut décemment s'imposer comme la version de
référence de PISCES, pour les machines HPC aussi.
Notre problématique AGRIF + PISCES semble se réduire maintenant
à un problème AGRIF uniquement... ce qui ne veut pas dire le
plus simple je sais.
Question 1: LEX
Le répertoire LEX qui génère le fichier fortran.c de la LIB
AGRIF n'est pas disponible dans CROCO comme il l'est dans NEMO.
Est-ce volontaire? Y a t il une raison? Ou peut on y avoir
accès?
Question 2 : BIO_HADV_WENO5
Rachid, tu as laissé entendre qu'avec BIO_HADV_WENO5 AGRIF+PISCES ne serait pas reproductible MPI.
Mais est ce un problème théoriquement insoluble? Où est ce parce que tu sais qu'il y a un problème MPI qui traine, quand on active AGRIF?
Si tu peux m'en dire un peu plus...
Voilà. Si vous avez un peu de temps pour échanger sur tout ça,
je suis preneur.
Et d'ici là, bonnes boules de neiges!
Christophe
Rien à dire.
C'est rudement mieux et je ne te cache pas que ça ne fait pas de mal!!
Cela dit, que ce soit avec PISCES ou sans, avec les options de compilation debug fortes, j'ai une série de warnings propres à la lib AGRIF à l'exécution dans le déroulement du job dans le genre:
At line 411 of file AGRIF_FILES/modmpp.F90 Fortran runtime warning: An array temporary was created for argument '_formal_7' of procedure 'mpi_send'...At line 345 of file AGRIF_FILES/modbc.F90 Fortran runtime warning: An array temporary was created...At line 1131 of file AGRIF_FILES/modinterp.F90 Fortran runtime warning: An array temporary was created for argument 'parenttab' of procedure 'agrif_interpbase' At line 1131 of file AGRIF_FILES/modinterp.F90 Fortran runtime warning: An array temporary was created for argument 'parenttab' of procedure 'agrif_interpbase' At line 1132 of file AGRIF_FILES/modinterp.F90 Fortran runtime warning: An array temporary was created for argument 'childtab' of procedure 'agrif_interpbase' At line 1132 of file AGRIF_FILES/modinterp.F90 Fortran runtime warning: An array temporary was created for argument 'childtab' of procedure 'agrif_interpbase'Ces warnings sont strictement les mêmes qu'il s'agisse d'agrif avec pisces ou d'agrif sans pisces.
En pièce jointe les sorties de jobs pour agrif et agrif+pisces sur JEANZAY (les messages sont les mêmes sur les autres machines)
Si jamais ça parle à l'un d'entre vous. Sinon je continue mes investigations.
A suivre...
Christophe
Le 17/11/2022 à 11:17, Gildas Cambon a écrit :
;-),
est ce que tu peux essayer avec le nouveaux https://data-croco.ifremer.fr/ForCI-INRIA.tar.gz
que je viens de faire
je vais mettre a jour sur les machines CI-INRIA
Le 17/11/2022 à 10:33, Christophe Hourdin a écrit :
Salut Vildas 😛
Alors si tu confirmes, et que Rachid passe le test, c'est soit qu'il n'a pas les mêmes fichiers d'input soit qu'il a des options de compilation ou une machine qui laissent passer les NaN.
Toutes les machines plantent clairement sur ce problème dans p4zche.F90. (IRENE skylake & AMD, JEANZAY et SPIRIT (IPSL))
Sauf DATARMOR.
Même avec les options les plus dures, DATARMOR ne plante pas. Il continue avec ses petits NaN qu'on voit passer dans le début du fichier output pour l'initialisation si on y fait attention.
Pour la grille mère on a :
tracer nb : 1 name : DIC mean : 0.2271918715E-02 min : 0.2037492873E-02 max : 0.2356792764E-02 tracer nb : 2 name : Alkalini mean : 0.2409082850E-02 min : 0.2353072454E-02 max : 0.2441840725E-02 tracer nb : 3 name : O2 mean : 0.2181741052E-03 min : 0.7496415624E-04 max : 0.2713107602E-03Pour la grille fille:
tracer nb : 1 name : DIC mean : NaN min : 0.2065040557E-02 max : 0.2319191888E-02 tracer nb : 2 name : Alkalini mean : NaN min : 0.2358922300E-02 max : 0.2431866391E-02 tracer nb : 3 name : O2 mean : 0.2141863639E-03 min : 0.1746932720E-03 max : 0.2713856329E-03
Pourtant en fin de listing on a bien des valeurs pour DIC et Alkalini pour la grille fille
Mais va savoir ce qu'elles valent!?!
Pour la grille mère :
tracer nb : 1 name : DIC mean : 0.2074226197E-02 min : 0.2063853090E-10 max : 0.2356783032E-02 tracer nb : 2 name : Alkalini mean : 0.2199815032E-02 min : 0.3039843289E-10 max : 0.2441840520E-02 tracer nb : 3 name : O2 mean : 0.2181695402E-03 min : 0.7504662570E-04 max : 0.2694663276E-03Pour la grille fille (les NaN ont disparu) :
tracer nb : 1 name : DIC mean : 0.1127550958E-02 min : 0.6879090314E-11 max : 0.2319189326E-02 tracer nb : 2 name : Alkalini mean : 0.1198261737E-02 min : 0.1013252011E-10 max : 0.2431856294E-02 tracer nb : 3 name : O2 mean : 0.2141848018E-03 min : 0.1747354057E-03 max : 0.2699599917E-03
Merci pour ta réponse et à suivre...
Le 17/11/2022 à 10:13, Gildas Cambon a écrit :
Salut Vhristophe,
En effet tu mets le doigts sur une belle m...
c'est pas du tout volontaire.
Il faut donc qu'on fixe ca. En attendant tu peux te refaire un fichier a toi en utilisant le nestgui.
Comme tu dis, forcement ca explose...
Je te tiens au courant.
Gildas
Le 17/11/2022 à 09:22, Christophe Hourdin a écrit :
Salut,
Dans les fichiers d'inputs de BENGUELA_VHR que j'ai récupéré là :
https://data-croco.ifremer.fr/ForCI-INRIA.tar.gz
D'après votre doc CVTK
https://gitlab.inria.fr/croco-ocean/croco/-/wikis/devs/Automatic-testing
J'ai un fichier croco_ini pour la grille fille qui a des NaN sur les 2 premiers niveaux pour DIC et TALK (et sur la même région sud ouest pour les 2)
Ce qui n'est pas le cas pour la grille mère.
cf exemples joints pour DIC et TALK pour K=1
C'est ce qui explique mon plantage dans p4zche dans la grille fille quand j'active AGRIF pour BENGUELA_VHR
Ce petit mail donc pour vous demander si la présence de ces NaN est volontaire.
Et si ça n'est pas normal, pour corriger le tir sur votre web et me fournir le fichier correct.
Rachid, ça expliquerait tu passes AGRIF-PISCES sur BENGUELA_VHR et pas moi.
Et que ça ne soit pas une affaire, ni d'options de compil ni de machine.
D'avance merci les gars!
Christophe
-- Christophe HOURDIN Laboratoire d'Océanographie et du Climat : Expérimentations et Approches Numériques LOCEAN UMR7159 Sorbonne Université/IRD/CNRS/MNHN Bureau 424 45-55 4ème, Case 100 4, place JUSSIEU 75005 PARIS FRANCE christophe.hourdin@locean.ipsl.fr Tél.: +33 6 26 17 73 34 https://www.locean-ipsl.upmc.fr