Ou installer MESONH



Quelles version installer


Vous pouvez , soit récupérer les fichiers tar ici : http://mesonh.aero.obs-mip.fr/teamwiki/MesonhTEAMFAQ/Download

soit utiliser CVS :

> Host mesonh_anoncvs_www
>    User anoncvs
>    Hostname mesonh2.aero.obs-mip.fr
>    IdentityFile ~/.ssh/anoncvs.key
>    ForwardAgent no
>    ForwardX11 no
>    Compression yes

=> L'extraction CVS prend moins de 3 minutes :

[escobarj@curie51 DEV]$ time cvs co -r PACK-MNH-V4-8-4 -d MNH-V4-8-4 MNH-VX-Y-Z
...
 cvs checkout: Updating MNH-V4-8-4/tools

 real    2m26.186s
 user    0m11.840s
 sys     0m24.870s

Pour la 484, comme "curie" n'existait pas au moment de la création de la version il faut un peux aider le "./configure" .

donc typiquement , faire :

cd MNH-V4-8-4/src
export ARCH=LXifort
export VER_MPI=MPIAUTO
export OPTLEVEL=O2

REM : pour la 490 , curie est reconnu automatiquement et on a le même résultat

[escobarj@curie51 src]$ ./configure
...
 création du fichier -->  ../conf/profile_mesonh-LXifort-MNH-V4-8-4-MPIAUTO-O2

=> Le compilateur ifort/12.XXX de CURIE étant bugger , comme d'hab , il faut rajouter une option , pour bypasser ce bug

> OPT_BASE   =  -r8 -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback  -fp-model precise  -switch fe_inline_all_arg_copy_inout

=> La version de MPI de CURIE = bullxmpi/1.1.14.1 est une version dérivé de OPEN-MPI

Ensuite pour compiler, il faut le faire en interactif , c'est le plus simple, donc comme d'hab sur PC-Linux ou cluster :

bash   
. ../conf/profile_mesonh-LXifort-MNH-V4-8-4-MPIAUTO-O2
make -j8
make installmaster

REM :

Sur 8 cores La compilation prends aux environs de 20 minutes ...

 ....
 rm /ccc/scratch/cont005/pa0304/escobarj/DEV/MNH-V4-8-4/src/dir_obj-LXifort-MNH-V4-8-4-MPIAUTO-O2/MASTER/lib-LXifort-MNH-V4-8-4-MPIAUTO-O2-MASTER.a
 make[1]: Leaving directory `/ccc/scratch/cont005/pa0304/escobarj/DEV/MNH-V4-8-4/src'

 real    18m43.973s
 user    59m47.370s
 sys     12m15.080s


Premier Cas test


Ensuite vous pouvez lancer les cas tests idéalisés ...

export MONORUN="mpirun -np 1"
export MPIRUN="mpirun -np 4"
make 002_3Drelief
make 003_KW78

Pour les cas utilisant le PGD ou le PREP_REAL_CASE, comme il y a besoin des fichiers de surface , il faut soit pointer sur les miens, qui sont dans mon $WORKDIR si l’accès vous est permis :

cd ~
ln -s /ccc/work/cont005/pa0304/escobarj/PREP_PGD_FILES_WWW PREP_PGD_FILES_WWW

soit les récupérer sur le WEB , mais a cause du pare-feu CURIE seule la machine "mesonh2.aero.obs-mip.fr" est accessible ...

Donc avant de lancer le cas test 004_Reunion , modifier le fichier "get_pgd_files" ... ... un peu de "cvs" ...

> [escobarj@curie51 MNH-V4-8-4]$ cvs diff MY_RUN/KTEST/004_Reunion/001_prep_pgd//get_pgd_files
> Index: MY_RUN/KTEST/004_Reunion/001_prep_pgd//get_pgd_files
> ===================================================================
> RCS file: /home/cvsroot/MNH-VX-Y-Z/MY_RUN/KTEST/004_Reunion/001_prep_pgd/get_pgd_files,v
> retrieving revision 1.2.2.3
> diff -r1.2.2.3 get_pgd_files
> 15c15
> < PGD_URL="http://mesonh.aero.obs-mip.fr/mesonh/dir_interne/dir_LINUX/dir_PGDFILES"
> ---
> > PGD_URL="http://mesonh2.aero.obs-mip.fr/mesonh/dir_interne/dir_LINUX/dir_PGDFILES"

Pour des infos générales sur CURIE , batch & stokage , vous pouvez taper la commande :

 curie.info


Tunnig BULLX/OPEN-MPI , bindinf & CO


=> Une fois que vous avez tout qui tourne bien rond par défaut !!!

Vous pouvez espérer gagner 10 a 20% en tunant bien MPI .

Ce sont les options '-bind-to-*' et '-by*' de mpirun ...

Le problème c'est qu'il y a plein de combinaison possible ...

Donc suivant le type de noeud large/fin ou votre namelist mesonh le nombre de processeurs ce n'est pas forcément les même options qui vont donner les meilleurs résultats ...

d'abord pour vérifier que le "bind" marche reellement ( ce n'etait pas le cas au debug sur les noeuds fins ) mettre :

mpirun -report-bindings ...

Ensuite d'après mes tests préliminaires ( sur notre cluster Nuwa )

les combinaisons qui peuvent apporte un plus :

mpirun -report-bindings -bycore -bind-to-socket ...

ou

mpirun -report-bindings -bysocket -bind-to-core ...

ou

mpirun -report-bindings -bysocket -bind-to-socket ...

Il me semble que si l'on ne met rien actuellement c'est l’équivalent de :

mpirun -bycore -bind-to-core

Ensuite on peux aussi , augmenter ( /!\ a la consommation mémoire ) les buffers par défaut soit comme indique dans le dernier mail a Thierry en mettant le send/recv/eager buffer a 1MB

export MB=${MB:-1000000} export MPIRUN="mpirun -mca btl_openib_eager_limit $MB -mca btl_openib_max_send_size $MB -mca btl_openib_receive_queues P,$MB,4 -bysocket -bind-to-socket

La taille de 1MB étant a priori la taille des halo de 1 ou 2 points échangé entre les processeurs ... ... donc parametre a tuner en fonction du nombre de processeurs et de la taille de la grille

Donc a tester a votre sauce ...

Mesonh-49: MesonhTEAMFAQ/TGCC (last edited 2013-06-04 11:53:56 by localhost)