Vous êtes sur la page 1sur 27

Programmation concurrente et

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)

 Le parallélisme consiste à l’occurrence simultanée (parallèle)


d'événements dans un système informatique.

 Un événement signifie généralement l'un des suivants:


 Une opération arithmétique
 Une opération logique
 Un accès mémoire
 Exécution Entrée ou sortie (E/S)

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)

• La coopération entre les processus se fait par la communication des données


en utilisant
• soit des mémoires partagées
• en écrivant et lisant des variables partagées
• soit des canaux.
• en émettant et recevant des messages via des canaux

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)

 La vitesse des processeurs ne peut pas augmenter infiniment car limitation


physique (taille des transistors)
 les applications sont de plus en plus demandeuses en puissance de calcul

 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

2 Permet aussi une meilleure utilisation du processeur grâce à la


multiprogrammation

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

 sur plusieurs machines différentes, reliées par un réseau de


communication.
 Chacune des machines pourra comprendre un ou plusieurs processeurs, et dérouler
des programmes selon les deux premiers principes ci-dessus.
Calcul distribuée
17
Classification des machines parallèles

Machines multiprocesseurs (SMP)

Machines multi-coeurs

Machines parallèles Machines massivement parallèles (MPP)

Clusters

Grille de calcul

Machines parallèle spécialisée

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

 La programmation parallèle est plus difficile que la programmation


séquentielle.
 Cause:
 Un nombre énorme d'exécutions possibles
 non déterministe
 Les programmes sont plus difficiles à écrire (!)
 Les programmes sont plus difficiles à déboguer(!)
 Les erreurs ne sont pas toujours reproductibles (!)
 De nouveaux types d'erreurs possibles (!):
 interblocage, famine, inversion de priorité, interférence ...

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.

 La cause directe du dysfonctionnement de la machine était d'ordre


informatique: erreur de programmation parallèle

27

Vous aimerez peut-être aussi