Utilisation de MPI

connaître l'environnmeent (sur octopus):

module avail mpi

-------------------- /local/apps/Modules/3.2.6/modulefiles ---------------------
mpi/openmpi144 mpi/sunhpc8    mpi/sunhpc82   mpi/sunhpc821c

Différentes versions

juin 09 Sun HPC ClusterTools 8.2 is based on the Open MPI 1.3.3 release.

module load hpc82

ou

module load sunhpc

mars 06

Sun MPI 7.0 Software Programming and Reference Guide

ajouter /opt/SUNWhpc/bin dans le PATH (ou utiliser plutôt la commande module)

module load hpc

sur nemo, slatp, shrek 1.2.6, 1.2.7p1, 1.2.7.p1 32bits et 64 bits

http://www-unix.mcs.anl.gov/mpi/mpich/

/usr/local/mpich-1.2.6

/usr/local/mpich-1.2.6-new

/usr/local/mpich-1.2.7p1

Tests MPI

avec MPICH 1.2.6 installé dans /usr/local. Penser à mettre à jour le PATH

nemo-henry% setenv PATH /usr/local/mpich-1.2.6/bin:${PATH}

nemo-henry% pwd
/local/henry/tests/MPI/mpi1_tp/tp6/solution
nemo-henry% make
mpirun -np 8 ./CommSplit
Rang :  0 ; Coordonnees : (0,0) ; W = 1.
Rang :  3 ; Coordonnees : (1,1) ; W = 2.
Rang :  1 ; Coordonnees : (0,1) ; W = 1.
Rang :  4 ; Coordonnees : (2,0) ; W = 3.
Rang :  2 ; Coordonnees : (1,0) ; W = 2.
Rang :  6 ; Coordonnees : (3,0) ; W = 4.
Rang :  5 ; Coordonnees : (2,1) ; W = 3.
Rang :  7 ; Coordonnees : (3,1) ; W = 4.

Remarque:

nemo-henry% file /local/henry/tests/MPI/mpi1_tp/tp6/solution/CommSplit
/local/henry/tests/MPI/mpi1_tp/tp6/solution/CommSplit:  ELF 32-bit LSB executable 80386 Version 1 [FPU], dynamically linked, not stripped
  • la configuration de MPICH est dans le fichier /usr/local/mpich-1.2.6/share/machines.solaris86

Tests PETSC

sur octopus, faire:

module load sunhpc petsc3.1_p8_hpc8
  • récupérer l'exemple (fourni par Yann Jobic de l'IUSTI)
  • puis lancer la compilation et l'exécution:
make -f Makefile_petsc3.1 solv_ksp
mpirun -np 2 ./solv_ksp -mat_type mpiaij -pc_type lu -pc_factor_mat_solver_package mumps -nx 1000 -ny 1000 -debug 0
nemo-henry% setenv PATH /opt/SUNWspro/bin:${PATH}                               
nemo-henry% pwd
/local/henry/tests/petsc/test
nemo-henry% cc -KPIC -g -xtarget=opteron -o ex1 ex1.c \
  -R/usr/local/mpich-1.2.6/lib \
  -L/usr/local/mpich-1.2.6/lib \
  -I/usr/local/mpich-1.2.6/include \
  -lmpich \
  -R/local/henry/petsc-2.3.0-debug/lib/solaris-amd64-32 \
  -L/local/henry/petsc-2.3.0-debug/lib/solaris-amd64-32 \
  -I/local/henry/petsc-2.3.0-debug/include \
  -I/local/henry/petsc-2.3.0-debug/bmake/solaris-amd64-32 \
  -lpetscvec -lpetsc \
  -xlic_lib=sunperf

nemo-henry% mpirun -np 4 ex1
Vector length 20
Vector length 20 40 60
All other values should be near zero
VecScale 0
VecCopy  0
VecAXPY 0
VecAYPX 0
VecSwap  0
VecSwap  0
VecWAXPY 0
VecPointwiseMult 0
VecPointwiseDivide 0
VecMAXPY 0 0 0 

Utilisation de (Sun) MPI (HPC6.0)

Sun HPC est une implémentation de MPI 1 et 2 par Sun. Il semble aujourd'hui que Sun se rallie à OpenMPI, en fournissant HPC7.0

Lorsqu'on utilise ces produits, on peut trouver de la documentation et du support communautaire:

         at -m now
         mprun -np <nb-proc> <executable> <parametre executable>
  • on fait : “mpps -Ae” pour vérifier que le job est bien parti
Commande Action
mpps -Ae Liste les process parallèles de toutes les machines parallèles
mpps -Aep Liste les process parallèles de toutes les machines parallèles, mais avec le nom des noeuds utilisés
mpkill cre.xxxx A faire sur le serveur HPC où tourne le job : arrête le programme
mpkill -KILL cre.xxxx id.
mpkill -C jobid Uniquement root peut faire cette commande.

Debugger TotalView

Installé sur nemo, c'est une version beta, expire le 25 juin 06.

Pour le lancer, taper simplement: totalview

La documentation est ici:Etnus