Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
parallèle
Imene LAHYANI
Septembre 2022
Chapitre 1
Introduction
• Définition du parallélisme
• Définition de la programmation parallèle
• Intérêt de la programmation parallèle
• Machines parallèles
• challenge
2
• Définition du parallélisme
• Définition de la programmation parallèle
• Intérêt de la programmation parallèle
• challenge
3
Définition du parallélisme (1/2)
4
Définition du parallélisme (2/2)
Le parallélisme peut être examiné à plusieurs niveaux:
Niveau Job: plusieurs jobs indépendants fonctionnent simultanément
sur le même système informatique.
Niveau programme: plusieurs tâches sont exécutées simultanément
pour résoudre un problème commun.
Niveau instruction: le traitement d'une instruction, comme l'ajout de
deux nombres, peut être divisée en plusieurs sous-instructions. Si
plusieurs instructions similaires doivent être exécutées leurs sous-
instructions peuvent être superposées en utilisant une technique appelée
pipeline.
Niveau bit: lorsque les bits d'un mot sont traités l'un après l'autre, il
s’agit d’une opération de bits en série. Si les bits sont sollicités en
parallèle, il s’agit donc d’une opération de bits en parallèle.
5
Niveau job
Niveau programme
Niveau Instruction
Niveau bit
6
Niveau programme
Prog sequentiel
Tache 1;
Tache 2;
Tache 3;
……
Prog sequentiel Prog parallèle
x=x+1;
Tache 1// tache2// tache 3……
y=y+2;
z=z-5;
……
7
Définition du parallélisme (2/2)
Le parallélisme peut être examiné à plusieurs niveaux:
Niveau Job: plusieurs jobs indépendants fonctionnent simultanément
sur le même système informatique.
Niveau programme: plusieurs tâches sont exécutées simultanément
pour résoudre un problème commun.
Niveau instruction: le traitement d'une instruction, comme l'ajout de
deux nombres, peut être divisée en plusieurs sous-instructions. Si
plusieurs instructions similaires doivent être exécutées leurs sous-
instructions peuvent être superposées en utilisant une technique appelée
pipeline.
Niveau bit: lorsque les bits d'un mot sont traités l'un après l'autre, il
s’agit d’une opération de bits en série. Si les bits sont sollicités en
parallèle, il s’agit donc d’une opération de bits en parallèle.
8
• Définition du parallélisme
• Définition de la programmation parallèle
• Intérêt de la programmation parallèle
• Machines parallèles
• challenge
9
Définition de la programmation parallèle (1/2)
La programmation parallèle est l’activité de construire un
programme parallèle
Un programme séquentiel est composé d’une suite d’instructions = un
seul processus
Un programme parallèle est composé de plusieurs processus qui
s’exécutent « simultanément »
10
Définition de la programmation parallèle (1/2)
• Les processus
• coopèrent pour effectuer une tâche bien déterminée
• Sont en compétition pour la possession de ressources (le processeur)
11
Définition de la programmation parallèle (2/2)
Partage de la mémoire Passage de messages
12
• Définition du parallélisme
• Définition de la programmation parallèle
• Intérêt de la programmation parallèle
• challenge
13
Intérêt de la programmation parallèle (1/2)
Solution:
Des algorithmes plus intelligent
Exploiter au mieux les ressources de la machine
14
Intérêt de la programmation parallèle (2/2)
La programmation parallèle:
1 Permet d’exécuter plusieurs opérations en même temps en dupliquant les
éléments de calcul (processeurs)
Gagner du temps et/ou de l’argent: faire coopérer de nombreux
éléments de calculs de « faible » puissance et de moindre coût
15
• Définition du parallélisme
• Définition de la programmation parallèle
• Intérêt de la programmation parallèle
• Machines parallèles
• Propriétés des processus concurrents
16
Exécution d’un programme parallèle
L'exécution d’un programme parallèle peut se faire :
sur une machine ne disposant que d'un seul processeur partagé
sur une machine ayant plusieurs processeurs (ou cœurs), chacun
prenant en charge l'un des processus
s'il y a moins de processeurs que de processus, chaque processeur pourra en exécuter
plusieurs, selon le principe précédent
Multiprogrammation
Machines multi-coeurs
Clusters
Grille de calcul
18
Les multiprocesseurs
Une machine multiprocesseurs possède deux ou plusieurs (2-64 )
processeurs identiques
connectés à une seule mémoire, partagée,
ont un accès total à tous les périphériques d'E/S,
sont contrôlés par une instance unique du système d'exploitation qui
traite tous les processeurs également.
La plupart des systèmes multiprocesseurs utilisent aujourd'hui une
architecture SMP.
Dans le cas des processeurs multi-coeurs, l'architecture SMP
s'applique aux coeurs, en les traitant comme des processeurs distincts
19
20
Les machines massivement parallèles
Une système massivement parallèle (Massively Parallel Processing) consiste en un
ensemble important (plusieurs centaines) de nœuds reliés par un réseau
d’interconnexion haut débit et spécialisé.
Chaque nœud (e.g., ordinateur) dispose de ses propres ressources
Processeurs
Mémoire
Contrôleurs E/S
Système d’exploitation.
Plusieurs approches:
Grille informatique (grid computing) : un grand nombre d’ordinateurs distribués dans
divers domaines administratifs (donc dispersés géographiquement) qui collaborent pour
effectuer une tache commune. Ils sont reliés à travers un réseau de communication tel que
Internet. C’est un exemple de système distribué
Cluster : un grand nombre d’ordinateurs (des serveurs) qui sont à proximité immédiate
les uns des autres qui collaborent pour effectuer une tache commune. Il sont vue comme
une machine unique et puissante. Les serveurs sont reliés par un réseau local haut débit
21
Les multicoeurs
Cœur: unité exécutant les instructions dans un processeur
Multi-coeurs : plusieurs unités (ou CPU) exécutant des instructions
en parallèle.
Multi-coeurs (tous sur un même circuit) ≠ multi-processeur (circuits
différents)
La plupart des processeurs actuels sont multi-cœurs (généralement de
2 a 8 cœurs)
Encore plus de coeurs dans l'avenir
22
Unité de mesure
Unité de mesure de la vitesse d’une machine parallèle:
Flop: opération flottante (double précision)
Flop/s: opération flottante par seconde
Bytes: taille des données (Octets)
La machine la plus puissante, environ 33.86 Pflop/s (3.120.000 cœurs)
www.top500.org
23
• Définition du parallélisme
• Définition de la programmation parallèle
• Intérêt de la programmation parallèle
• Machines parallèles
• challenge
24
Challenge
25
Exemple d’erreurs (1/2)
Un exemple simple:
(x: variable partagée, initialisée à 1)
process 1: x := x + 1
process 2: x := x - 1
Quel est le résultat final?
Généralement, une instruction n’est pas atomique.
Traduction des instructions en actions atomiques:
Process 1: reads x (R1), writes to x (W1).
Process 2: reads x (R2), writes to x (W2).
6 exécutions possibles et 3 valeurs possibles de x : -1, 0, et 1.
Le programme n’est pas déterministe car le résultat de son exécution varie
d’une exécution à une autre.
26
Exemple d’erreurs (2/2)
Un exemple reel:
Therac – 25: une machine de radiothérapie.
Entre 1985 et 1987, le Therac-25
fut impliqué dans au moins six accidents
durant lesquels des patients reçurent
des doses massives de radiation, ce
qui a engendrer leurs décès.
27