Vous êtes sur la page 1sur 69

7- Systèmes parallèles

Systèmes parallèles
Cours du Système Embarqué et Temps Réel

Prof. Nabil KANNOUF

UAE – ENSAH

22 novembre 2021
7- Systèmes parallèles

Plan

1 Notions de systèmes parallèles

2 Organisation de la mémoire

3 Parallélisation d’applications

4 Métriques de performance
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

7.1- Notions de systèmes parallèles


7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Systèmes parallèles

La parallélisme est central dans l’informatique moderne


. Processeurs multicoeurs
. Systémes multiprocesseurs
. Applications multiprocessus et multithreadées
. Processeurs graphiques
. Supercalculateurs
. Infonuagique
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Systèmes parallèles

La parallélisme est central dans l’informatique moderne


. Processeurs multicoeurs
. Systémes multiprocesseurs
. Applications multiprocessus et multithreadées
. Processeurs graphiques
. Supercalculateurs
. Infonuagique
Avoir des bases en systèmes parallèles est important en génie informatique
. Et en particulier, systèmes embarqués comportent du parallèlisme
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Concepts de base

Application parallèle est composée de plusieurs tâches


. Chaque tâche peut s’exécuter sur une unité de traitement (coeur de calcul) distincte
. Taille des tâches est généralement appelée granularité
? Différentes décompositions possibles d’une application
? Décompositions peuvent être complexes et requièrent souvent une bonne expertise
humaine
? Parallélisme potentiel est une propriété d’une application relativement à son potentiel
à être parallélisé
. Tâches sont assignées à des processus ou des threads
? Assignation peut être explicitée dans le code, ou implicite (déterminé par l’environne-
ment logiciel), à la compilation ou à l’exécution
. Tâches comprennent généralement dépendances entre elles
? Exécution d’une tâche dépend du résultat d’une autre tâche
. Ordonnancement fait assignation des processus/threads aux unités de traitement
? Ordonnancement généralement effectué à l’exécution
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Concepts de base

Synchronisation et coordination entre les processus et threads


. Méthodes de synchronisation dépendent grandement de l’environnement matériel
. Machine à mémoire partagée (multicoeurs ou multiprocesseur)
? Primitives de synchronisation : mutex, sémaphores, barrières
. Machine à mémoire distribuée (supercalculateur, infonuagique)
? Échange de données entre processeurs : passage de messages, communication IP
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Concepts de base

Synchronisation et coordination entre les processus et threads


. Méthodes de synchronisation dépendent grandement de l’environnement matériel
. Machine à mémoire partagée (multicoeurs ou multiprocesseur)
? Primitives de synchronisation : mutex, sémaphores, barrières
. Machine à mémoire distribuée (supercalculateur, infonuagique)
? Échange de données entre processeurs : passage de messages, communication IP
Temps d’exécution parallèle
. Temps de calculs, de synchronisation, d’échange de données, et temps mort (idle)
. Devrait être inférieur et temps d’exécution séquentiel (sur une unité de traitement)
. Balancement de charge : assigner charge aussi également que possible sur les unités
de traitement
. Evaluation quantitative
? Accélération (speedup) : ratio de réduction des temps de traitement parallèle vs séquentiel
? Accélération (Efficience : niveau de parallélisme atteint relativement à l’idéal
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Architectures parallèles
Parallélisme au niveau des bits
. Taille de mot passée de 4 bits à 64 bits jusqu’aux années 1990
. Arrêt à 64 bits, suffisant pour nombres à virgule flottante et adressage de la mémoire
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Architectures parallèles
Parallélisme au niveau des bits
. Taille de mot passée de 4 bits à 64 bits jusqu’aux années 1990
. Arrêt à 64 bits, suffisant pour nombres à virgule flottante et adressage de la mémoire
Parallélisme par mise en pipeline
. Idée : diviser instruction-machine en plusieurs étapes, traitées en parallèle
. Partition typique : lecture, décodage, exécution et écriture
. Exécution d’instructions une à la suite de l’autre

Par Jan Mayens, CC BY-SA-3.0. https ://commons.wikimedia.org/wiki/File :Pipeline_chaîne_de_traitement.png


7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Architectures parallèles
Parallélisme au niveau des bits
. Taille de mot passée de 4 bits à 64 bits jusqu’aux années 1990
. Arrêt à 64 bits, suffisant pour nombres à virgule flottante et adressage de la mémoire
Parallélisme par mise en pipeline
. Idée : diviser instruction-machine en plusieurs étapes, traitées en parallèle
. Partition typique : lecture, décodage, exécution et écriture
. Exécution d’instructions une à la suite de l’autre

Par Jan Mayens, CC BY-SA-3.0. https ://commons.wikimedia.org/wiki/File :Pipeline_chaîne_de_traitement.png

Sans dépendance entre les données, niveau de parallélisme possible correspond au


nombre d’étages du pipeline
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Architectures parallèles

Parallélisme avec plus unités fonctionnelles


. Idée : avoir plusieurs unités fonctionnelles indépendantes (ALU, FPU, lecture/écriture) tra-
vaillant en parallèle
. Permet lancement multiple d’instructions et exécution dans le désordre
. Rend plus complexe conception du microprocesseur
. Améliore parallélisme relativement aux pipelines car gère mieux dépendances de données
. Branchements conditionnels limite niveau de parallélisme possible
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Architectures parallèles

Parallélisme avec plus unités fonctionnelles


. Idée : avoir plusieurs unités fonctionnelles indépendantes (ALU, FPU, lecture/écriture) tra-
vaillant en parallèle
. Permet lancement multiple d’instructions et exécution dans le désordre
. Rend plus complexe conception du microprocesseur
. Améliore parallélisme relativement aux pipelines car gère mieux dépendances de données
. Branchements conditionnels limite niveau de parallélisme possible
Parallélisme des processus (incluant thread)
. Exploiter parallélisme au niveau de l’organisation de l’application
. Plusieurs flux de contrôles peuvent s’exécuter sur unités de traitement distinctes
. Transfert complexité du parallélisme aux programmeurs d’application
. Rendu nécessaire pour exploiter progrès de la loi de Moore
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Taxonomie de Flynn
Taxonomie de Flynn : caractériser architecture d’ordinateur selon parallélisme de contrôle
et de données
. Single-Instruction, Single-Data (SISD)
? Une unité de traitement a accès à un programme et un espace mémoire
? Ordinateur séquentiel classique
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Taxonomie de Flynn
Taxonomie de Flynn : caractériser architecture d’ordinateur selon parallélisme de contrôle
et de données
. Single-Instruction, Single-Data (SISD)
? Une unité de traitement a accès à un programme et un espace mémoire
? Ordinateur séquentiel classique
. Multiple-Instruction, Single-Date (MISD)
? Plusieurs programmes traitent les mêmes données
? Aucun ordinateur commercial n’a implémenté ce modèle
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Taxonomie de Flynn
Taxonomie de Flynn : caractériser architecture d’ordinateur selon parallélisme de contrôle
et de données
. Single-Instruction, Single-Data (SISD)
? Une unité de traitement a accès à un programme et un espace mémoire
? Ordinateur séquentiel classique
. Multiple-Instruction, Single-Date (MISD)
? Plusieurs programmes traitent les mêmes données
? Aucun ordinateur commercial n’a implémenté ce modèle
. Single-Instruction, Multiple-Data (SIMD)
? Plusieurs unités de traitement ont accès chacun à données distinctes
? Un seul programme avec instruction spéciale pour lecture et assignation
? Exécution parallèle des mêmes instructions à des données différentes
? Plusieurs applications pratiques (instructions multimédias, GPU), avec degré significatif de
parallélisme de données
7- Systèmes parallèles
7.1- Notions de systèmes parallèles

Taxonomie de Flynn
Taxonomie de Flynn : caractériser architecture d’ordinateur selon parallélisme de contrôle
et de données
. Single-Instruction, Single-Data (SISD)
? Une unité de traitement a accès à un programme et un espace mémoire
? Ordinateur séquentiel classique
. Multiple-Instruction, Single-Date (MISD)
? Plusieurs programmes traitent les mêmes données
? Aucun ordinateur commercial n’a implémenté ce modèle
. Single-Instruction, Multiple-Data (SIMD)
? Plusieurs unités de traitement ont accès chacun à données distinctes
? Un seul programme avec instruction spéciale pour lecture et assignation
? Exécution parallèle des mêmes instructions à des données différentes
? Plusieurs applications pratiques (instructions multimédias, GPU), avec degré significatif de
parallélisme de données
. Multiple-Instruction, Multiple-Data (MIMD)
? Plusieurs unités de traitement ayant chacune données distinctes
? Unités de traitement fonctionnent de façon asynchrone
? Exemple courant : système multicoeur et multiprocesseur, supercalculateur
7- Systèmes parallèles
7.2- Organisation de la mémoire

7.2- Organisation de la mémoire


7- Systèmes parallèles
7.2- Organisation de la mémoire

Organisation de la mémoire

Plupart des ordinateurs parallèles d’usage général basés sur modèle MIMD
7- Systèmes parallèles
7.2- Organisation de la mémoire

Organisation de la mémoire

Plupart des ordinateurs parallèles d’usage général basés sur modèle MIMD
Classification d’ordinateurs MIMD selon organisation de la mémoire
. Système multi-ordinateur
? Mémoire physiquement distribuée entre processeurs
. Système multiprocesseur
? Mémoire physiquement partagée entre processeurs
. Système hybrides
? Mémoire physiquement distribuée, mais apparaît dans un espace d’adressage partagé
pour le programmeur
7- Systèmes parallèles
7.2- Organisation de la mémoire

Organisation de la mémoire

Plupart des ordinateurs parallèles d’usage général basés sur modèle MIMD
Classification d’ordinateurs MIMD selon organisation de la mémoire
. Système multi-ordinateur
? Mémoire physiquement distribuée entre processeurs
. Système multiprocesseur
? Mémoire physiquement partagée entre processeurs
. Système hybrides
? Mémoire physiquement distribuée, mais apparaît dans un espace d’adressage partagé
pour le programmeur
Distinction pour le programmeur : espace d’adresses mémoires distribué ou partagé
7- Systèmes parallèles
7.2- Organisation de la mémoire

Ordinateur à mémoire distribuée


Ordinateur à mémoire distribuée
. Chaque noeud du réseau comporte processeur et mémoire locale

. Connectivité des noeuds peut suivre topologie particulière (ex. hypercube)

. Connexion peut être point-à-point ou acheminée via des routeurs


7- Systèmes parallèles
7.2- Organisation de la mémoire

Temps de transmission
Dans système à mémoire distribué, temps de transmission des messages est important
. Bande passante
? Débit maximum des données envoyées dans un lien de communication
? Mesuré en bits/seconde (ou octets/seconde)
7- Systèmes parallèles
7.2- Organisation de la mémoire

Temps de transmission
Dans système à mémoire distribué, temps de transmission des messages est important
. Bande passante
? Débit maximum des données envoyées dans un lien de communication
? Mesuré en bits/seconde (ou octets/seconde)
. Temps de propagation
? Temps du premier bit pour traverser le canal de communication
? Généralement proportionnel à la distance physique entre émetteur et récepteur
7- Systèmes parallèles
7.2- Organisation de la mémoire

Temps de transmission
Dans système à mémoire distribué, temps de transmission des messages est important
. Bande passante
? Débit maximum des données envoyées dans un lien de communication
? Mesuré en bits/seconde (ou octets/seconde)
. Temps de propagation
? Temps du premier bit pour traverser le canal de communication
? Généralement proportionnel à la distance physique entre émetteur et récepteur
. Temps de transmission
? Temps nécessaire pour transmettre un message sur un lien réseau
? Taille du message divisée par bande passante du lien
7- Systèmes parallèles
7.2- Organisation de la mémoire

Temps de transmission
Dans système à mémoire distribué, temps de transmission des messages est important
. Bande passante
? Débit maximum des données envoyées dans un lien de communication
? Mesuré en bits/seconde (ou octets/seconde)
. Temps de propagation
? Temps du premier bit pour traverser le canal de communication
? Généralement proportionnel à la distance physique entre émetteur et récepteur
. Temps de transmission
? Temps nécessaire pour transmettre un message sur un lien réseau
? Taille du message divisée par bande passante du lien
. Latence de transport
? Temps total pour transmettre message sur un lien réseau
? Temps de transmission + temps de propagation
7- Systèmes parallèles
7.2- Organisation de la mémoire

Temps de transmission
Dans système à mémoire distribué, temps de transmission des messages est important
. Bande passante
? Débit maximum des données envoyées dans un lien de communication
? Mesuré en bits/seconde (ou octets/seconde)
. Temps de propagation
? Temps du premier bit pour traverser le canal de communication
? Généralement proportionnel à la distance physique entre émetteur et récepteur
. Temps de transmission
? Temps nécessaire pour transmettre un message sur un lien réseau
? Taille du message divisée par bande passante du lien
. Latence de transport
? Temps total pour transmettre message sur un lien réseau
? Temps de transmission + temps de propagation
. Surcoût de l’émetteur
? Temps pour préparer le message
? Calcul de checksum, ajout d’entête, algorithme de routage
7- Systèmes parallèles
7.2- Organisation de la mémoire

Temps de transmission
Dans système à mémoire distribué, temps de transmission des messages est important
. Bande passante
? Débit maximum des données envoyées dans un lien de communication
? Mesuré en bits/seconde (ou octets/seconde)
. Temps de propagation
? Temps du premier bit pour traverser le canal de communication
? Généralement proportionnel à la distance physique entre émetteur et récepteur
. Temps de transmission
? Temps nécessaire pour transmettre un message sur un lien réseau
? Taille du message divisée par bande passante du lien
. Latence de transport
? Temps total pour transmettre message sur un lien réseau
? Temps de transmission + temps de propagation
. Surcoût de l’émetteur
? Temps pour préparer le message
? Calcul de checksum, ajout d’entête, algorithme de routage
. Débit
? Bande passante effective observée par une application
7- Systèmes parallèles
7.2- Organisation de la mémoire

Mesures de performance

Latence totale :
. Osend et Orecv : surcoûts d’expédition/réception
. Tdelay : temps de propagation
. B : bande passante
. Toverhead = Tsend + Trecv : temps des surcoûts
. tB = 1/B : temps de transfert
7- Systèmes parallèles
7.2- Organisation de la mémoire

Ordinateur à mémoire partagée

Mémoire partagée : permet un espace mémoire global accessible par tous les pro-
cesseurs

. Modèle naturel pour programmeurs d’applications


? Mais techniquement complexe a implémenter au plan matériel
7- Systèmes parallèles
7.2- Organisation de la mémoire

Architecture d’ordinateur à mémoire partagée

Temps d’accès peuvent varier selon architecture


7- Systèmes parallèles
7.2- Organisation de la mémoire

Architecture d’ordinateur à mémoire partagée

Temps d’accès peuvent varier selon architecture


SMP (multiprocesseur symétrique)
7- Systèmes parallèles
7.2- Organisation de la mémoire

Architecture d’ordinateur à mémoire partagée

Temps d’accès peuvent varier selon architecture


SMP (multiprocesseur symétrique)

NUMA (accès non uniformes)


7- Systèmes parallèles
7.2- Organisation de la mémoire

Architecture d’ordinateur à mémoire partagée

CC-NUMA (accès non uniformes avec cache cohérente)


7- Systèmes parallèles
7.2- Organisation de la mémoire

Architecture d’ordinateur à mémoire partagée

CC-NUMA (accès non uniformes avec cache cohérente)

COMA (accès mémoire via cache seulement)


7- Systèmes parallèles
7.2- Organisation de la mémoire

Cache et parallélisme multithreadé

Cache : mémoire rapide et petite, entre processeur et mémoire principale


. Conserve donnée fréquemment accédée, pour éviter longs accès mémoire
. Plusieurs niveaux de caches utilisés (L1, L2, L3)
. Caches jouent rôle important dans ordinateurs parallèles à mémoire partagée
? Cohérence des caches des processeurs important
7- Systèmes parallèles
7.2- Organisation de la mémoire

Cache et parallélisme multithreadé

Cache : mémoire rapide et petite, entre processeur et mémoire principale


. Conserve donnée fréquemment accédée, pour éviter longs accès mémoire
. Plusieurs niveaux de caches utilisés (L1, L2, L3)
. Caches jouent rôle important dans ordinateurs parallèles à mémoire partagée
? Cohérence des caches des processeurs important
Parallélisme multithreadé
. Offrir plusieurs processeurs logiques (typiquement 2 processeurs logiques par coeur
physique)
. Permet meilleure exploitation des ressources du processeur
? Ex. exécuter autre thread lorsque attente pour accès mémoire ou branchement condi-
tionnel
7- Systèmes parallèles
7.3- Parallélisation d’applications

7.3- Parallélisation d’applications


7- Systèmes parallèles
7.3- Parallélisation d’applications

Parallélisation d’une application séquentielle

Décomposition des calculs


. Découper programme séquentiel en plusieurs tâches
. Limiter dépendance entre les tâches
. Compromis sur la granularité des tâches
? Granularité trop élevée : difficile à paralléliser
? Granularité trop faible : surcoût de parallélisation élevé
7- Systèmes parallèles
7.3- Parallélisation d’applications

Parallélisation d’une application séquentielle

Décomposition des calculs


. Découper programme séquentiel en plusieurs tâches
. Limiter dépendance entre les tâches
. Compromis sur la granularité des tâches
? Granularité trop élevée : difficile à paralléliser
? Granularité trop faible : surcoût de parallélisation élevé
Assignation de tâches à processus ou threads
. Ordonnancer tâches pour équilibrer la charge entre les processus
7- Systèmes parallèles
7.3- Parallélisation d’applications

Parallélisation d’une application séquentielle

Décomposition des calculs


. Découper programme séquentiel en plusieurs tâches
. Limiter dépendance entre les tâches
. Compromis sur la granularité des tâches
? Granularité trop élevée : difficile à paralléliser
? Granularité trop faible : surcoût de parallélisation élevé
Assignation de tâches à processus ou threads
. Ordonnancer tâches pour équilibrer la charge entre les processus
Association de processus à unités de traitement
. Égaliser utilisation des processeurs tout en minimisant coûts de communication
7- Systèmes parallèles
7.3- Parallélisation d’applications

Parallélisme de données

Fréquemment, une même opération appliquée à différents éléments d’une structure


de données
. Exemple : ai = bi−1 + ci , i = 1, ..., n
. Code correspondant

. Ce code peut aisément être parallélisé


7- Systèmes parallèles
7.3- Parallélisation d’applications

Parallélisme de données

Fréquemment, une même opération appliquée à différents éléments d’une structure


de données
. Exemple : ai = bi−1 + ci , i = 1, ..., n
. Code correspondant

. Ce code peut aisément être parallélisé


Ce type de programme est appelé SPMD (Single Program Multiple Data)
. Programme exécuté de façon asynchrone sur plusieurs processeurs
. Plus facile à comprendre que programmes MIMD généraux
. Capable de capturer plusieurs patrons typiques de programmation parallèle
7- Systèmes parallèles
7.3- Parallélisation d’applications

Parallélisme de boucles

Autre exemple : ai = ai−1 + ai+1 , i = 1, ..., n


. Code suivant n’est pas équivalent

. Énoncé mathématique utilise anciennes valeurs de a, mais pas boucle for


7- Systèmes parallèles
7.3- Parallélisation d’applications

Parallélisme de boucles

Autre exemple : ai = ai−1 + ai+1 , i = 1, ..., n


. Code suivant n’est pas équivalent

. Énoncé mathématique utilise anciennes valeurs de a, mais pas boucle for


Énoncé forall fait exécution dans le désordre
. Énoncé suivant équivalent à l’énoncé mathématique
7- Systèmes parallèles
7.3- Parallélisation d’applications

Modèle maître-esclave et client-serveur

Dans modèle SPMD, tous les processus sont égaux


Modèle maître-esclave : un processus contrôle tous les autres
. Maître responsable de la coordination et autres opérations uniques
7- Systèmes parallèles
7.3- Parallélisation d’applications

Modèle maître-esclave et client-serveur

Dans modèle SPMD, tous les processus sont égaux


Modèle maître-esclave : un processus contrôle tous les autres
. Maître responsable de la coordination et autres opérations uniques
Modèle client-serveur : client font requête au serveur pour obtenir données/travail
. Serveur ne contrôle pas les clients, mais agit comme point de synchronisation
7- Systèmes parallèles
7.3- Parallélisation d’applications

Bassin de tâches et modèle producteur-consommateur


Bassin de tâches : structure de données avec tâches à exécuter et complétées
. Nombre fixe de threads de traitement créés pour effectuer tâches
. Thread de traitement peut générer nouvelles tâches à la volée
. Exécution complétée lorsque bassin de tâches vide
7- Systèmes parallèles
7.3- Parallélisation d’applications

Bassin de tâches et modèle producteur-consommateur


Bassin de tâches : structure de données avec tâches à exécuter et complétées
. Nombre fixe de threads de traitement créés pour effectuer tâches
. Thread de traitement peut générer nouvelles tâches à la volée
. Exécution complétée lorsque bassin de tâches vide
Modèle producteur-consommateur : deux types de threads pour traitement parallèle
. Threads producteurs génèrent données à traiter
. Threads consommateurs traitent données
. Tampon partagé pour échange de données
7- Systèmes parallèles
7.3- Parallélisation d’applications

Distribution de données d’un tableau unidimensionnel

Distribuer données d’un tableau à plusieurs processeurs


. Plusieurs façons d’assigner les données d’un tableau
? Approche par blocs : couper données en n blocs de taille égale
7- Systèmes parallèles
7.3- Parallélisation d’applications

Distribution de données d’un tableau unidimensionnel

Distribuer données d’un tableau à plusieurs processeurs


. Plusieurs façons d’assigner les données d’un tableau
? Approche par blocs : couper données en n blocs de taille égale

? Approche cyclique : faire une distribution round-robin des données


7- Systèmes parallèles
7.3- Parallélisation d’applications

Distribution de données d’un tableau unidimensionnel

Distribuer données d’un tableau à plusieurs processeurs


. Plusieurs façons d’assigner les données d’un tableau
? Approche par blocs : couper données en n blocs de taille égale

? Approche cyclique : faire une distribution round-robin des données

? Approche bloc-cyclique : distribuer petits blocs de façon cyclique


7- Systèmes parallèles
7.3- Parallélisation d’applications

Distribution de données d’un tableau 2D

Distribution selon une dimension


7- Systèmes parallèles
7.3- Parallélisation d’applications

Distribution de données d’un tableau 2D

Distribution selon une dimension Distribution en damier


7- Systèmes parallèles
7.4- Métriques de performance

7.4- Métriques de performance


7- Systèmes parallèles
7.4- Métriques de performance

Métrique de performance de programmes parallèles

Quatre composantes du temps d’exécution parallèle Tp (n)


. Temps d’exécution des calculs locaux
. Temps pour l’échange de données entre les processeurs
. Temps pour la synchronisation des processus lors d’accès à données partagées
. Temps d’attente lors calculs ne prennent pas même temps entre processeurs
7- Systèmes parallèles
7.4- Métriques de performance

Métrique de performance de programmes parallèles

Quatre composantes du temps d’exécution parallèle Tp (n)


. Temps d’exécution des calculs locaux
. Temps pour l’échange de données entre les processeurs
. Temps pour la synchronisation des processus lors d’accès à données partagées
. Temps d’attente lors calculs ne prennent pas même temps entre processeurs
Coût d’un programme parallèle : Cp (n) = p.Tp (n)
. Coût avec une tâche de taille n sur p processeurs
. Coût Cp (n) correspond à quantité totale de travail fait sur tous les processeurs (temps-
processeur total)
. Programme parallèle est coût-optimal si coût correspond au temps du programme
séquentiel optimal correspondant, Cp (n) = T ∗ (n)
7- Systèmes parallèles
7.4- Métriques de performance

Accélération et efficience d’un programme parallèle

Accélération (speedup) : comparaison avec temps d’exécution d’un programme sé-


quentiel
T ∗ (n)
Sp (n) =
Tp (n)

. T ∗ (n) : temps d’exécution du programme séquentiel d’une tâche de taille n


. Tp (n) : temps d’exécution du programme parallèle sur p processeurs d’une tâche de
taille n
. Sp (n) ≤ p, sinon un programme séquentiel plus rapide peut être construit
. Optimalité : accélération linéaire, Sp (n) = p
7- Systèmes parallèles
7.4- Métriques de performance

Accélération et efficience d’un programme parallèle

Accélération (speedup) : comparaison avec temps d’exécution d’un programme sé-


quentiel
T ∗ (n)
Sp (n) =
Tp (n)

. T ∗ (n) : temps d’exécution du programme séquentiel d’une tâche de taille n


. Tp (n) : temps d’exécution du programme parallèle sur p processeurs d’une tâche de
taille n
. Sp (n) ≤ p, sinon un programme séquentiel plus rapide peut être construit
. Optimalité : accélération linéaire, Sp (n) = p
T ∗ (n) Sp (n) T ∗ (n)
Efficience : Ep (n) = Cp (n) = p = p.Tp (n)
. Fraction du temps où processeur est utilisé pour calculs utiles
. Avec accélération linéaire (Sp (n) = p), efficience Ep (n) = 1
7- Systèmes parallèles
7.4- Métriques de performance

Loi d’Amdahl
Loi d’Amdahl : accélération possible selon partie parallélisable d’un programme

T ∗ (n) 1 1
Sp (n) = ∗ 1−f ∗
= 1−f

f .T (n) + p T (n) f + p f

. f : fraction du programme parallèle qui doit être exécutée séquentiellement


. Temps d’exécution séquentiel : f .T ∗ (n)
. Temps d’exécution parallèle : (1 − f ).T ∗ (n)
. Suppose partie parallèle parfaitement distribuée sur p processeurs
. Suppose partie séquentielle exécutée sur un seul processeur
7- Systèmes parallèles
7.4- Métriques de performance

Loi d’Amdahl
Loi d’Amdahl : accélération possible selon partie parallélisable d’un programme

T ∗ (n) 1 1
Sp (n) = ∗ 1−f ∗
= 1−f

f .T (n) + p T (n) f + p f

. f : fraction du programme parallèle qui doit être exécutée séquentiellement


. Temps d’exécution séquentiel : f .T ∗ (n)
. Temps d’exécution parallèle : (1 − f ).T ∗ (n)
. Suppose partie parallèle parfaitement distribuée sur p processeurs
. Suppose partie séquentielle exécutée sur un seul processeur
Exemple : programme parallèle dont 20% (f = 0, 2) doit être exécuté séquentiellement
. Avec p = 2 processeurs, accélération de 1/(0, 2 + ((1 − 0, 2)/2) = 1, 667
. Avec p = 5, accélération de 1/(0, 2 + ((1 − 0, 2)/5) = 2, 778
. Avec p = 50, accélération de 1/(0, 2 + ((1 − 0, 2)/50) = 4, 62
. Accélération maximale de 1/f = 5
7- Systèmes parallèles
7.4- Métriques de performance

Loi de Gustafson

Loi de Gustafson : accélération ajustée selon taille du problème

τf + τv (n, 1)
Sp (n) =
τf + τv (n, p)

. τf : temps d’exécution constant de partie séquentielle


. τv (n, p) : temps d’exécution de partie parallèle pour problème de taille n avec p
processeurs
7- Systèmes parallèles
7.4- Métriques de performance

Loi de Gustafson

Loi de Gustafson : accélération ajustée selon taille du problème

τf + τv (n, 1)
Sp (n) =
τf + τv (n, p)

. τf : temps d’exécution constant de partie séquentielle


. τv (n, p) : temps d’exécution de partie parallèle pour problème de taille n avec p
processeurs
Lorsque programme parfaitement parallélisable
. Alors,τv (n, 1) = T ∗ (1) − τf et τv (n, p) = (T ∗ (n) − τf ) /p
τf
τf +T ∗ (n)−τf T ∗ (n)−τf
+1
. Ce qui donne : Sp (n) = τf +(T ∗ (n)−τf )/p = τf
+ p1
T ∗ (n)−τf

. Et donc : lim Sp (n) = p


n→∞
7- Systèmes parallèles
7.4- Métriques de performance

Calcul matriciel
Produit d’une matrice avec
(a ,un vecteur
b) 1
.
. Orienté lignes :A.b =  . 
.
(an , b)
? (a, b) : produit scalaire des deux vecteurs
? Algorithme équivalent en C

? Exécution parallèle surP


p processeurs, traitant chacun n/p lignes
m
. Orienté colonnes : A.b = ba
j=1 j j
? Algorithme équivalent en C

? Exécution parallèle sur p processeurs, traitant chacun m/p colonnes


7- Systèmes parallèles
7.4- Métriques de performance

Calcul du temps parallèle


Calcul du temps parallèle avec produit d’une matrice et d’un vecteur
. Hypothése de départ : A ∈ Rn×n , b ∈ Rn , n est un facteur de p, r = n/p et α est temps
d’une opération arithmétique
P n
. Orienté colonnes : ci = j=1
aij .bj
? Processeur Pk traite lignes i = r (k − 1), ..., r .k
? Requiert n multiplications et n − 1 additions par ligne, pour n lignes
2
? Temps d’exécution total de 2 np α
Prk
. Orienté colonne : dki = a .b , i = 1, ..., n
l=r (k−1)+1 il l
? Processeur Pk traite colonnes j = r (k − 1) + 1, ..., r .k, soit sommes partielles dk1 , ..., dkn
? Calcul d’un dki requiert r multiplications et r − 1 additions
2
? Temps d’exécution total de 2 np α opérations pour n valeurs de dki
. Temps de traitement sur p processeurs
2n2 2n2
 
n
Tp (n) = α+p β+ γ = α + p.β + n.γ
p p p

? Temps de communication de p (β + r .γ), où β + r .γ est temps de transmission d’un message


de taille r = n/p
7- Systèmes parallèles
7.4- Métriques de performance

Nombre optimal de processeurs

Calculer nombre optimal de processeurs


. Optimum à ∂T∂pp (n)
=0

2n2 α
 
∂Tp (n) ∂ 2n2
= α + p.β + n.γ =− +β
∂p ∂p p p2
p
. Donc p ∗ = n 2α/β
2
. Comme ∂ ∂p Tp (n)
2 > 0, p ∗ est un minimum de Tp (n)
. Nombre optimal de processeurs augmente linéairement avec taille du problème n
7- Systèmes parallèles
7.4- Métriques de performance

Conclusion

Systèmes parallèles sont omniprésents


. À différentes échelles, de l’embarqué à l’infonuagique
. Base conceptuelle présentée aujourd’hui, beaucoup à explorer
7- Systèmes parallèles
7.4- Métriques de performance

Conclusion

Systèmes parallèles sont omniprésents


. À différentes échelles, de l’embarqué à l’infonuagique
. Base conceptuelle présentée aujourd’hui, beaucoup à explorer
Référence utilisée pour le cours d’aujourd’hui
T. Rauber et G. Runger. Parallel Programming. Springer, 2010.
Accessible via le web :
http ://dx.doi.org/10.1007/978-3-642-04818-0
7- Systèmes parallèles
7.4- Métriques de performance

Fin de Séance
Vos Questions ?

Vous aimerez peut-être aussi