Point pour retour Fêtes de fin d'année: 10 Janvier 2023 sans BIO_HADV_WENO5 1 seul pas de temps dans CVTK (en remettre 3 une fois que ça marche) fermer la dev 63 et ouvrir une nouvelle issue et branche debug AGRIF (ou AGRIF / PISCES) Une fois que tout est OK, tester: - repro MPI avec MPI_NOLAND - XIOS - NC4PAR parallel file (bugfix depuis la release 1.3 pour wrt diabio 23ffd61a5337522ada78eebae069cb7c16b08ba1) - WET_DRY sans/avec AGRIF - ajouter ncjoin et partit dans Makefile (debug dpost v1.3) ================================================================================ Point d'étape : ================================================================================ Regarder précisément les différences entre VHR_CROCO_FILES_BCK_gitlab_2/ VHR_CROCO_FILES_BCK_Rachid_1/ VHR_CROCO_FILES_BCK_gitlab_3/ Si c'est bien l'initialisation des champs bio qui plantent la repro MPI? Mais c'est une question qui doit venir une fois la repro MPI pour AGRIF seul garantie. Parce qu'il s'agit peut-être du même problème AGRIF MPI accentué par la lecture de 25 traceurs au lieu de 4 (T, S, u et v) Vérifier qu'il n'y a aucune initialisation BGC dans ini et bry pour VHR_CROCO_FILES_BCK_Rachid_1/ pour la mère et pour la fille? Il semble que ça soit toujours sur la Grille fille que la repro MPI plante Mais c'est peut-être une question de read/write on freed memory Piste de la lecture AGRIF/MPI du champs ZOO puisque ça plante chaque fois là sur un découpage qui passe sans bio (2x2) Mais laisser tout ça dans un premier temps pour se concentrer sur le bug AGRIF sans PISCES. Avec VHR_CROCO_FILES_BCK_Rachid_1/ Tous les découpages MPI passent la repro MPI à part 1x6, 7x6, 13x13 et 22x22 où AGRIF seul et AGRIF + PISCES plantent la repro MPI strictement au même endroit. Tous les decoupages MPI qui plantent (1x6, 7x6, 13x13 et 22x22) plantent sur le premier "vbar step2d" GRID 1 après avoir passé : prestep3d t,s,u,v GRID 0 prestep3d t,s,u,v GRID 1 step2d zeta,ubar,vbar GRID 0 step2d zeta,ubar GRID 1 Sauf pour le 2 WAYS 22x22 qui plante avant sur le prestep3d pour v sur GRID 1: après avoir passé : prestep3d t,s,u,v GRID 0 prestep3d t,s,u GRID 1 Si vbar est calculé à partir de v... traquer d'abord dans 2WAYS 22x22... Mais le plantage en 22x22 peut-être lié à un autre problème ... problème de nombre de points insuffisants dans les sous domaines MPI (entre 7 à 8 points) Alors travailler peut-être d'abord avec le 1x6 ... plus facile. Et si on règle le problème, on verra s'il persiste pour le 13x13 et ou le 22x22 XXXXX Est ce que ces découpages plantent à l'execution sans repro??? Le cas échéant, plus facile pour traquer un bug que la repro VHR_CROCO_FILES_BCK_gitlab_3 : ...Nouveaux inputs qui fournissent des fichier ini, clm et bry sans les variables BGC qui seront lues constantes dans le code (get_tclim, get_bry_bio, et get_initial) si elles sont pas presentes ds les netcdf. On retrouve bien la repro MPI sur le 2x2 sans BIO_HADV_WENO5 comme avec VHR_CROCO_FILES_BCK_Rachid_1 ================================================================================ Question sur le déroulé temporel : ================================================================================ Est ce normal que le step2d en fin de pas de temps soit executé sur la grille fille 1 fois sur le STEP 0 2 fois sur le STEP 1 3 fois sur le STEP 2 STEP time[DAYS] NO3 DIA ZOO DOC trd 0 0.00000 2.4127408E+01 1.0000000E-02 1.0000000E-02 3.9055237E+00 0 prestep3d t,s, 25 traceurs bio u,v GRID 0 prestep3d t,s, 25 traceurs bio u,v GRID 1 n fois : step2d zeta,ubar,vbar GRID 0 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 ============================ step2d zeta,ubar,vbar GRID 0 step2d zeta,ubar,vbar GRID 1 ============================ step3d t,s, 25 traceurs bio u,v GRID 1 1 0.00347 2.4127408E+01 9.9999850E-03 9.9999287E-03 3.9055218E+00 0 prestep3d t,s, 25 traceurs bio u,v GRID 1 n fois : step2d zeta,ubar,vbar GRID 0 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 ============================ step2d zeta,ubar,vbar GRID 0 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 ============================ step3d t,s, 25 traceurs bio u,v GRID 1 2 0.00694 2.4127403E+01 9.9999699E-03 9.9998559E-03 3.9055263E+00 0 prestep3d t,s, 25 traceurs bio u,v GRID 1 n fois : step2d zeta,ubar,vbar GRID 0 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 ============================ step2d zeta,ubar,vbar GRID 0 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 step2d zeta,ubar,vbar GRID 1 ============================ step3d t,s, 25 traceurs bio u,v GRID 0 step3d t,s, 25 traceurs bio u,v GRID 1 ================================================================================ Debut du travail sur CONV et LIB Agrif ================================================================================ Gildas : Quelle différence entre 1, 2 ou 3 lignes BUGIN ? Signification des lignes: pas assez de précisions... Regarder dans le source debug.F PRFRST. Point bloquants sans AGRIF? BRYPISCES devrait passer... Rachid : BIO_HADV_WENO5 AGRIF+PISCES ne serait pas reproductible MPI? Pourquoi? Repertoire LEX? -------------------------------------------------------------------------------- DDT s'arrête avant le listing de non repro MPI avec une fenêtre indiquant : -------------------------------------------------------------------------------- read/write of freed memory Or il devrait s'arrêter proprement par CVTK avec dans le listing BUGBIN = t prestep3d 0 87 0 87 0 12 -0.999226782513E-19 0.000000000000E+00 0.999226782513E-19 Une idée serait qu' AGRIF lit la mère sans problème, mais lit la fille en utilisant de la mémoire libérée par la mère mais encore utilisée par elle (read/write of freed memory)??? D'ailleurs il semble que VHR_CROCO_FILES_BCK_Rachid_1/ n'initialise rien de BIO dans croco_ini.nc mais quasi tout dans croco_ini.nc.1 Et la repro MPI avec PISCES passe pour les découpages ou AGRIF seul passe. Ca s'expliquerait par le fait que la fille utilise de la mémoire pour la BIO qui n'a pas été utilisée avant pour la mère. Supposition, supposition... Les messages: At line 418 of file AGRIF_FILES/modmpp.F90 Fortran runtime warning: An array temporary was created Car tableaux pas contigus? A quoi correspondent exactement ces messages (qui apparaissent avec les options de DEBUG) DDT s'arrête avec l'avertissement "read/write of freed memory" avant de printer ces messages ? Les 2 seraient liés? -------------------------------------------------------------------------------- CONV de NEMO dans croco -------------------------------------------------------------------------------- Semble fonctionner et ne rien changer. XXXXXX Mais question de la recompilation des fichiers LEX? Remettre le Makefile AGRIF de NEMO qui ré génère les fichiers .c à partir des .lex Ne change à priori rien puisque les .c sources du git doivent être à jour des .lex. Vérifier auprès de Seb pourquoi ils ne sont pas fixés? -------------------------------------------------------------------------------- LIB AGRIF de NEMO dans croco -------------------------------------------------------------------------------- Regarder l'historique NEMO!!! svn => vendor... + déplacements multiples de Nicolas Martin. Soit on récupère toute la version NEMO... Idéal pour phaser AGRIF entre nemo et croco Soit aller chercher dans l'historique les bugs... Notamment la diff immédiatement vue qui touche précisément à un traitement différent entre mère et fille: dans modbc.F90: 190c190 < call Agrif_get_var_global_bounds(child,lubglob,nbdim) --- > call Agrif_get_var_global_bounds(child,lubglob,nbdim,parent) 231c231 < call Agrif_get_var_bounds_array(child,lower,upper,nbdim) --- > call Agrif_get_var_bounds_array(child,lower,upper,nbdim,parent) -------------------------------------------------------------------------------- MESSAGES DE DEPASSEMENT CONV. EXPLICITES SUR SPIRIT !!!!!!!!!!!!!!!!!!!!!!!! Deallocate... sur AWA... retrouver, reproduire puis remplacer le code avec le nouveau... p4zfechem TENTER CVTK AGRIF seul en 1x6 avec version ancienne de croco. Voir si ça n'est pas un bug introduit récemment. Mais plus de chance que ça soit que personne n'ai testé autant de découpages... J'oublie toujours qu'il y a peu d'utilisateurs d'AGRIF dans croco. Suivre avec DDT Plantage AGRIF dans vbar step2d GRID 1 : Comment se font les conditions frontières de la grille fille (la mère lit les brys) Gildas me parle de set_nudgcof_fine.F qui fournit les bry pour la grille fille. Il y a aussi set_nudgcof.F (qui doit lire les bry pour la grille mère?) Traquer par dichotomie à l'aide de checktab en plus dans CVTK Reprendre from scratch l'intégration du CONV et de la LIB AGRIF NEMO dans croco. Pas de raisons à priori que ça ne fonctionne pas. NEMO a ajouté des fonctions pour la periodicité EST OUEST du global et pour les pôles? Mais les fichiers semblent à part ça très semblables et à priori croco n'utilise pas ces fonctions. Il faut juste tromper AGRIF qui va chercher 2 fonctions dans src/NST/agrif_user.F90 de NEMO: agrif_external_switch_index Correct_field Ajout de write(*,*) pour s'assurer que croco ne passe pas dans ces fonctions shuntées. cf test sur IRENE : release-v1.3_AGRIF-NEMO/ Quand problème AGRIF clair, Rachid + Laurent. ================================================================================ 17 Janv 2023 Tests avec CONV/AGRIF CROCO ou NEMO ================================================================================ ----------------------------------------- Simu agrif gfort 2x2 LIBAGRIF+CONV croco: ----------------------------------------- /ccc/scratch/cont005/ra0542/hourdinc/croco/BENGUELA_VHR/execute/debug_agrif/test_IRENE_031A_agrif_gfort_sans_BIO_HADV_WENO5__2x2_proc______________OK Cette simu fonctionne et est reproductible MPI d'après CVTK. Pourtant, avec DDT, au lieu d'aller jusqu'auu bout de la simu, elle s'arrête dans la grille fille après ---------- Config BENGUELA_VHR (16 01 2023 on IRENE) - ZOOM 9 ntimes Total number of timesteps for 3D equations. 300.00 dt Timestep [sec] for 3D equations 60 ndtfast Number of 2D timesteps within each 3D step. 1 ninfo Number of timesteps between runtime diagnostics. ... Time splitting: ndtfast = 60 nfast = 82 Maximum grid stiffness ratios: rx0 = 0.16562381330782291 rx1 = 5.8874564736949804 GET_INITIAL -- Processing data for time = 0.000 record = 1 GET_INITIAL - unable to find variable: hbl in input NetCDF file: croco_ini.nc.1 ==> Initialized to zero state. >> CAUTION in case of #define EXACT_RESTART << If it is the case - OK if it is a 'cold start' i.e coming from a 3rd-party initial file - otherwise if it is a 'hot start' i.e from a restart file produced by this code: => problem: run is not restartable => check your initial file GET_SMFLUX -- Read surface momentum stresses for time = 345.0 0 GET_SMFLUX -- Read surface momentum stresses for time = 15.00 0 GET_STFLUX -- Read surface flux of tracer 1 for time = 345.0 0 GET_STFLUX -- Read surface flux of tracer 1 for time = 15.00 0 GET_SST -- Read SST and dQdSST fields for time = 345.0 0 GET_SST -- Read SST and dQdSST fields for time = 15.00 0 GET_STFLUX -- Read surface flux of tracer 2 for time = 345.0 0 GET_STFLUX -- Read surface flux of tracer 2 for time = 15.00 0 GET_SSS -- Read SSS fields for time = 345.0 0 GET_SSS -- Read SSS fields for time = 15.00 0 GET_SRFLUX -- Read solar shortwave radiation for time = 345.0 0 GET_SRFLUX -- Read solar shortwave radiation for time = 15.00 0 DEF_HIS/AVG - Created new netCDF file 'croco_3ts_his.nc.1'. mynode = 0 WRT_GRID -- wrote grid data into file 'croco_3ts_his.nc.1'. mynode = 0 WRT_HIS -- wrote history fields into time record = 1 / 1 mynode = 0 At line 411 of file AGRIF_FILES/modmpp.F90 At line 411 of file AGRIF_FILES/modmpp.F90 At line 411 of file AGRIF_FILES/modmpp.F90 Fortran runtime warning: An array temporary was created Fortran runtime warning: An array temporary was created Fortran runtime warning: An array temporary was created At line 502 of file AGRIF_FILES/modmpp.F90 At line 502 of file AGRIF_FILES/modmpp.F90 At line 502 of file AGRIF_FILES/modmpp.F90 Fortran runtime warning: An array temporary was created Fortran runtime warning: An array temporary was created Fortran runtime warning: An array temporary was created ---------- avec le message Memory error: Processes 0-3: Memory error detected in access_mem (Ginit.c:193) read/write of freed memory Dans current Stack : #11 agrif_update::agrif_updatend (type_update=..., parent=..., child=..., pttab=..., petab=..., lb_child=..., lb_parent=..., s_child=..., s_parent=..., ds_child=..., ds_parent=..., posvar=..., do_update=..., nbdim=2, procname={void (void)} 0x5fa219 , nb=, ndir=) at /ccc/scratch/cont005/ra0542/hourdinc/croco/croco_scratch_IRENE/AGRIF/:697 (at 0x000000000069f4e9) qui est appellée par #12 agrif_update::agrif_updatewhole (parent=..., child=..., uinf=..., usup=..., lb_child=..., lb_parent=..., nb_child=..., posvar=..., do_update=..., s_child=..., s_parent=..., ds_child=..., ds_parent=..., nbdim=2, procname={void (void)} 0x5fa219 ) at /ccc/scratch/cont005/ra0542/hourdinc/croco/croco_scratch_IRENE/AGRIF/:245 (at 0x00000000006c9150) ----------------------------------------- Simu agrif gfort 2x2 LIBAGRIF+CONV NEMO: -----------------------------------------