Travail sur le changement de compilateur sur Ada / Curie

Changement de version de compilateur, d'options de compilation, effet sur les perfs

Tests des changements de compilateurs ada et curie sur LMDZ bucket


L'IDRIS recommande l'environnement intel/2016.2
Le TGCC recommande l'environnement fortran/intel/16.0.2.181

Tests à faire

Ada:

Dans le framework de la validation de la testing (lancement d'un bench LMDZ bucket, nouvelle physique,  48x32x19, mode debug, en séquentiel/MPI/OMP/MPI_OMP et comparaison des restart de chaque mode)

  • faire une simul de référence intel/2013.0          fait, RAS
  • faire une simul de référence intel/2016.2          fait, RAS
  • comparer les résultats:   
    Fait: les restarts sont rigoureusement identiques (au sens cmp) entre les différentes simulations faites avec les deux compilos.
    Les restarts (dynamique et physique) issus des simulations ADACOMP01 et ADA2016COMP01, décrites ci-dessous, sont eux aussi rigoureusement identiques (au sens cmp) pour la 1ère année, alors que l'environnement d'exécution est différent.                                  

Curie:

  • faire une simul de référence fortran/intel/14.0.3.174
    le révision 1488 ne donne pas un même startphy en MPI_OMP
  • faire une simul de référence fortran/intel/16.0.2.181
    besoin de faire:
    module unload nco/4.4.8
    module unload netcdf/4.3.3.1_hdf5_parallel
    module unload fortran
    module unload mkl
    module unload idb
    module load mkl/16.0.2.181
    module load fortran/intel/16.0.2.181
    module load c/intel/16.0.2.181
    module load c++/intel/16.0.2.181
    module load netcdf/4.3.3.1_hdf5_parallel
    module load nco/4.4.8
    pour changer de version de fortran
  • comparer les résultats

 

Tests sur les options de compilations à utiliser

Les options à tester:

  • mcmodel= medium
  • -fp-model
  • -openmp-threadprivate compat

 

Travail sur ada:

Lancement d'une série de simulations CLIM de 5 ans LMDZ bucket (96x95x39), NPv5.5  avec les différentes options à tester.
Récupération de LMDZOR_v6: LMDZ r2508, ORCHIDEE r3171, XIOS 1.0
 

Essais avec intel/2013.1

ADACOMP01:
Simulation de référence

  • environnement intel/2013.0
  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all
    %PROD_FFLAGS  -O2 -ip -fp-model strict -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
    2290s  38m

 

ADACOMP02:

  • options de compilation:
    mcmodel=medium
  • temps d'exécution par an:
    real CPU / an
    elapsed / an
    2294s  38m

 

ADACOMP03:

  • options de compilation:
    -fp-model precise, à noter que IOIPSL est déjà compilé en -fp-model precise
  • temps d'exécution par an:
    real CPU / an
    elapsed / an
       

L'exécution en mode prod ne rend jamais la main ....En lançant xios en mode attaché, le modèle va bien à la fin (Everything is cool) mais ne rend pas la main . En prenant les options fast=1 ou 2, on a le même résultat.

 

Essais avec intel/2013.1

 Problème avec la lecture de l'ozone, on prend l'ozone analytique

ADA1COMP01:
Simulation de référence

  • environnement intel/2013.1
  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all -fp-model strict
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
    2600s  43m

ADA1COMP02:

  • options de compilation:
    -mcmodel=medium
  • temps d'exécution par an:
    real CPU / an
    elapsed / an
       

 ADA1COMP03:

  • options de compilation:
    -mcmodel=large -fp-model precise
  • temps d'exécution par an:
    real CPU / an
    elapsed / an
       

ne rend pas la main non plus ...

Essais avec intel/2016.2

Vu les problèmes de "non-retour" des jobs, on passe directement à l'environnement intel/2016.2 pour la compilation et pour l'exécution.

L'intermonitoring

ADA2016COMP01:
Simulation de référence

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all -fp-model strict
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
    2175s  36m

ADA2016COMP02:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model strict
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
    
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     2166s  36m

ADA2016COMP03:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all -fp-model precise
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
    2123s  35m

ADA2016COMP04:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all -fp-model fast=1
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     2018s  33.5m

ADA2016COMP05:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all -fp-model fast=2
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     2015s  33.5m

ADA2016COMP06:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all -fp-model strict -openmp-threadprivate compat
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     2147s  35.5m

ADA2016COMP07:
On prend les options de compilation de curie

  • options de compilation:
    %BASE_FFLAGS  -i4 -r8 -auto -align all -fp-model strict
    %PROD_FFLAGS  -O2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     2158s  36m

ADA2016COMP08:
On teste les options à changer toutes ensemble

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model precise -openmp-threadprivate compat
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     2086s  35m

ADA2016COMP09:
On bascule sur du -O3

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model precise -openmp-threadprivate compat
    %PROD_FFLAGS  -O3 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
       

Le modèle plante dans regr12_conserv

 

...

Comparer les atlas créés

Lancer une deuxième série LMDZOR de 5 ans même résolution mais peut-être pas toutes les options

Travail sur curie:

 

 

Tests de performances

 

Sur  Ada

 

Sur ada, on teste LMDZ testing r2546 en résolution 144x142x79 toujours en bucket avec IOIPSL/XIOS avec l'environnement intel/2016.2

ADA2016COMP12:
simulation de contrôle

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=large -integer-size 32 -real-size 64 -align all -fp-model strict
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     12 885  3h35m

ADA2016COMP13:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model precise -qopenmp-threadprivate compat
    %PROD_FFLAGS  -O2 -ip -axAVX,SSE4.2

plante

ADA2016COMP13A:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model precise
    %PROD_FFLAGS  -O2 -ip  -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     12900  

  

ADA2016COMP14:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model precise -qopenmp-threadprivate compat
    %PROD_FFLAGS  -O2 -ip 
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
       

 

ADA2016COMP15:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model precise
    %PROD_FFLAGS  -O3 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     12300  3h25m

ADA2016COMP16:

  • options de compilation:
    %BASE_FFLAGS  -auto -recursive -mcmodel=medium -integer-size 32 -real-size 64 -align all -fp-model fast=2
    %PROD_FFLAGS  -O3 -ip -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     11700  3h15m

Sur Curie

Sur curie, on teste LMDZ testing r2546 en résolution 144x142x79 toujours en bucket avec IOIPSL/XIOS

Atlas des différences entre les options de compilations

CURCOMP01:
simulation de contrôle

  • compilateur: fortran/intel/14.0.3.174
  • options de compilation:
    %BASE_FFLAGS  -i4 -r8 -auto -align all -I$(MKL_INC_DIR) -I$(MKL_INC_DIR)/intel64/lp64 -fp-model strict
    %PROD_FFLAGS  -O2 
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     13537  3h45m

CURCOMP02:
simulation de contrôle

  • compilateur: fortran/intel/16.0.2.181
  • options de compilation:
    %BASE_FFLAGS  -i4 -r8 -auto -align all -I$(MKL_INC_DIR) -I$(MKL_INC_DIR)/intel64/lp64 -fp-model strict
    %PROD_FFLAGS  -O2 
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     13055  3h37m

CURCOMP03:
simulation de contrôle

  • compilateur: fortran/intel/16.0.2.181
  • options de compilation:
    %BASE_FFLAGS  -i4 -r8 -auto -align all -I$(MKL_INC_DIR) -I$(MKL_INC_DIR)/intel64/lp64 -fp-model fast=2
    %PROD_FFLAGS  -O3 -axAVX,SSE4.2
  • temps d'exécution par an:
     
  • real CPU / an
    elapsed / an
     12153  3h22m