Présentation
EnglishNOTE DE L'ÉDITEUR
Cet article est la version actualisée de l’article [H 1 088] intitulé Introduction au parallélisme et aux architectures parallèles, de Franck CAPPELLO et Jean-Paul SANSONNET, paru dans nos éditions en 1999.
RÉSUMÉ
Le parallélisme est dorénavant utilisé dans la majorité des architectures, des systèmes embarqués aux superordinateurs. Les monoprocesseurs sont remplacés par des processeurs multicœurs. Cet article décrit la notion de parallélisme et ses différents types. Il présente les grandes classes d’architectures parallèles avec leurs ressources et organisations mémoire, en distinguant les architectures homogènes et hétérogènes. Les principes des techniques de programmation sont introduits avec les extensions parallèles des langages de programmation couramment utilisés et les modèles de programmation visant à rapprocher la programmation parallèle de la programmation séquentielle, en incluant les spécificités des architectures. Enfin, les modèles et métriques d’évaluation des performances sont examinés.
Lire cet article issu d'une ressource documentaire complète, actualisée et validée par des comités scientifiques.
Lire l’articleAuteur(s)
-
Franck CAPPELLO : Docteur en Informatique de l’université Paris Sud - IEEE Fellow
-
Daniel ETIEMBLE : Ingénieur de l’INSA de Lyon - Professeur émérite à l’université Paris Sud - Note de l'éditeur : Cet article est la version actualisée de l'article [H 1 088] intitulé Introduction au parallélisme et aux architectures parallèles, de Franck CAPPELLO et Jean-Paul SANSONNET, paru dans nos éditions en 1999.
INTRODUCTION
La notion de parallélisme, qui consiste à utiliser plusieurs processeurs ou opérateurs matériels pour exécuter un ou plusieurs programmes, est ancienne. Les multiprocesseurs datent des années 1960. De cette période jusqu’à la fin des années 1990, des architectures parallèles ont été utilisées pour les applications nécessitant des besoins de calcul que les monoprocesseurs étaient incapables de fournir. Étaient concernés les mainframes et serveurs d’une part, et les machines vectorielles puis parallèles utilisées pour le calcul scientifique hautes performances d’autre part. Les années 1980 ont vu l’apparition de différentes sociétés proposant des machines parallèles, sociétés qui ont assez rapidement disparu. La raison essentielle est liée aux progressions exponentielles des performances des microprocesseurs, utilisés dans les PC et les serveurs multiprocesseurs. L’utilisation massive du parallélisme se limitait aux très grandes applications de simulation numérique avec les architectures massivement parallèles. Le début des années 2000, avec les limitations des monoprocesseurs et le « mur de la chaleur », a complètement changé la situation (voir [H 1 058]). Les processeurs multicœurs sont présents en 2016 dans les architectures matérielles pour tous les types de composants : appareils mobiles (smartphones, tablettes), systèmes embarqués, télévisions, PC portables et PC de bureau, et jusqu’aux machines parallèles et superordinateurs pour la très haute performance.
Dans cet article, nous introduisons la notion de parallélisme, présentons les différents types de parallélisme et les différentes formes d’architectures parallèles. Alors que la programmation des machines parallèles a été longtemps réservée à des spécialistes, tout programmeur doit maintenant maîtriser les notions essentielles de la programmation parallèle pour tirer parti des possibilités des architectures. Nous présentons les extensions parallèles des langages de programmation couramment utilisés, les modèles de programmation développés qui visent à « rapprocher » la programmation parallèle des techniques de la programmation séquentielle tout en prenant en compte les spécificités des architectures parallèles. Enfin, l’intérêt des architectures parallèles réside dans les performances qu’elles permettent d’atteindre. Pour optimiser ces performances et/ou réduire la consommation énergétique, il est nécessaire de modéliser d’une part le parallélisme existant dans une application et d’autre part les architectures parallèles. Nous examinons donc les métriques utilisées pour évaluer ou prévoir les performances et les grandes lois qui les gouvernent.
MOTS-CLÉS
parallélisme de données et de contrôle extensions SIMD classification de Flynn mémoires partagées et distribuées modèles d'exécution modèles de programmation OpenMP MPI pThreads loi d’Amdhal modèle Roofline
VERSIONS
- Version archivée 1 de août 1999 par Franck CAPPELLO, Jean-Paul SANSONNET
DOI (Digital Object Identifier)
CET ARTICLE SE TROUVE ÉGALEMENT DANS :
Accueil > Ressources documentaires > Sciences fondamentales > Mathématiques > Méthodes numériques > Introduction au parallélisme et aux architectures parallèles > Remarques pour conclure
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Présentation
10. Remarques pour conclure
Le mur de la chaleur a complètement modifié le panorama des architectures matérielles et de la programmation. Avec les monoprocesseurs, les architectures parallèles se limitaient aux serveurs et aux machines parallèles massivement parallèles. Les processeurs devenant multicœurs puis many-core, les architectures parallèles sont devenues majoritaires et sont présentes dans l’ensemble du spectre : smartphones, tablettes, PC, systèmes embarqués, serveurs, super-ordinateurs. Seuls les systèmes embarqués bas de gamme nécessitant peu de puissance de calcul ou à très faible consommation continuent d’utiliser des monoprocesseurs.
Le problème essentiel est au niveau de la programmation. En 2010, David Patterson publiait un article dans IEEE Spectrum au titre évocateur : « Le problème avec les multicœurs : les fabricants de circuits conçoivent des microprocesseurs que la plupart des programmeurs ne peuvent utiliser ». Les modèles de programmation bas niveau (OpenMP, MPI, pthreads) sont matures, mais nécessitent de bonnes connaissances de la programmation parallèle. Différents modèles de programmation de plus haut niveau existent avec leurs avantages et leurs inconvénients. La possibilité de tirer parti de toutes les possibilités des architectures matérielles parallèles dépend d’un certain nombre de facteurs parmi lesquels :
-
l'amélioration des modèles de programmation existants pour « paralléliser » les vieux programmes conçus pour les machines séquentielles ;
-
l'amélioration de la formation des programmeurs pour qu’ils pensent « parallèle » lorsqu’ils développent une nouvelle application.
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive
Remarques pour conclure
BIBLIOGRAPHIE
-
(1) - KOBAYASHI (H.) - Feasibility Study of a Future HPC System for Memory-Intensive Applications : Final Report. - Proceedings of the joint Workshop on Sustained Simulation Performance, University of Stuttgart (HLRS) and Tohoku University, pp 3-16 (2014).
-
(2) - KOBAYASHI (H.) - Feasibility Study of a Future HPC System for Memory-Intensive Applications : Final Report. - in SuperComputing, NEC Booth, http://jpn.nec.com/hpc/info/pdf/SC13_NEC_Tohoku_Prof.Kobayashi.pdf (2013).
-
(3) - BERNSTEIN (A.J.) - Analysis of Programs for Parallel Processing. - IEEE Transactions on Electronic Computers. EC-15 (5) : 757-763 (October 1966).
-
(4) - * - Intel® 64 and IA-32 Architectures Software Developer Manuals, http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html.
-
(5) - * - ARM Synchronization Primitives, http://infocenter.arm.com/help/topic/com.arm.doc.dht0008a/DHT0008A_arm_synchronization_primitives.pdf.
-
...
DANS NOS BASES DOCUMENTAIRES
ANNEXES
Cet article fait partie de l’offre
Technologies logicielles Architectures des systèmes
(240 articles en ce moment)
Cette offre vous donne accès à :
Une base complète d’articles
Actualisée et enrichie d’articles validés par nos comités scientifiques
Des services
Un ensemble d'outils exclusifs en complément des ressources
Un Parcours Pratique
Opérationnel et didactique, pour garantir l'acquisition des compétences transverses
Doc & Quiz
Des articles interactifs avec des quiz, pour une lecture constructive