LMDZ5/trunk révision 1575

Tests effectué sur VARGAS / IDRIS

 

- En basse résolution 96x95x39 avec ancienne physique, sans ORCHIDEE

- Compilation ok : mode compilation -prod, -dev et -debug avec mode de parallélisme seq,mpi,omp et mpi_omp (12 exécutables gcm.e)

- Pour exécuter il faut une mémoire correspondant aux 16 processus c.a.d. un lancement sur 16 proc MPI ou "8 proc MPI+2 taches OpenMP"

- Les différences de compilation entre les mode -prod, -dev et -debug, se trouve dans les flags :

PROD_FFLAGS= -O3

DEV_FFLAGS= -O2 -qfullpath -qinitauto=7FBFFFFF -qfloat=nans -qflttrap=overflow:zerodivide:invalid:enable -qsigtrap

DEBUG_FFLAGS= -g -qfullpath -qnooptimize -qinitauto=7FBFFFFF  -qfloat=nans -qflttrap=overflow:zerodivide:invalid:enable -qsigtrap -qcheck

 

Mode de parallélisme pur MPI

- Tests en mode de compilation -dev et -debug donnent les mêmes résultats entre 16 proc et 32 proc

- Tests en mode de compilation -prod ne donnent pas les mêmes résultats entre 16 proc et 32 proc. Les erreurs relatives sont de l'ordre 10-15 (t_seri, q_seri) quand ils apparaissent au 1er pas de temps de la physique. Quand on enleve la physique (iflag_phys=0), les resultats sont identiques entre 8, 10, 16, 19, 20, 32 proc MPI. Les differences viennent donc de la physique.

 

Mode de parallélisme mixt MPI-OpenMP

En mode de compilation -prod, celon le choix de nombre de proc MPI et tache OMP, les restarts sont parfois identiques... voir tableau ci-dessous. En conclusion, on a les mêmes resultats sauf avec 1omp.

8mpi-2omp 8mpi-4omp 8mpi-8omp 16mpi-1omp 16mpi-2omp 16mpi-8omp 32mpi-1omp 32mpi-2omp 32mpi-8omp
8mpi-2omp --- OK OK DIFFER OK OK DIFFER OK OK
8mpi-4omp --- OK DIFFER OK OK DIFFER OK OK
8mpi-8omp --- DIFFER OK OK DIFFER OK OK
16mpi-1omp ---- DIFFER DIFFER DIFFER DIFFER DIFFER
16mpi-2omp --- OK DIFFER OK OK
16mpi-8omp --- DIFFER OK OK
32mpi-1omp --- DIFFER DIFFER
32mpi-2omp --- OK
32mpi-8omp ---

 

Les erreurs apparaissent au 6ème pas de temps de la dynamique, avant l'entrée de la physique, d'abord sur la variable teta. Les erreurs quand ils appariassent sont de l'ordre de 10-17 en relative, c.a.d. dans l'ordre des erreurs de la machine. Sans le physique (avec iflag_phys=0), les résultats sont toujours différentes.

En mode de compilation -dev, les restarts sont identiques pour les mêmes tests que le tableau en haut.

En mode de compilation -debug, seul test effectué 16mpi-1omp est identique au 32mpi-1omp

 

Test de reproductibilités

  • 10 exécutions avec 16mpi, en mode -prod, pur MPI donnent les mêmes restart.
  • 10 exécutions avec 16mpi-1omp, en mode -prod, mixt MPI-OpenMP, donnent les mêmes restart.

Comparaison de l'exécutable pur MPI et hybrid MPI-OpenMP

  • En mode -debug, -dev et -prod, 16mpi pur ne donne pas les mêmes résultats que 16mpi-1omp. Et 32mpi pur ne donne pas les mêmes résultats que 32mpi-1omp MPI-OMP.

Sans la physique, avec iflag_phys=0

en mode -prod, on obtient

  • les mêmes résultats entre 8, 10, 16, 19, 20, 32 proc en pur MPI
  • des résultats différents en mixte mpi-openmp

 

 

Tests effectué sur TITANE / CCRT

- En basse résolution 96x95x39 avec ancienne physique, sans ORCHIDEE

- Compilation ok : mode compilation -prod, -dev et -debug avec mode de parallelisme seq,mpi,omp et mpi_omp (12 executables gcm.e)

- Tests en mode de compilation -dev, avec mode de parallelisme pur MPI, plantent. Mais il avec l'option -fpe0 ca marche(Martial, Arnaud). Tests en cours.

- Les différences de compilation entre les mode -prod, -dev et -debug, se trouve dans les flags :

PROD_FFLAGS= -O3

DEV_FFLAGS=-p -g -O3 -traceback -fpe0 -fp-stack-check -ftrapuv    (version modifié de Martial)

DEBUG_FFLAGS=-p -g -traceback


Mode de parallélisme pur MPI

- Tests en mode de compilation -debug donnent les mêmes résultats entre 1, 4, 8, 16 et 32 proc.

- Les mêmes tests en mode de compilation -prod ne donnent pas les mêmes résultats.

Mode de parallélisme mixt MPI-OpenMP

- Tests en mode de compilation -debug donnent les mêmes résultats indépendant au choix de nombre de MPI et de taches OpenMP. Les tests effectués sont les suivants :

8mpi-2omp, 8mpi-4omp, 8mpi-8omp, 16mpi-1omp, 16mpi-2omp, 16mpi-8omp, 32mpi-1omp, 32mpi-2omp, 32mpi-8omp

- Les mêmes tests en mode de compilation -prod ne donnent pas les mêmes résultats.

Test de reproductibilités

  • 10 exécutions avec 16mpi, en mode -prod et -debug, pur MPI donnent toujours les mêmes restart.
  • 10 exécutions avec 16mpi-1omp, en mode -prod et -debug, mixt MPI-OpenMP : donnent toujours les mêmes restart.

 

Comparaison de l'exécutable pur MPI et hybrid MPI-OpenMP

  • En mode -debug, 16mpi pur donne les mêmes résultats que 16mpi-1omp. Et 32mpi pur est égale a 32mpi-1omp hybrid.
  • En mode -prod, les mêmes tests ne donnent pas les mêmes résultats.

 

Sans la physique, avec iflag_phys=0

  • En mode -debug, on obtient  les mêmes résultats entre 10, 18, 19 et 20 proc en pur MPI
  • En mode -prod, les mêmes tests ne donnent pas les mêmes résultats.

 

Test d'un an, en mode debug

3 simulations sont faites :

1) sur 32 porcessus mpi avec l'executable compile en mode pur MPI

2) sur 8 proc mpi et 4 taches omp, avec l'executable hybride MPI-OMP

3) sur 16 proc mpi et 8 taches omp, avec l'executable hybride MPI-OMP

Au bout d'un an (360jours), les 3 simulations donnent les mêmes restart.nc et restartphy.nc. Les histhf.nc et histday.nc sont aussi pareils mais dans histmth.nc la variable s_therm ne donne pas les mêmes résultat entre les 3 simulations. Cette variable n'existe pas dans histhf.nc et histday.nc


Tests effectué sur MERCURE SX8 / CCRT

- En basse résolution 96x95x39 avec ancienne physique, sans ORCHIDEE

- Compilation avec parallélisme OpenMP ne marche pas. La compilation marche uniquement en mode de parallélisme mpi et seq, avec les mode compilation -prod, -dev et -debug (6 exécutables)

- Tests en mode de compilation -debug, -dev et -prod avec mode de parallelisme pur MPI donnent les mêmes résultats entre 1 proc,  4 proc et 8 proc (sauf le run debug 1p qui plante avec SIGKILL, 4H30 n'est pas sufficant)