Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2015:07_15

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
commit:2015:07_15 [2015/07/16 09:59] zianecommit:2015:07_15 [2016/03/30 15:23] (current) – external edit 127.0.0.1
Line 1: Line 1:
-====== Commit 2015-07-16 ======+====== 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]]). 
 + 
 +<note important>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.</note> 
 + 
 +===== 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: 
 +<code>mpirun -np N ../MetaBin/bin/Metafor -nogui -run ./mesTests/monTest.py</code> 
 +où N définit le nombre de processus. 
 + 
 +<note important>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.</note> 
  
-===== Activation/désactivation de MPI ===== 
-METAFOR_USE_MPI est forcé à OFF (les librairies nécessaires pour la compilation avec MPI) dans tous les fichiers de configuration .cmake.  
-<code>OPTION(METAFOR_USE_MPI "Use Open Message Passing Interface" OFF)</code> 
  
 ===== Fichiers/Dossiers ajoutés/supprimés ====== ===== Fichiers/Dossiers ajoutés/supprimés ======
Line 11: Line 38:
 [r]: [r]:
 </code> </code>
 +
  
 ===== Tests ajoutés/supprimés ===== ===== Tests ajoutés/supprimés =====
  
 <code> <code>
-[a]: +[a]: apps/ale/coining3DMUMPS.py 
 +[a]: apps/ale/striction3DMUMPS.py 
 +[a]: apps/parallel/largeTubeMumpsTbbBlas4.py 
 +[a]: apps/parallel/largeTubeMumpsTbbBlasMPI.py
 [r]: [r]:
 </code> </code>
  
- --- //[[l.zianekhodja@ulg.ac.be|Lilia ZIANE KHODJA]] 2015/07/16//+ --- //[[l.zianekhodja@ulg.ac.be|Lilia ZIANE KHODJA]] 2015/07/15//
commit/2015/07_15.1437033586.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki