Vous êtes sur la page 1sur 60

Programmation Parallèle et Distribuée

Pr. Salma AZZOUZI


Objectifs

• Maîtriser les technologies et méthodes d’analyse à


mettre en œuvre pour écrire des logiciels fonctionnant
en environnement distribué ou parallélisé.
• Présenter les principales technologies utilisées dans
les projets de calculs ou de traitements de données
distribués.
• Détailler Les contraintes de développement afin
d’acquérir de nouvelles méthodes d’analyse et de
développement, requises dans le cadre de la
programmation distribuée ou parallélisée.
Plan

• Introduction et concepts de base

• Architectures parallèles

• Modèles de programmation parallèles

• Analyse de performances de programmes


parallèles

• Langages et environnement parallèles

• Applications
Architectures Parallèles

• Machines parallèles Machines avec plusieurs


processeurs travaillant en parallèle.

• Principe de base Obtenir une grande puissance de


calcul par l'utilisation d'un grand nombre de processeurs
standards de faible coût.
Architectures Parallèles

• Les architectures parallèles sont caractérisées par :


• Espace mémoire étendu;

• Plusieurs processeurs;

• Traitement partiel indépendant;

•Accélération des calculs complexes ou coûteux en temps


d'occupation CPU;

• Calcul parallèle répétitif sur un large ensemble de données structuré.


Architectures Parallèles

Nombre de Flux
de données
Un seul Plusieurs

Nombre de Flux Un seul SISD SIMD


d’instructions Plusieurs MISD MIMD

Classification de Flynn
Architectures Parallèles: Classification de Flynn

• SISD est identique à l’architecture de Von-Neumann


avec un processeur unique qui exécute un seul flux
d’instructions pour opérer sur une donnée stockée dans
une mémoire unique
Adresse et Contrôle
Mémoire

Données Instructions

Unité Arithmétique Contrôle Unité de


et Logique (UAL) Contrôle (UC)

Statuts

Architecture SISD
Architectures Parallèles: Classification de Flynn

• Un ordinateur de type SISD peut éventuellement avoir


plusieurs unités fonctionnelles de traitement, mais elles
sont dirigées par une seule unité de contrôle.

Load A
Load B
C=A + B

time
Sore C
A=B * 2
Store A

Architecture SISD
Architectures Parallèles: Classification de Flynn

• SIMD est une architecture dont toutes les unités de


traitement exécutent le même flux d’instructions qui
opèrent sur des flux de données différents.
FD

ML1
UT1

Avec:

FI UC: Unité de Contrôle


FD
UC

UT2

ML2
UT : Unité de traitement
ML: Mémoire Locale
FI : Flux d’instructions
FD : Flux de données
FD
MLn
UTn

Architecture SIMD
Architectures Parallèles: Classification de Flynn

• Une machine SIMD est une machine qui exécute à tout


instant une seule instruction, mais qui agit en parallèle sur
plusieurs données parallélisme de données

Previous instr Previous instr Previous instr


Load A(1) Load A(2) Load A(n)
Load B(1) Load B(2) Load B(n)

time
C(1) =A(1) + B(1) C(2) =A(2) + B(2) C(n) =A(n) + B(n)
Sore C(1) Sore C(2) Sore C(n)
Next instr Next instr Next instr

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD

D1,D2, FD D5,D6,
D3,D4 D7,D8 Étape 1:

FI L’unité de contrôle divise les


UC

nombres en 4 sous-ensembles, un
seul ensemble par processeur.

D9,D10, FD D13,D14,
D11,D12 D15,D16

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD

SP1=Somme( SP2=Somme(
D1,D2,D3,D4) D5,D6,D7,D8) Étape 2:

Calcul des sommes


FI partielles sur les
UC

processeurs individuels;
calcul sériel sur chaque
SP3=Somme( SP4=Somme( unité
D9,D10,D11,D12) D13,D14,D15,D16)

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD
Étape 3:
SP5=SP1+SP3 SP6=SP2+SP4
• La moitié des processeurs
envoie les données,
FI • l’autre moitié les reçoit et
UC

effectue une addition.


• Le réseau d’interconnexion
est utilisé pour communiquer
SP3 SP4
les données

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD
Étape 4:
SP7=SP5+SP6 SP6
• Additionner à nouveau les
sommes partielles
FI
UC

Architecture SIMD
Architectures Parallèles: Classification de Flynn

• Le modèle SIMD a connu un certain succès sous le nom

d'ordinateur vectoriel.

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Produit de deux matrices d’ordre n

Version SISD

Version SIMD

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Produit de deux matrices d’ordre n (n = 3)

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Dans une machine cellulaire, le mode d’exécution est toujours de type
SIMD.

• L’unité de contrôle envoie son instruction courante à tous les


processeurs. Ces Ps qui doivent l’exécuter prennent pour argument les
données placées dans leurs mémoires locales.

• L’exécution se fait en mode synchrone c'est-à-dire on attend que tous


les processeurs élémentaires aient terminé l’exécution de l’instruction
courante pour passer à l’instruction suivante.

Architecture SIMD: Réseau cellulaire


Architectures Parallèles: Classification de Flynn

A chaque nouvelle unité de temps, le même flux d’instructions est appliqué


simultanément à toutes les cellules de la grille, produisant une nouvelle
génération de cellule dépendant entièrement de la génération précédente,

Architecture SIMD: Réseau cellulaire


Architectures Parallèles: Classification de Flynn
A chaque nouvelle unité de temps, le même flux d’instructions est appliqué
simultanément à toutes les cellules de la grille, produisant une nouvelle
génération de cellule dépendant entièrement de la génération précédente,

Architecture SIMD: Réseau cellulaire


Architectures Parallèles: Classification de Flynn

• MISD est une architecture dont chaque processeur


exécute une séquence différente d’instructions sur les
mêmes données utilisées par les autres processeurs
FD FI1

ML1
UT1

Avec:

FD FI2 UC: Unité de Contrôle


UC

FD
UT2

ML2
UT : Unité de traitement
ML: Mémoire Locale
FI : Flux d’instructions
FD FIn FD : Flux de données
MLn
UTn

Architecture MISD
Architectures Parallèles: Classification de Flynn

• Théoriquement, certains auteurs considèrent le pipeline


comme un schéma MISD. Par conséquent, l’architecture
MISD reste un modèle théorique car il n'existe aucune
machine construite sur ce modèle.
Previous instr Previous instr Previous instr
Load A Load A Load A
Load B Load B Load B

time
C(1)=A + B C(2) =A - B C(n) =A * B
Sore C(1) Sore C(2) Sore C(n)
Next instr Next instr Next instr

Architecture MISD
Architectures Parallèles: Classification de Flynn
• Exemple : Opérations arithmétiques des nombres sur 4 processeurs en
utilisant une architecture SIMD

FD
A,B,C,D A,B,C,D
Étape 1:

FI L’unité de contrôle envoie les


UC

mêmes 4 nombres et des flux


d’instruction différents vers tous
les processeurs
A,B,C,D FD A,B,C,D

Architecture MISD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD

SP1=Somme( SP2=Soutraction
A,B,C,D) ( A,B,C,D) Étape 2:

calcul des résultats


FI partielles sur les
UC

processeurs individuels

SP3=Produit( SP4=Division(
A,B,C,D) A,B,C,D)

Architecture MISD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD
Étape 3:
SP1 SP2
• Les résultats partiels sont
donc obtenus
FI
UC

SP3 SP4

Architecture MISD
Architectures Parallèles: Classification de Flynn
• Le pipeline est une organisation du processeur qui comprend plusieurs
étages et permet d’exécuter simultanément plusieurs instructions.

• Il représente un moyen d’introduire le parallélisme dans la nature


essentielle d’un groupe d’instruction de machine.

• Dans la classification des machines parallèles, ces machines sont de


type MISD mais on peut considérer que l’effet pipeline est semblable à
un effet Multiple Data, donc en pratique, on classe les machines
pipelines avec les machines SIMD.

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn

• L’unité de traitement et l’unité de contrôle


sont découpées en n étages.

• Ainsi, des données peuvent être traitées à


l’étage 1 pendant que d’autres sont traitées
à l’étage 2.

• L’unité de contrôle fournit un flux


d’instruction à l’unité de traitement. L’unité
de traitement opère sur un seul flux de
données provenant d’une unité de
mémoire.

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn
• Exemple : On va considérer un pipeline d’instruction comme une
fonction composée par des 4 fonctions simples.

f = f4o f3 o f2 o f1

• Ce pipeline possède quatre étages à savoir f1, f2, f3 et f4.

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn

• f1 lit une instruction et la place dans un tampon. Lorsque f2 (2e étage)


est libre, f1 lui passe l’instruction dans le tampon et f2 poursuit
l’instruction et ainsi f1 est prêt à recevoir une autre instruction, ainsi de
suite.

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn
• Une instruction est divisée en k étapes indépendantes

• Les étapes de plusieurs instructions s'exécutent en parallèle

• Si une étape dure t unités de temps alors pour n instructions :

– sans pipeline : TS=t * k * n unités de temps

– avec pipeline : Tp= t * k + t * (n-1) unités de temps

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn

• Les 5 instructions doivent être effectuées en 4 x 5 unités de temps réduit


en 8 unités de temps. Cela représente un gain de temps.

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn
• Calcul de performance: accéleration

Sn= Tn/Tp

Sn

Architecture MISD: Pipeline


Architectures Parallèles: Classification de Flynn
• MIMD est un ensemble de processeurs exécutant,
simultanément, différentes séquences d’instructions sur
différents flux de données. Chaque processeur traite une
donnée distincte, et lui applique son propre flux d’instructions.
FD ML
FI
Avec:
UC UT
UC: Unité de Contrôle
P1 ……… UT : Unité de traitement
……... Réseau
ML: Mémoire Locale
……... FI : Flux d’instructions
FD ML FD : Flux de données
FI
UC UT
Pn

Architecture MIMD
Architectures Parallèles: Classification de Flynn
• Chaque processeur d’une architecture MIMD est caractérisé par :

• Une petite taille;

• Un prix réduit;

• Des hautes performances.

FD ML
FI
Avec:
P1 UC UT
UC: Unité de Contrôle
……… Réseau UT : Unité de traitement
……... ML: Mémoire Locale
……... FI : Flux d’instructions
FD ML FD : Flux de données
FI
Pn UC UT

Architecture MIMD
Architectures Parallèles: Classification de Flynn
• Instructions Multiples : chaque unité de calcul peut exécuter un flux
´d’instructions diffèrent;

• Données Multiples : chaque processeur peut opérer sur un flux de


données différent ;

• La majorité des machines parallèle les modernes font partie de


cette catégorie
Previous instr Previous instr Previous instr
Load A(1) Call funck
Do i=1,N
Load B(1) X=y+z
Cube=h^3

time
C(1)=A(1) * B(1) Doub=x*2
VarPart= B(i)
Sore C(1) Call ADD1(i,j)
continue
Next instr Next instr
Next instr
P1 P2 Pn

Architecture MIMD
Architectures Parallèles: Classification de Flynn

• Les architectures MIMD peuvent être classées selon plusieurs


critères, tels que :

➢ L’organisation de la mémoire;

➢ La topologie du réseau d’interconnexion.

Previous instr Previous instr Previous instr


Load A(1) Call funck Do i=1,N
Load B(1) X=y+z Cube=h^3

time
C(1)=A(1) * B(1) Doub=x*2 VarPart= B(i)
Sore C(1) Call ADD1(i,j) continue
Next instr Next instr Next instr

P1 P2 Pn

Architecture MIMD
Architectures Parallèles: Classification de Flynn

• Les processeurs MIMD peuvent utiliser:

➢ Une mémoire partagée (Shared Memory Machines : SMM) :


tous les processeurs accèdent à la totalité de la mémoire;

➢ Une mémoire distribuée (Distributed Memory Machines :


DMM) : chaque processeur dispose d’une mémoire locale ;

➢ Une mémoire hybride

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn

Architecture MIMD à mémoire partagée : SMM


• les SMMs consistent en un nombre de processeurs ou cœurs, à
mémoire physiquement partagées (mémoire globale), et un
réseau d’interconnexion pour connecter les processeurs (ou
coeurs) à la mémoire.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn

Architecture MIMD à mémoire partagée : SMM


• L’échange d’information entre les processeurs se fait via la mémoire
globale par lecture et écriture de variables partagées.

mémoire visible par tous les processeurs

• L’accès concurrent aux variables partagées par plusieurs processeur


peut causer le problème de « concurrence critique »

besoin de mécanisme de gestion du problème de concurrence.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire

• Le temps d’accès à la mémoire a une grande influence sur les


performances d’un programme, et ce même pour des machines à
espace d’adressage partagé.

Exemple. Le temps d’accès aux puces DRAM, utilisées en mémoire


centrale, n’augmente annuellement que par environ 25% alors que
leurs capacités augmente par environ 60%!

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn

Architecture MIMD à mémoire partagée : SMM


Réduction du temps d’accès à la mémoire

L’écart entre la vitesse du processeur et celle de temps d’accès à la


mémoire progresse d’environ 50% par an

La technologie de la mémoire ne peut suivre celle du processeur dans


son essor.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn

Architecture MIMD à mémoire partagée : SMM


Réduction du temps d’accès à la mémoire
L’organisation adéquate des accès à la mémoire est devenue une
nécessité pour améliorer les performances des programmes, en
particulier lorsqu’un espace d’adressage partagé est utilisé :

• La simulation de processeurs virtuels par chaque processeur


physique (Multithreading);

• L’utilisation de mémoires caches locales pour stocker les valeurs


des données qui sont accédées souvent.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Multithreading
• Un processeur est dit multithread s'il est capable d'exécuter
efficacement plusieurs threads simultanément;

• Le Multithreading permet de pallier au problème de la latence des


accès mémoire en simulant un certain nombre de processeurs
virtuels pur chaque processeur physique;

• chaque thread dispose de ses propres registres et de son propre


pointeur d'instruction.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches

• Une mémoire cache est une mémoire qui enregistre temporairement


des copies de données provenant d'une autre source de donnée
comme les mémoires;

• Le rôle de la mémoire cache est de diminuer le temps d'accès (en


lecture ou en écriture) d’un processeur ( ou n’importe quel matériel
informatique à ces données.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches

• Une fois les données sont stockées dans la mémoire cache,


l'utilisation future de ces données peut être réalisée en accédant à la
copie en cache plutôt qu'en récupérant ou recalculant les données.

abaisser le temps d'accès moyen

Augmenter les performances

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches

• Une fois les données sont stockées dans la mémoire cache,


l'utilisation future de ces données peut être réalisée en accédant à la
copie en cache plutôt qu'en récupérant ou recalculant les données.

abaisser le temps d'accès moyen

Augmenter les performances

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches
Fonctionnement:
1. Le processeur demande une donnée ;
2. Le cache vérifie s'il possède cette information:
a. S'il la possède, il la retransmet à l'élément demandeur

succès de cache - cache hit -


b. Sinon, il la demande à la mémoire principale (la mémoire
partagée)

défaut de cache - cache miss-

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches
Fonctionnement:
3. La mémoire partagée (élément fournisseur) traite la demande et
renvoie la réponse au cache ;

4. le cache la stocke pour utilisation ultérieure et la retransmet au


processeur (élément demander) demandeur au besoin.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches
Principes :

1- Localité spaciale : indique que l'accès à une donnée située à une


adresse X va probablement être suivi d'un accès à une zone toute
proche de X ;

2- Localité temporelle : indique que l'accès à une zone mémoire à


un instant donné a de fortes chances de se reproduire dans la suite
immédiate du programme.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches
Principes :

Plus ces deux principes sont assurés, moins la mémoire centrale est
accédée.

Amélioration des performances

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches
Stratégie :
La gestion de la mémoire cache est assurée par le hardware en
employant une stratégie dite associative par ensemble (set-
associative).

La mémoire cache ne peut pas contenir toute les données de la


mémoire principale, il faut définir une méthode indiquant à quelle
adresse de la mémoire cache doit être écrite une ligne de la mémoire
principale. Cette méthode s'appelle le mapping (correspondance).

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches
Stratégie :

Avec;
Ligne : plus petit élément de données qui peut être transféré
entre la mémoire cache et la mémoire de niveau supérieur

Mot : plus petit élément de données qui peut être transféré entre
le processeur et la mémoire cache

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : SMM
Réduction du temps d’accès à la mémoire: Les mémoires caches
Stratégie :
Il existe trois types de mapping répandus dans les caches:

• Les mémoires caches complètement associatives (fully


associative cache) ;
• Les mémoires caches N-associatives (N-way set associative
cache) ;
• Les mémoires caches directes (direct mapped cache).

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn

Architecture MIMD à mémoire partagée : SMM


• Les processeurs peuvent avoir une mémoire locale dans
laquelle sera copiée une partie de la mémoire globale pour des
raisons d’optimisation des accès.

Exemple : les processeurs SMP (Symmetric MultiProcessors).

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : les processeurs SMP (Symmetric
MultiProcessors).

• Une SMP est une SMM ayant une seule mémoire partagée avec un
temps d’accès uniforme (UMA Uniforme Memory Access) à partir de
tous les processeurs vers n’importe quelle location mémoire (cas des
processeurs multicoeurs).

• UMA: Chaque processeur a un temps d'accès en mémoire (latence) et


une vitesse d'accès égaux.

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn
Architecture MIMD à mémoire partagée : les processeurs SMP
(Symmetric MultiProcessors).

• Le fait que, tous les processeurs utilisent le même bus mémoire,


limite la scalabilité de l'architecture.

• Lorsque le nombre de processeurs rapides augmente, la


contention mémoire peut dégrader sérieusement les
performances ;

Ces architectures ne supportent pas un grand nombre de


processeurs (16 à 64).

Architecture MIMD : Organisation de la mémoire


Architectures Parallèles: Classification de Flynn

Architecture MIMD à mémoire distribuée :

Architecture MIMD : Organisation de la mémoire


Parallel architectures: wrap-up
Architectures

SISD SIMD MIMD

Array Processor Vector Processor Multiprocessor Multicomputer

UMA CC-NUMA COMA NC-NUMA MPP COW

Bus Switched
Distributed (Shared on Not Shared) Memory

Interconnection networks and communication


mechanisms are similar

CC: Cache Coherent


NC: No Cache
COMA: Cache Only Memory Access
Plan

• Introduction et concepts de base

• Architectures parallèles

• Modèles de programmation parallèles

• Analyse de performances de programmes


parallèles

• Langages et environnement parallèles

• Applications

Vous aimerez peut-être aussi