Modèles de programmation parallèle
Les modèles de programmation parallèle sont les abstractions par lesquelles les programmeurs expriment et coordonnent les calculs sur de nombreux processeurs afin d'obtenir un gain de vitesse.
Definition
Un modèle de programmation parallèle est une abstraction d'un ordinateur parallèle qui définit comment le calcul est décomposé en tâches concurrentes, comment ces tâches communiquent et se synchronisent, et comment les données sont partagées ou distribuées entre les processeurs, permettant de résoudre un problème plus rapidement en utilisant plusieurs unités de traitement.
Scope
Ce domaine couvre les principaux modèles de programmation parallèle — mémoire partagée et parallélisme de données (threads, OpenMP), passage de messages (MPI) et programmation d'accélérateurs/GPU (CUDA, OpenCL) — ainsi que la taxonomie de Flynn des architectures parallèles, la conception d'algorithmes parallèles, et les lois de performance (d'Amdahl et de Gustafson) et les métriques (accélération, efficacité, scalabilité) qui délimitent et mesurent leur bénéfice. Il constitue le complément de l'informatique parallèle au volet des systèmes distribués de ce sous-domaine.
Sub-topics
Core questions
- Comment un calcul doit-il être décomposé en tâches et mappé sur des processeurs ?
- Quel modèle de programmation — mémoire partagée, passage de messages ou accélérateur — convient à une architecture et un problème donnés ?
- Qu'est-ce qui limite l'accélération réalisable par le parallélisme, et comment la scalabilité est-elle mesurée ?
Key theories
- Taxonomie de Flynn
- Les architectures parallèles sont classées selon leurs flux d'instructions et de données en SISD, SIMD, MISD et MIMD, un cadre qui organise toujours la réflexion sur les machines vectorielles, GPU et multicœurs.
- Lois d'Amdahl et de Gustafson
- La loi d'Amdahl borne l'accélération par la fraction séquentielle du programme pour une taille de problème fixe, tandis que la reformulation de Gustafson note que des problèmes plus importants peuvent maintenir davantage de processeurs utilement occupés, encadrant ainsi les limites et les promesses du parallélisme.
- Patrons de conception parallèle
- Des stratégies récurrentes — décomposition des tâches et des données, pipelines, décomposition géométrique et maître-travailleur — fournissent un vocabulaire structuré pour la conception de programmes parallèles à travers différents modèles.
Clinical relevance
Les modèles de programmation parallèle constituent la base du calcul haute performance et scientifique, de l'entraînement de l'apprentissage automatique sur les GPU, et de l'exploitation quotidienne des processeurs multicœurs ; le choix du modèle détermine les performances réalisables et la portabilité sur différents matériels.
History
La taxonomie de Flynn de 1972 et l'argument d'accélération d'Amdahl de 1967 ont encadré l'informatique parallèle dès ses débuts ; des modèles standardisés ont émergé avec MPI et OpenMP dans les années 1990 et le calcul sur GPU dans les années 2000, tandis que des ouvrages tels que celui de Grama et ses collègues ont codifié la conception et l'analyse des algorithmes parallèles.
Debates
- Mémoire partagée versus passage de messages comme modèle par défaut
- Les modèles à mémoire partagée sont plus faciles à programmer mais s'adaptent moins facilement et risquent des courses de données subtiles, tandis que le passage de messages s'adapte aux grands clusters au prix d'une communication explicite ; les modèles hybrides combinent les deux, et le bon modèle par défaut reste dépendant de la charge de travail et de l'architecture.
Key figures
- Gene Amdahl
- Michael Flynn
- Vipin Kumar
- John Gustafson
Related topics
Seminal works
- grama2003
- amdahl1967
- flynn1972
Frequently asked questions
- Pourquoi l'ajout de processeurs supplémentaires ne peut-il pas rendre n'importe quel programme arbitrairement rapide ?
- La loi d'Amdahl montre que la partie séquentielle d'un calcul — le travail qui ne peut pas être parallélisé — borne l'accélération totale. Si même une petite fraction est intrinsèquement séquentielle, elle devient prédominante à mesure que le nombre de processeurs augmente, plafonnant l'accélération réalisable.