ScholarGate
Assistant

Mémoire partagée et parallélisme de données

Le parallélisme à mémoire partagée implique que plusieurs fils d'exécution opèrent sur un espace d'adressage commun, tandis que le parallélisme de données applique la même opération simultanément à de nombreux éléments de données.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

Dans le modèle à mémoire partagée, les fils d'exécution parallèles communiquent implicitement en lisant et écrivant dans une mémoire commune, se coordonnant via des primitives de synchronisation ; le parallélisme de données est le cas particulier dans lequel la même computation est appliquée indépendamment aux éléments d'une structure de données.

Scope

Ce sujet aborde le modèle d'espace d'adressage partagé et ses interfaces de programmation (fils d'exécution, OpenMP), les primitives de synchronisation qui coordonnent les fils d'exécution (verrous, barrières, opérations atomiques) et les risques qu'elles gèrent (courses aux données, interblocage, faux partage), les constructions de parallélisme de données et de boucles, ainsi que les environnements d'exécution basés sur les tâches avec des ordonnanceurs à vol de travail. Il traite de l'aspect programmation dont les fondements théoriques sont présentés sous les modèles de mémoire partagée.

Core questions

  • Comment les fils d'exécution coordonnent-ils l'accès aux données partagées sans courses aux données ni interblocage ?
  • Comment les boucles et les opérations sur les tableaux peuvent-elles être exprimées pour une exécution parallèle ?
  • Comment les tâches générées dynamiquement sont-elles équilibrées efficacement entre les cœurs ?

Key theories

Synchronisation et cohérence de la mémoire
Les programmes à mémoire partagée corrects reposent sur des primitives de synchronisation et une compréhension du modèle de mémoire qui régit le moment où les écritures d'un fil d'exécution deviennent visibles pour un autre, une mauvaise gestion pouvant entraîner des courses aux données ou un interblocage.
Parallélisme de données basé sur des directives
OpenMP permet aux programmeurs d'annoter du code séquentiel avec des directives qui parallélisent les boucles et les régions sur un espace d'adressage partagé, offrant une voie portable et incrémentale vers le parallélisme à mémoire partagée.
Ordonnancement de tâches par vol de travail
Les environnements d'exécution basés sur les tâches planifient les tâches créées dynamiquement en faisant en sorte que les processeurs inactifs volent du travail aux processeurs occupés, atteignant un bon équilibrage de charge démontré et une surcharge bornée pour les calculs parallèles irréguliers.

Clinical relevance

La programmation à mémoire partagée et le parallélisme de données permet aux logiciels courants d'exploiter les processeurs multicœurs et aux noyaux scientifiques, simulations et charges de travail intensives en tableaux d'atteindre des accélérations sur un nœud unique, ce qui en fait la forme de programmation parallèle la plus répandue.

History

Le multiprocesseur à mémoire partagée a mûri avec le modèle des fils d'exécution et la norme OpenMP de 1998 pour le parallélisme portable basé sur des directives ; les ordonnanceurs à vol de travail du projet Cilk (à partir de 1996) ont fourni un parallélisme basé sur les tâches efficace, et ces idées sous-tendent désormais la programmation multicœur dans tous les langages.

Key figures

  • Maurice Herlihy
  • Nir Shavit
  • Charles Leiserson
  • Vipin Kumar

Related topics

Seminal works

  • herlihy2008
  • grama2003
  • blumofe1996

Frequently asked questions

Qu'est-ce qu'une course aux données et pourquoi est-elle dangereuse ?
Une course aux données se produit lorsque deux fils d'exécution accèdent simultanément à la même adresse mémoire et qu'au moins l'un d'eux écrit, sans synchronisation. Le résultat est indéfini et peut varier d'une exécution à l'autre, produisant des bogues intermittents et difficiles à reproduire, c'est pourquoi la synchronisation est essentielle dans les programmes à mémoire partagée.

Methods for this concept

Related concepts