Programmation des architectures parallèles
Introduction au parallélisme et aux architectures parallèles
H1088 v2 Article de référence

Programmation des architectures parallèles
Introduction au parallélisme et aux architectures parallèles

Auteur(s) : Franck CAPPELLO, Daniel ETIEMBLE

Date de publication : 10 août 2017 | Read in English

Logo Techniques de l'Ingenieur Cet article est réservé aux abonnés
Pour explorer cet article plus en profondeur Consulter l'extrait gratuit

Déjà abonné ?

Présentation

1 - Motivations pour le parallélisme

2 - Qu’est-ce que le parallélisme ?

3 - Sources du parallélisme et opérations fondamentales

4 - Parallélisme dans les monoprocesseurs

5 - Classification des architectures parallèles

6 - Ressources des architectures parallèles

7 - Modèles d’exécution

8 - Programmation des architectures parallèles

9 - Lois et métriques de performances des architectures parallèles

10 - Remarques pour conclure

11 - Glossaire

Sommaire

Présentation

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.

05/08/2017

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’article

Auteur(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.

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 95 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


VERSIONS

Il existe d'autres versions de cet article :

DOI (Digital Object Identifier)

https://doi.org/10.51257/a-v2-h1088

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

8. Programmation des architectures parallèles

L’exécution parallèle de plusieurs programmes suppose leur génération par un compilateur ou leur écriture par un programmeur. Idéalement, le programmeur ne devrait pas se soucier du parallélisme et laisser à un compilateur le soin de paralléliser automatiquement son programme. Cela est particulièrement vrai si l’on désire exécuter sur une machine parallèle des programmes écrits pour des machines séquentielles. Cependant, la parallélisation automatique se heurte au problème difficile de l’extraction du parallélisme. Un autre problème, plus profond encore, provient du fait qu’il s’agit de paralléliser des programmes issus d’algorithmes pour lesquels aucun effort d’exploitation du parallélisme n’a été fait. Les algorithmes utilisés peuvent même être intrinsèquement séquentiels. Si ces programmes n’ont pas été pensés « parallèles », on comprend qu’il soit difficile d’atteindre un très haut degré de parallélisme avec cette approche. Ces constats sont à la base du développement et du maintien de modèles de programmation parallèles qui impliquent que le programmeur exprime le parallélisme de l’application. Il existe un large choix de modèles de programmation parallèle. En pratique, la sélection d’un modèle de programmation est faite à partir de plusieurs critères dont voici les principaux :

  • le type de parallélisme à exploiter ;

  • le modèle mémoire de la machine parallèle visée ;

  • la portabilité désirée ;

  • la facilité de programmation ;

  • l’évolution de la structure de l’application pendant son exécution.

8.1 Extensions parallèles des langages séquentiels

Un des moyens de réduire le plus possible le fossé entre la programmation séquentielle et les contraintes de la programmation parallèle a consisté à définir des extensions parallèles des langages séquentiels de programmation. L’objectif est de supprimer totalement, ou de réduire l’effort de programmation pour la distribution des données et la synchronisation. Une première approche consiste à faire évoluer un langage séquentiel vers un langage parallèle (HPF). La seconde définit des directives « au-dessus » d’un...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 95 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Lecture en cours
Programmation des architectures parallèles

Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Sommaire
Sommaire

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.

  • ...

Logo Techniques de l'Ingenieur

Cet article est réservé aux abonnés.
Il vous reste 93 % à découvrir.

Pour explorer cet article Consulter l'extrait gratuit

Déjà abonné ?


Article inclus dans l'offre

"Technologies logicielles Architectures des systèmes"

(236 articles)

Une base complète d’articles

Actualisée et enrichie d’articles validés par nos comités scientifiques.

Des contenus enrichis

Quiz, médias, tableaux, formules, vidéos, etc.

Des modules pratiques

Opérationnels et didactiques, pour garantir l'acquisition des compétences transverses.

Des avantages inclus

Un ensemble de services exclusifs en complément des ressources.

Voir l'offre

Ressources documentaires

Hiérarchie mémoire : les caches

Entre le ou les processeurs d'un ordinateur et les organes de stockage existe une hiérarchie de ...

Calcul généraliste sur carte graphique - Du rendu au calcul massivement parallèle

Cet article s'intéresse à l'architecture et à la programmation des cartes graphiques dans le but de ...

Introduction à l'architecture des ordinateurs

L'article commence par une brève histoire des machines informatiques et introduit ensuite les principes ...

Processeurs : exécution pipeline des instructions

Cet article présente les caractéristiques essentielles de l'exécution pipeline des instructions dans les ...