Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:07_15

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: OpenMPI et 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 MUMPS).
  • MPI: par exemple celles de Open MPI openmpi-bin et libopenmpi-dev (ou recompiler).
  • MPI pour Python: python-mpi4py et puis exécuter pip install mpi4py (ou 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]:

Lilia ZIANE KHODJA 2015/07/15

commit/2015/07_15.txt · Last modified: 2016/03/30 15:23 (external edit)