Parallel Programming in C with MPI and OpenMP Michael J. Quinn Chapitre 17 Open MP.
Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.
-
Upload
rodolphe-faucher -
Category
Documents
-
view
111 -
download
2
Transcript of Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.
![Page 1: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/1.jpg)
Architectures Architectures parallèlesparallèles
Source: Michael J. Quinn Parallel Programming in C with MPI and openMP
1
![Page 2: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/2.jpg)
PlanPlan
1. Réseaux d’intercommunication2. Ordinateurs vectoriels3. Multiprocesseurs4. Multi-ordinateurs5. Taxonomie de Flynn
2
![Page 3: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/3.jpg)
1. Réseaux 1. Réseaux dd ’’intercommunicationintercommunicationUtilités
◦Connecter les processeurs à la mémoire partagée
◦Connecter les processeurs entre eux2 modes:
◦Partagé◦Avec commutateurs (switchs)
3
![Page 4: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/4.jpg)
Comparaison des deux Comparaison des deux modesmodes
Partagé Commutateurs
4
![Page 5: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/5.jpg)
Mode partagéMode partagéUn seul message à la foisLes messages sont diffusés à tous les
processeurs via un busChaque processeur “écoute” tous les
messagesL’arbitrage est décentraliséUne collision nécessite la rediffusion
du messageLimite le nombre de processeurs
5
![Page 6: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/6.jpg)
Avec commutateursAvec commutateursPermet la communication point-
à-pointAvantages:
◦Permet l’envoi de plusieurs messages simultanément
◦Permet l’utilisation d’un plus grand nombre de processeurs
6
![Page 7: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/7.jpg)
Topologies des réseaux Topologies des réseaux dd ’’intercommunicationintercommunication
Représentation sous forme de graphe◦Noeud = processeur ou
commutateur◦Arête = lien de communication
Deux types de topologies◦Directe◦Indirecte
7
![Page 8: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/8.jpg)
Topologie directeTopologie directeUn commutateur pour chaque
processeurChaque commutateur est
connecté à:◦1 processeur◦Au moins un autre commutateur
En général, le nombre de processeurs est identique au nombre de commutateurs
8
![Page 9: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/9.jpg)
Topologie indirecteTopologie indirecteLe nombre de commutateurs
peut être plus grand que le nombre de processeurs
Certains commutateurs ne sont connectés qu’à d’autres commutateurs.
9
![Page 10: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/10.jpg)
Évaluation dÉvaluation d’’une topologieune topologie
Diamètre ◦ Distance maximale entre deux noeuds◦ Borne inférieure sur le temps de communication
Largeur de coupe◦ Nombre min d’arêtes à enlever pour diviser le
graphe en deux composantes connexes de même taille (à 1 neud près).
◦ Borne supérieure sur le nombre de messages pouvant être envoyés simultanément.
Degré = Nombre d’arêtes adjacentes à un noeud
Longueur des arêtes: Une longueur constante permet plus
facilement d’augmenter le nombre de processeurs.
10
![Page 11: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/11.jpg)
Grille 2-DGrille 2-DTopologie directeLes commutateurs sont organisés
sous la forme d’une grille 2-DCommunication permise
seulement entre les noeuds voisins
Tore: les extrémités sont reliées
11
![Page 12: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/12.jpg)
Grille 2-DGrille 2-D Tore Tore
Les cercles représentent des commutateurs et les carré des processeurs.
12
![Page 13: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/13.jpg)
Évaluation des grilles 2-DÉvaluation des grilles 2-DDiamètre: (n1/2)Largeur de coupe: (n1/2)Degré: 4Longueur d’arêtes constante
13
![Page 14: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/14.jpg)
Arbre binaireArbre binaireTopologie indirecte n = 2d processeurs 2n-1 commutateurs
14
![Page 15: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/15.jpg)
Évaluation dÉvaluation d’’un arbre un arbre binairebinaireDiamètre: 2 log n
Largeur de coupe: 1
Degré: 3
La longueur d’arête n’est pas constante
15
![Page 16: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/16.jpg)
Hyper-arbreHyper-arbreTopologie indirecteFaible diamètrePlus grande largeur de coupe qu’un
arbreDe face, il apparaît comme un arbre
de degré k et profondeur dDe côté, il apparaît comme un arbre
binaire renversé de hauteur d
16
![Page 17: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/17.jpg)
Hyper-arbreHyper-arbre
17
![Page 18: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/18.jpg)
Évaluation des hyper-Évaluation des hyper-arbrearbreDiamètre: log n
Largeur de coupe: n / 2
Degré: 6
Longueur d’arêtes non constante
18
![Page 19: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/19.jpg)
Réseau butterflyRéseau butterflyTopologie indirecten = 2d processeurs connectés à l’aide de
n(log n + 1) commutateurs.
19
![Page 20: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/20.jpg)
Routage sur un réseau Routage sur un réseau butterflybutterfly
20
![Page 21: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/21.jpg)
ÉvaluationÉvaluationDiamètre: log n
Largeur de coupe: n / 2
Degré: 4
Longueur d’arêtes non constante
21
![Page 22: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/22.jpg)
HypercubeHypercubeTopologie directeLe nombre de noeuds est un
puissance de 2Adresses: 0, 1, …, 2k-1Le noeud i est connecté au noeud k si
et seulement si leurs adresses ne diffèrent que d’un seul bit.
22
![Page 23: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/23.jpg)
Réseau hypercube de 16 Réseau hypercube de 16 processeursprocesseurs
23
![Page 24: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/24.jpg)
ÉvaluationÉvaluationDiamètre: log n
Largeur de coupe: n / 2
Degré: log n
La longueur des arêtes n’est pas constante
24
![Page 25: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/25.jpg)
Réseau shuffle-exchangeRéseau shuffle-exchangeTopologie directeLe nombre de noeuds est une
puissance de 2Adresses: 0, 1, …, 2k-1Deux arcs sortent de chaque
noeud i◦(i,k): où k est la rotation à gauche des
bits de i◦(i,j): où i et j ne diffèrent qu’au bit le
moins significatif25
![Page 26: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/26.jpg)
Illustration du shuffle-Illustration du shuffle-exchangeexchange
0 1 2 3 4 5 6 7
26
![Page 27: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/27.jpg)
Adressage du shuffle-Adressage du shuffle-exchangeexchange
27
![Page 28: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/28.jpg)
Évaluation du shuffle-Évaluation du shuffle-exchangeexchangeDiamètre: 2log n - 1
Largeur de coupe: n / log n
Degré: 2
Longueur d’arêtes non constante
28
![Page 29: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/29.jpg)
Comparaison des réseauxComparaison des réseauxTous ont un diamètre
logarithmique sauf la grille 2-DHyper-arbre, butterfly et
hypercube ont une largeur de coupe n / 2
Tous ont un degré constant sauf l’hypercube
Seul la grille 2-D a une longueur d’arête constante.
29
![Page 30: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/30.jpg)
2. Ordinateurs 2. Ordinateurs vectorielsvectorielsInclut des opérations sur les vecteurs en
plus des opérations sur les scalairesDeux types d’implémentations:
◦Pipeline: Les vecteur sont déplacés de la mémoire vers le processeurs en un flux de données traités en pipeline- CRAY-I, II, Cyber 205
◦Réseau de processeurs: Un ordinateur standard contient plusieurs processeurs identiques et synchronisés (ex. GPU)
30
![Page 31: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/31.jpg)
Réseau de processeursRéseau de processeurs
31
![Page 32: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/32.jpg)
Réseau de processeursRéseau de processeursOrdinateur frontal
◦ Programme◦ Données manipulées séquentiellement
Réseau de processeurs◦ Mémoires locales◦ Données manipulées en parallèle
L’ordinateur frontal diffuse les instructions aux processeurs du réseau
Tous les processeurs du réseau exécutent la même instruction
32
![Page 33: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/33.jpg)
PerformancePerformanceQuantité de travail par unité de
temps◦Ex. Nombre d’opérations par
secondeLa performance dépend de l’utilisation faite des processeurs.
La performance est au maximum lorsque les processeurs sont utilisés à 100%
33
![Page 34: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/34.jpg)
Exemple 1Exemple 11024 processeursChacun additionne un couple d’entiers en 1 sec
On veut additionner deux vecteurs de1024-elements (un par processeur)
34
![Page 35: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/35.jpg)
Exemple 2Exemple 2512 processeursChacun peut additionner deux
entiers en 1 secOn additionne deux vecteurs de
600 éléments.
35
![Page 36: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/36.jpg)
Activer et désactiver un Activer et désactiver un processeurprocesseur
Si tous les processeurs exécute la même instruction simultanément, comment traiter les instruction conditionnelles???
Chaque processeur possède un bit de masquage lui permettant de ne pas exécuter la prochaine instruction.
36
![Page 37: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/37.jpg)
if (T[i]!=0) then T[i]=1 else if (T[i]!=0) then T[i]=1 else T[i]=-1T[i]=-1
37
![Page 38: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/38.jpg)
if (T[i]!=0) then T[i]=1 else if (T[i]!=0) then T[i]=1 else T[i]=-1T[i]=-1
38
![Page 39: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/39.jpg)
if (T[i]!=0) then T[i]=1 else if (T[i]!=0) then T[i]=1 else T[i]=-1T[i]=-1
39
![Page 40: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/40.jpg)
Désavantages des ordinateurs Désavantages des ordinateurs vectoriels.vectoriels.N’exploite que le parallélisme de
donnéesLa performance décroit en présence d’instructions conditionnelles
S’adapte mal à la présence de plusieurs usagers
Nécessite une bande passante très grande
Le rapport performance/coût n’est pas aussi bon que celui des processeurs standards
40
![Page 41: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/41.jpg)
3. Multiprocesseurs3. MultiprocesseursPlusieurs processeurs utilisant
une mémoire communeMême espace d’adressageÉvitent trois problèmes des
ordinateurs vectoriels:◦Peuvent être construits avec des
processeurs standards◦Supportent plusieurs usagers◦Aucun problème avec les
instructions conditionelles
41
![Page 42: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/42.jpg)
MultiprocesseursMultiprocesseurs
Deux types de multiprocesseurs:
◦Mémoire centralisées
◦Mémoire distribuées
42
![Page 43: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/43.jpg)
Multiprocesseurs Multiprocesseurs centraliséscentralisésExtension directe des monoprocesseursPlusieurs processeurs conectés à un
même busTous les processeurs partagent une
mémoire communeLe temps d’accès à la mémoire est
identique pour tous les processeurs◦Uniform memory access (UMA)◦Symmetrical multiprocessor (SMP)
Chaque processeur possède sa propre mémoire cache
43
![Page 44: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/44.jpg)
Multiprocesseurs Multiprocesseurs centraliséscentralisés
44
![Page 45: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/45.jpg)
Données privées et Données privées et partagéespartagéesDonnées privées: Accessible à
un seul processeurDonnées partagées: Accessible à
tous les processeursLa communication entre les
processeurs se fait à l’aide des données partagées.
45
![Page 46: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/46.jpg)
Problèmes liés aux variables Problèmes liés aux variables partagéespartagéesCohérence des caches
◦La présence de caches réduit les problèmes de bande passante
◦Comment s’assurer que différents processeurs possèdent la même valeur pour une variable partagée?
Synchronisation◦Exclusion mutuelle◦Barrière
46
![Page 47: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/47.jpg)
Cohérence des cachesCohérence des caches
Cache
CPU A
Cache
CPU B
Memory
7X
47
![Page 48: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/48.jpg)
Cohérence des cachesCohérence des caches
CPU A CPU B
Memory
7X
7
48
![Page 49: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/49.jpg)
Cohérence des cachesCohérence des caches
CPU A CPU B
Memory
7X
7 7
49
![Page 50: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/50.jpg)
Cohérence des cachesCohérence des caches
CPU A CPU B
Memory
2X
7 2
50
![Page 51: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/51.jpg)
Protocole dProtocole d’’invalidation en invalidation en écritureécriture
CPU A CPU B
7X
7 7 Chaque cache possède un moniteur de bus
51
![Page 52: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/52.jpg)
Protocole dProtocole d’’invalidation en invalidation en écritureécriture
CPU A CPU B
7X
7 7
Intention de modifier X
52
![Page 53: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/53.jpg)
Protocole dProtocole d’’invalidation en invalidation en écritureécriture
CPU A CPU B
7X
7
Invalidation de X dans le cache de A
53
![Page 54: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/54.jpg)
Protocole dProtocole d’’invalidation en invalidation en écritureécriture
CPU A CPU B
X 2
2
54
![Page 55: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/55.jpg)
Multiprocesseurs Multiprocesseurs distribuésdistribuésLa mémoire est distribuée entre
les processeursDiminue la bande passante ainsi
que le temps moyen d’accès à la mémoire.
Permet d’utiliser un plus grand nombre de processeurs
Non-uniform memory access (NUMA)
55
![Page 56: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/56.jpg)
Multiprocesseurs Multiprocesseurs distribuésdistribués
56
![Page 57: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/57.jpg)
Cohérence de la mémoire Cohérence de la mémoire cachecacheImplémentation plus difficile que
pour les multiprocesseurs à mémoire partagées.
◦Pas de bus unique à monitorer
◦Méthode la plus utilisée: protocole à répertoire (Directory-based protocol)
57
![Page 58: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/58.jpg)
Protocole à répertoireProtocole à répertoireUn répertoire contient l’information
concernant les blocs de mémoire pouvant être mis en cache
Le répertoire est distribuéUne entrée dans le répertoire pour
chaque bloc de mémoire Chaque entrée possède:
◦ Status de partage◦ Liste des processeurs possédant une copie
du bloc
58
![Page 59: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/59.jpg)
Status de partageStatus de partagePas en cache
◦Aucun processeur n’a mis le bloc en cache
Partagé◦Dans le cache d’un ou plusieurs
processeurs◦En lecture seulement
Exclusif◦Dans le cache d’un seule processeur◦Le bloc a été modifié◦La copie en mémoire n’est plus valide
59
![Page 60: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/60.jpg)
Protocole avec répertoireProtocole avec répertoire
Interconnection Network
Directory
Local Memory
Cache
CPU 0
Directory
Local Memory
Cache
CPU 1
Directory
Local Memory
Cache
CPU 260
![Page 61: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/61.jpg)
Protocole avec répertoireProtocole avec répertoire
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X U 0 0 0
Vecteur de bits
61
![Page 62: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/62.jpg)
Processeur 0 lit XProcesseur 0 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X U 0 0 0
Faute de lecture
62
![Page 63: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/63.jpg)
Processeur 0 lit XProcesseur 0 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
63
7X
![Page 64: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/64.jpg)
Processeur 1 lit XProcesseur 1 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 0 0
7X
Faute de lecture
64
![Page 65: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/65.jpg)
Processeur 1 lit XProcesseur 1 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 1 0
7X
65
7X
![Page 66: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/66.jpg)
Processeur 2 lit XProcesseur 2 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 1 0
7X
66
7X
![Page 67: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/67.jpg)
Processeur 2 lit XProcesseur 2 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 1 1
7X
67
7X 7X
![Page 68: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/68.jpg)
Processeur 0 écrit 6 dans Processeur 0 écrit 6 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X S 1 1 1
7X 7X
Faute d’écriture
68
7X
![Page 69: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/69.jpg)
Processeur 0 écrit 6 dans Processeur 0 écrit 6 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X Invalidation
69
Invalidation
![Page 70: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/70.jpg)
Processeur 1 lit XProcesseur 1 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
Faute de lecture
70
![Page 71: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/71.jpg)
Processeur 1 lit XProcesseur 1 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
7X
Caches
Memories
Directories X E 1 0 0
6X
Changer pour partage
71
![Page 72: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/72.jpg)
Processeur 1 lit XProcesseur 1 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 1 0 0
6X
72
![Page 73: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/73.jpg)
Processeur 1 lit XProcesseur 1 lit X
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
73
![Page 74: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/74.jpg)
Processeur 2 met 5 dans Processeur 2 met 5 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
Faute d’écriture
74
![Page 75: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/75.jpg)
Processeur 2 met 5 dans Processeur 2 met 5 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X S 1 1 0
6X 6X
Invalidation
75
![Page 76: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/76.jpg)
Processeur 2 met 5 dans Processeur 2 met 5 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 0 0 1
5X
76
![Page 77: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/77.jpg)
Processeur 0 met 4 dans Processeur 0 met 4 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 0 0 1
5X
Faute d’écriture
77
![Page 78: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/78.jpg)
Processeur 0 met 4 dans Processeur 0 met 4 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
6X
Caches
Memories
Directories X E 0 0 1
Changement de processeur
5X
78
![Page 79: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/79.jpg)
Processeur 0 met 4 dans Processeur 0 met 4 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 0 0 1
5X
79
![Page 80: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/80.jpg)
Processeur 0 met 4 dans Processeur 0 met 4 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
80
![Page 81: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/81.jpg)
Processeur 0 met 4 dans Processeur 0 met 4 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
5X
81
![Page 82: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/82.jpg)
Processeur 0 met 4 dans Processeur 0 met 4 dans XX
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
4X
82
![Page 83: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/83.jpg)
Processeur 0 libère X Processeur 0 libère X (flush)(flush)
Interconnection Network
CPU 0 CPU 1 CPU 2
5X
Caches
Memories
Directories X E 1 0 0
4X
4X
Mise à jour
83
![Page 84: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/84.jpg)
Processeur 0 libère X Processeur 0 libère X (flush)(flush)
Interconnection Network
CPU 0 CPU 1 CPU 2
4X
Caches
Memories
Directories X U 0 0 0
84
![Page 85: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/85.jpg)
4. Multi-ordinateurs4. Multi-ordinateursPlusieurs ordinateurs ayant chacun sa
propre mémoireChaque ordinateur possède son
propre espace d’adressageLes ordinateurs interagissent entre
eux par l’envoie de messagesPeut facilement être construit à partir
d ’ordinateurs conventionels et un réseau local.
85
![Page 86: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/86.jpg)
Multi-ordinateurs Multi-ordinateurs asymétriquesasymétriques
86
![Page 87: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/87.jpg)
AvantagesAvantagesLes ordinateurs du réseaux sont dédiés
au calcul parallèle et ne nécessite qu’un système d’exploitation simple
Deux types de systèmes d’exploitations:◦ Ordinateur frontal◦ Ordinateurs du réseaux
Système d’exploitation des ordinateur du réseaux:◦ sans mémoire virtuel ◦ sans entrée/sortie ◦ facile à comprendre.
87
![Page 88: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/88.jpg)
DésavantagesDésavantagesTout le système dépend de l’ordinateur frontal
L’existence d’un unique ordinateur frontal limite le nombre d ’ordinateurs
Déboguage plus difficile◦Les ordinateurs du réseau ne peuvent
pas faire d’E/SChaque application nécessite le
développement de deux types de programes (frontal et réseau)
88
![Page 89: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/89.jpg)
Multi-ordinateurs Multi-ordinateurs symétriquessymétriques
89
![Page 90: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/90.jpg)
AvantagesAvantagesÉlimine le problème de goulot d ’étranglement causé par l’existence d ’un ordinateur frontal unique
Déboguage plus facileChaque ordinateur exécute le même
programme◦Lorsqu’un seul ordinateur doit exécuter
une opération, cela peut facilement être déterminé par une instruction conditionelle.
90
![Page 91: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/91.jpg)
DésavantagesDésavantagesIl est plus difficile de maintenir l’illusion de
travailler sur une seule machine lorsqu’on peut se connecter sur n’importe quel ordinateur possédant son propre nom.
Difficulté de balancer le travail entre les ordinateurs
Difficile d’obtenir une bonne performance losrqu’il y a plusieurs processus en concurrence pour l’utilisation des processeurs◦ Ex. La mémoire cache sert les processeurs et
non pas les processus.
91
![Page 92: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/92.jpg)
Quel est le meilleur Quel est le meilleur modèle?modèle?L’utilisation d’un système d’exploitation
unique et complet facilitant le déboguage (e.g. Linux) plaide en faveur des multi-orninateurs symétriques
Les performances d’un processeurs dépendent beaucoup de l’efficacité de sa mémoire cache.◦ Cette situation est favorisé lorsqu’il n’y a qu’un seul
processus par processeur◦ Cela plaide en faveur des multi-ordinateur
asymétrique
92
![Page 93: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/93.jpg)
Cluster maisonCluster maisonOrdinateurs regroupésDédié à l’exécution de
programmes parallèlesSans clavier ni écranSystèmes d’exploitation
identiquesImages disque logiques
identiques
93
![Page 94: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/94.jpg)
Réseau de station de Réseau de station de travailtravailOrdinateur dispersésLa priorité est donné à l’usagé
qui utilise le clavierLes tâches parallèles sont
exécutées en arrière planDifférents systèmes d’exploitation
Différentes images disque
94
![Page 95: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/95.jpg)
5. Taxonomie de Flynn5. Taxonomie de FlynnFlux d’instructionsFlux de donnéesSimple vs. multipleQuatre combinaisons
◦SISD◦SIMD◦MISD◦MIMD
95
![Page 96: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/96.jpg)
SISDSISDSingle Instruction, Single DataSystème monoprocesseurNote: On ne compte pas les co-
processeurs◦Calcul en points flottant◦Carte graphique◦I/O
Exemple: PC
96
![Page 97: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/97.jpg)
SIMDSIMDSingle Instruction, Multiple Data
Ex. Réseaux de processeurs(e.g., Connection Machine, nCube, iPSC, etc.)
97
![Page 98: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/98.jpg)
MISDMISDMultiple
Instruction,Single Data
Architecture pipeline
Grilles systoliques
Ordinateur tolérant aux fautes Controleur de vol de la
navette spatiale 98
![Page 99: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/99.jpg)
MIMDMIMDMultiple Instruction, Multiple Data
◦Multiprocesseurs
◦Multi-ordinateurs
99
![Page 100: Architectures parallèles Source: Michael J. Quinn Parallel Programming in C with MPI and openMP 1.](https://reader035.fdocument.pub/reader035/viewer/2022062512/551d9db8497959293b8dc87a/html5/thumbnails/100.jpg)
100