Parallelisme
Parallelisme
Professeur
M. Hicham. MEDROMI
[email protected]
1
Plan
Machines parallèles
Système parallèle
Architecture Parallèle
H. MEDROMI AS 2
Menu : plat du jour
Définition du parallélisme
Concurrence versus distribution
Parallélisme d’exécution
Exemples de systèmes distribués
Modélisation
dynamique
Problèmes emblématiques
De la concurrence
De la distribution
Parallélisme,
concurrence et langage
Systèmes réactifs et éléments en Java
3
Définition du Parallélisme
Notion de simultanéité
Logique / réel
Notion de non dépendance
4
Modèle flot de données
T0
T4 T9
T2
T5
T3
T1 T8
T6 T7
5
Trois niveaux de parallélisme
6
Introduction(?) au parallélisme
Parallélisme
utiliser plusieurs ordinateurs ensemble pour résoudre des problèmes
algorithmique
ordonnancement
pratiques
supports
modèles
7
Environnement logiciel parallèle
Composants nécessaires pour l’exécution
d ’un programme parallèle
Application
Compilateur
Support d ’exécution
Système d ’exploitation
Hardware
8
Modèles de programmation parallèle
Définies par
le compilateur
le support d ’exécution
Buts
facilité de programmation
proche du séquentiel
PRAM
BSP
scalabilité
obsolescence du matériel
10
Parallélisme matériel : première époque
Processeurs vectoriels (Cray, ~1976)
circuit spécifique
« Parallélisme de données »
Classification traditionnelle
SIMD : Single Instruction (flow) Multiple Data
11
Modèle à parallélisme de données
Principe algorithmique
définir des structures de données (souvent) régulières (vecteurs,
matrices)
effectuer une suite d ’opérations simples sur ces structures
Exemple
Vecteur a[100]; a b c
Vecteur b[100];
Vecteur c[100];
12
Importance de la compilation
13
Caractéristiques
14
MPL
Langage data-parallèle
pour une machine précise : Maspar MP-1
commande
15
Variables parallèles
Syntaxe à la C
int i;
parallel int a,b,c; // définit les variables a,b et c sur tous les processeurs
17
Fonctionnement synchrone
Chaque instruction est décodée par le maître et exécutée par tous les
processeurs
modèle fondamentalement synchrone
rapidement obsolètes
19
Problèmes du data-parallélisme
Intelligence du compilateur
parallélisation automatique des boucles
20
HPF
21
Le modèle HPF
Modèle à 4 niveaux
Objets HPF « normaux » (tableau)
Intuitivement
une opération entre deux objets est plus efficace s ’ils sont sur le même
processeur
ces opérations peuvent être exécutées en parallèle si elles peuvent être
22
Fonctionnement de HPF
but : rapprocher sur la grille des processeurs abstraits les objets qui
interagissent
deux possibles : BLOCK (suite d ’éléments contigües) et CYCLIC
23
Fonctionnement de HPF(2)
Expression d ’indépendance d ’instructions
par exemple deux instructions dans une boucle
> efficacité
Résumons
langage data-// pour architectures SIMD et MIMD
24
Machine Parallèle
25
Machine Parallèle
26
Processeur
27
Type de parallélisme
On distingue classiquement quatre types principaux
de parallélisme (Taxonomie de Tanenbaum):
28
Micro-Parallélisme
Permet néanmoins d'expliquer les bases
de l'architectures des ordinateurs, séquentiels et
parallèles.
Cette classification est basée sur les notions
de flot de contrôle
(deux premières lettres, I voulant dire ``Instruction'')
et flot de données
(deux dernières lettres, D voulant dire ``Data'').
29
Description des machines
Machine SISD
Machine MISD
30
Machine SISD
Une machine SISD (Single Instruction Single Data)
C’est ce que l'on appelle d'habitude une machine de Von Neuman.
Une seule instruction est exécutée et une seule donnée
(simple, non-structurée) est traitée à tout instant.
Le code suivant,
int A[100];
...
for (i=1;100>i;i++)
A[i]=A[i]+A[i+1];
s'exécute sur une machine séquentielle en faisant les additions
A[1]+A[2], A[2]+A[3], etc., A[99]+A[100]
à la suite les unes des autres.
31
Machine SIMD
Une machine SIMD (Single Instruction Multiple Data)
peut être de plusieurs types, parallèle ou systolique.
En général l'exécution en parallèle de la même instruction
se fait en même temps sur des processeurs différents
(parallélisme de donnée synchrone).
Examinons par exemple le code suivant écrit en
CM-Fortran sur la Connection Machine-5 avec
32 processeurs,
32
Machine SIMD
33
Machine SIMD
Réparation d'un tableau sur les processeurs d'une machine SIMD typique
34
Machine MISD
35
Machine MISD
Un exemple de ``pipelinage'' d'une addition vectorielle est le suivant.
Considérons le code:
FOR i:=1 to n DO
R(a+b*i):=A(a'+b'*i)+B(a''+b''*i);
36
Machine MISD
Temps A ( i ) B ( i ) R ( i )
1 1 . . . 1 . . . . ...
2 21. . 21. . . . ..
3 321 . 321 . . . ..
``
4 43214321 . . ..
5 54325432 1 . ..
6 65436543 21..
etc.
37
Machine MIMD
38
Architecture simplifiée d'une machine
à mémoire partagée
39
Machine MIMD
Une machine MIMD à mémoire partagée (2) est principalement constituée
de processeurs avec des horloges indépendantes, donc évoluant de façon
asynchrone, et communiquant en écrivant et lisant des valeurs dans
une seule et même mémoire (la mémoire partagée).
Une difficulté supplémentaire, que l'on ne décrira pas plus ici, est que
chaque processeur a en général au moins un cache de données, tous
ces caches devant avoir des informations cohérentes aux moments
cruciaux.
40
Interaction monde réel – système
Les acteurs
Système
Humain Vanne