- OpenMP = Open Multi-Processing
- Open MPI = Open Message Passing Interface
- MPICH = Message Passing Interface over CHameleon
Les trois fonctionnent avec C/C++ et Fortran et sont supportés par gcc et les principaux compilateurs. Leur but commun est de permettre le développement de programmes parallèles.
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhphCteG2AbHokWgaJd4_V4_5cAhfN2U0JOnNw_oYj29bUqaHT0njfL97SQDq80gWBcSxUoSny5h_CEMOEz9FarbVnqtaJQ7YjR7wHK5VCcpSufT8yFhYDXbfOHfflHwBoYGjtqNrq8DO0U/s320/openmp-logo.gif)
OpenMP est principalement implémenté au travers d’extensions du compilateur C/C++ ou Fortran. Des directives sont données au compilateur au travers de #pragma (ou de !$ pour Fortran) afin qu’il génère des blocs de code s’exécutant en parallèle sur des architectures multiprocesseurs à mémoire partagée. Typiquement une machine Linux ou Windows avec un i5 ou i7 ou un Raspberry Pi avec un ARM7 ou ARM8.
L'avantage de OpenMP est d’être très peu intrusif et de rendre la parallélisation d'un programme plus naturelle. Pour apprendre OpenMP la chaine OpenMP sur YouTube est excellente!
![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_BkiPs1O3zc-l6X0gkzBMkxI4-bpdXgquLAFOZ7CbdVT9ms7VCV6vgfkA8ZT-m5uUR5MD1byluQA0r6F5eHP-xnVkLbA4mPGij660-n2hu4TYI7wGUmA5HKCkLOt-ZWneYdrN_LDRpsyZ/s320/mpi-logo.png)
Open MPI et MPICH sont deux implémentations du standard MPI (Message Passing Interface). Leur but est de produire un programme qui s’exécute en parallèle sur les ordinateurs d’un réseau. Le partage de donnée ne se fait pas via la mémoire comme avec OpenMP mais via le réseau. C’est plus lent mais plus extensible et c'est le seul moyen de faire travailler des centaines ou milliers de processeurs ensemble. Les performances et la fiabilité du réseau sont donc critiques dans les applications MPI mais
Les principaux supports de Open MPI sont Cisco, Intel, Nvidia et les principaux supports de MPICH sont Cray, IBM, Intel, Microsoft. Fin 2015 MPICH est utilisé sur 9 des 10 plus puissants ordinateurs du monde.
Tout un écosystème d’applications gravite autour de MPI. Les programmes s’exécutant sur des clusters d’ordinateurs il faut des logiciels pour administrer/superviser le cluster.
Tout langage qui peut s'interfacer avec une librairie C peut utiliser MPI : Python, Perl ...
TRÈS IMPORTANT : Rien n’empêche d’utiliser OpenMP en même temps que OpenMPI ou MPICH. Par contre on n’utilise jamais ensemble OpenMPI et MPICH.
Aucun commentaire:
Enregistrer un commentaire