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.

Je vous fais suivre un petit mail bilan que j'avais envoyé à Rachid et Gildas pour avancer un peu nos affaires.

C'est un résumé de là où j'en suis.

Les points essentiels sont que :

1/ La release v1.3 peut décemment s'imposer comme la version de référence de PISCES, pour les machines HPC aussi.

    Elle passe le test CVTK  de reproductibilité MPI   croco+PISCES

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


Les détails de tout ça dans le mail ci dessous si ça vous intéresse...

En attendant, je vous souhaite de bonnes vacances, une bonne campagne, de bonnes fêtes et ... à s'tantôt!

Christophe



-------- Message transféré --------
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_file
C'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




Le 17/11/2022 à 13:53, Christophe Hourdin a écrit :

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-03

Pour 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-03

Pour 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