MPI (Message Passing Interface) est le seul moyen d'utiliser plus d'un nœud de calcul.
Deux implantations de MPI sont disponibles sur le cluster :
LamMPI-7.0 /usr/local/lam-mpi.
MPICH-1.2.5
/usr/local/mpich-1.2.5.
Deux installations ont été
construites se basant sur les compilateurs
Intel
(/usr/local/mpich-intel/) et Gnu
(/usr/local/mpich-gcc/).
La
parallélisation à l'aide de MPI nécessite une
légère réécriture du code.
Par
exemple, le modèle de programmation peut être du type
SPMD,
les processus exécutent le même programme
mais travaillent sur des données différentes.
Le
programme fortran 77 test.f a été modifié :
test_mpi.f
Il fait appel à quatre sous-programmes ddot.f,
dgemv.f,
xerbla.f
et lsame.f
et utilise un fichier de données test.dat.
Ce programme ouvre le fichier de données, effectue
quelques opérations et crée un fichier
(test.out)
contenant les impressions.
Utilisation de MPICH (version Intel) :
Compilation
:
/usr/local/mpich-intel/bin/mpif77
test_mpi.f ddot.f dgemv.f lsame.f xerbla.f -o test_mpi
Script-shell
minimal permettant d'exécuter ce job sur 2 nœuds
(en
utilisant les deux processeurs du nœud) :
Cas
d'un code faisant peu d'I/O, utilisation du /home
sur le frontal :
run_test_mpi_intel_home.sh
Cas
d'un code faisant beaucoup d'I/O, utilisation du /scratch
sur les nœuds :
run_test_mpi_scratch.sh.
Vérification
de la bonne exécution du code :
[cros@gmfe3
Essai]$ more test.out
début petit programme
données
lues : 10
produit scalaire final 1800.00000000000
produit
scalaire final 1620000.00000000
fin petit
programme
[cros@gmfe3 Essai]$ more
test.out2
Processus 0 sur 4 est actif
début petit
programme
Processus 2 sur 4 est actif
Processus 1 sur 4 est
actif
Processus 3 sur 4 est actif
début petit
programme
début petit programme
début petit
programme
fin petit programme
fin petit programme
fin
petit programme
fin petit programme
Page maintenue par Jean-Michel CROS (enseignant-chercheur).