Differences between revisions 3 and 4
Revision 3 as of 2013-06-04 11:53:56
Size: 6733
Editor: localhost
Comment: converted to 1.6 markup
Revision 4 as of 2013-10-31 10:56:50
Size: 6734
Editor: GaelleTanguy
Comment:
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
== Quelles version installer == == Quelles versions installer ==


  • Premier pas sur CURIE .



Ou installer MESONH


  • => il faut faire l'installation dans le $WORKDIR car comme d'habitude il n'y a pas assez

    • de place dans le $HOME .


Quelles versions installer


  • => Vous pouvez commencer par installer soit la version MNH-484 standard ...

    • soit pour les courageux, genre Valérie qui a surement besoin de la dernière, la version MNH-490 .

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

soit utiliser CVS :

  • => a cause des problèmes de par-feu seule la machine

    • "mesonh2.aero.obs-mip.fr" est visible , il faut donc changer le fichier ~/.ssh/config
    • et mettre "mesonh2" au lieu de "mesonh" :

> 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

  • => ensuite comme d'ahb

[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

  • "-switch fe_inline_all_arg_copy_inout"
  • dans le fichier Rules.LXifort.mk , soit sur la première ligne :

> OPT_BASE   =  -r8 -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback  -fp-model precise  -switch fe_inline_all_arg_copy_inout
  • REM : pour la 490 déjà fait dans la version standard .

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

  • donc le VER_MPI=MPIAUTO marche bien ( wrapper compilateur mpif90 utilisé )

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 :

  • => moi j'empile toujours un shell "bash" avant charger l’environnement MESONH => ca me permet de changer de version de MESONH sans me délogger/relogger

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 .

  • en essayant de "coller" ou au contraire "decoller" les processus MPI sur les coeurs Physique des noeuds .

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

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

  • => pour voir les options possible

  • mpirun --help
    • certaines options
    • .. vont plutot avantage le calcul
    • .. d'autre les communication entre processeur voisin
    • .. d'autres les communications entre processeurs distant ...

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-54: MesonhTEAMFAQ/TGCC (last edited 2013-10-31 10:56:50 by GaelleTanguy)