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.
Il faut installer les librairies:
libmumps-x.xx.x
. Il est possible aussi de recompiler les libs mumps des autres versions (voir MUMPS).
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]: [r]:
[a]: apps/ale/coining3DMUMPS.py [a]: apps/ale/striction3DMUMPS.py [a]: apps/parallel/largeTubeMumpsTbbBlas4.py [a]: apps/parallel/largeTubeMumpsTbbBlasMPI.py [r]:
— Lilia ZIANE KHODJA 2015/07/15