38,760
edits
(Created page with "Pour paralléliser un programme avec pthreads ou toute autre technique, il importe de considérer la capacité du programme à s'exécuter en parallèle, ce que nous appellero...") |
(Updating to match new version of source page) |
||
Line 1: | Line 1: | ||
<languages/> | <languages/> | ||
<div class="mw-translate-fuzzy"> | |||
=Introduction= | =Introduction= | ||
Le terme ''pthreads'' provient de [https://fr.wikipedia.org/wiki/Threads_POSIX POSIX threads], l'une des premières techniques de parallélisation. Tout comme [[OpenMP]], pthreads s'emploie dans un contexte de mémoire partagée et donc habituellement sur un seul nœud où le nombre de fils d'exécution actifs est limité aux cœurs CPU disponibles. On utilise pthreads dans plusieurs langages de programmation, mais surtout en C. En Fortran, la parallélisation de fils d'exécution se fait préférablement avec OpenMP alors qu'en C++, les outils de la bibliothèque [http://www.boost.org Boost] sont mieux adaptés. | Le terme ''pthreads'' provient de [https://fr.wikipedia.org/wiki/Threads_POSIX POSIX threads], l'une des premières techniques de parallélisation. Tout comme [[OpenMP]], pthreads s'emploie dans un contexte de mémoire partagée et donc habituellement sur un seul nœud où le nombre de fils d'exécution actifs est limité aux cœurs CPU disponibles. On utilise pthreads dans plusieurs langages de programmation, mais surtout en C. En Fortran, la parallélisation de fils d'exécution se fait préférablement avec OpenMP alors qu'en C++, les outils de la bibliothèque [http://www.boost.org Boost] sont mieux adaptés. | ||
</div> | |||
La bibliothèque pthreads a servi de base aux approches de parallélisation qui ont suivi, dont OpenMP. On peut voir pthreads comme étant un ensemble d'outils primitifs offrant des fonctionnalités élémentaires de parallélisation, contrairement aux APIs conviviales et de haut niveau comme OpenMP. Dans le modèle pthreads, les fils sont générés dynamiquement pour exécuter des sous-procédures dites légères qui exécutent les opérations de façon asynchrone; ces fils sont ensuite détruits après avoir réintégré le processus principal. Puisque tous les fils d'un même programme résident dans le même espace mémoire, il est facile de partager les données à l'aide de variables globales, contrairement à une approche distribuée comme [[MPI]]; toute modification aux données partagées risque cependant de créer des [https://en.wikipedia.org/wiki/Race_condition situations de compétition] (''race conditions''). | La bibliothèque pthreads a servi de base aux approches de parallélisation qui ont suivi, dont OpenMP. On peut voir pthreads comme étant un ensemble d'outils primitifs offrant des fonctionnalités élémentaires de parallélisation, contrairement aux APIs conviviales et de haut niveau comme OpenMP. Dans le modèle pthreads, les fils sont générés dynamiquement pour exécuter des sous-procédures dites légères qui exécutent les opérations de façon asynchrone; ces fils sont ensuite détruits après avoir réintégré le processus principal. Puisque tous les fils d'un même programme résident dans le même espace mémoire, il est facile de partager les données à l'aide de variables globales, contrairement à une approche distribuée comme [[MPI]]; toute modification aux données partagées risque cependant de créer des [https://en.wikipedia.org/wiki/Race_condition situations de compétition] (''race conditions''). |