====== Commit 2015-07-15 ======
===== MUMPS parallèle avec MPI =====
J'ai effectué des modifications sur le solveur direct ''MUMPSolver'' pour qu'il puisse réaliser des calculs parallèles avec des routines MPI.
MPI (Message Passing Interface) est une bibliothèque standard qui fournit des routines de communication qui peuvent être utilisées depuis un programme écrit en C/C++, Fortran, Java, OCaml ou Python. MPI permet de développer des applications HPC en exploitant des ordinateurs distants ou multiprocesseurs par passage de messages. Il permet d'obtenir de bonnes performances aussi bien sur des machines massivement parallèles à mémoire partagée que sur des clusters d'ordinateurs hétérogènes à mémoire distribuée.
Liens vers deux bibliothèques MPI: [[http://www.open-mpi.org/|OpenMPI]] et [[https://www.mpich.org/|MPICH]]
===== Librairies à installer sous les machines Linux =====
Il faut installer les librairies:
* statiques de MUMPS parallèle: ''libmumps-x.xx.x''. Il est possible aussi de recompiler les libs mumps des autres versions (voir [[http://mumps.enseeiht.fr/index.php?page=home|MUMPS]]).
* MPI: par exemple celles de Open MPI ''openmpi-bin'' et ''libopenmpi-dev'' (ou [[http://www.open-mpi.org/software/ompi/v1.8/|recompiler]]).
* MPI pour Python: ''python-mpi4py'' et puis exécuter ''pip install mpi4py'' (ou [[http://mpi4py.scipy.org/docs/usrman/install.html|recompiler]]).
Pour l'instatnt, MUMPS utilisant MPI dans Metafor ne fonctionne que sur les machines Linux. Pour une utilisation sous Windows, il faut recompiler toutes les libs version Windows citées ci-dessus.
===== Exécution d'un cas test avec MPI =====
Il faut d'abord configurer et recompiler Metafor avec l'option ''METAFOR_USE_MPI'' mise à ON dans le fichier de configuration .cmake (par exemple ubuntu.cmake). Cela permettra, entre autres, à Metafor d'utiliser le solveur MUMPS version MPI.
Puis, il faut ajouter la ligne ''from mpi4py import MPI'' dans chaque cas test utilisant MPI. Ceci permet d'initialiser (vs. clore) automatiquement l'environnement MPI sans passer par les routines MPI pour C/C++.
La commande d'exécution en ligne d'un cas test parallèle utilisant MPI, par exemple le solveur MUMPS avec MPI:
mpirun -np N ../MetaBin/bin/Metafor -nogui -run ./mesTests/monTest.py
où N définit le nombre de processus.
A l'heure actuelle, tous les processus MPI exécutent indépendamment le même code de Metafor et ne parallélisent que la partie solveur MUMPS. Ceci est dû au fait que le code Metafor est séquentiel.
===== Fichiers/Dossiers ajoutés/supprimés ======
[a]:
[r]:
===== Tests ajoutés/supprimés =====
[a]: apps/ale/coining3DMUMPS.py
[a]: apps/ale/striction3DMUMPS.py
[a]: apps/parallel/largeTubeMumpsTbbBlas4.py
[a]: apps/parallel/largeTubeMumpsTbbBlasMPI.py
[r]:
--- //[[l.zianekhodja@ulg.ac.be|Lilia ZIANE KHODJA]] 2015/07/15//