Vous êtes sur la page 1sur 92

Programmation Parallèle et Distribuée

Pr. Salma AZZOUZI


Objectifs

• Maîtriser les technologies et méthodes d’analyse à


mettre en œuvre pour écrire des logiciels fonctionnant
en environnement distribué ou parallélisé.
• Présenter les principales technologies utilisées dans
les projets de calculs ou de traitements de données
distribués.
• Détailler Les contraintes de développement afin
d’acquérir de nouvelles méthodes d’analyse et de
développement, requises dans le cadre de la
programmation distribuée ou parallélisée.
Plan

• Introduction et concepts de base

• Architectures parallèles

• Modèles de programmation parallèles

• Analyse de performances de programmes


parallèles

• Langages et environnement parallèles

• Applications
Introduction aux concepts de bases

• Le besoin de calculs scientifiques est


continuellement croissant.

• Les problèmes étudiés sont de plus en plus


complexes tant au niveau des méthodes numériques
qu’au niveau des outils informatiques utilisés.

• Les simulations (précises ou de problèmes


complexes) nécessite de plus en plus de puissance
de calcul et d’espace mémoire.
Introduction aux concepts de bases
• Il s’agit de simulations basées sur des modèles
mathématiques complexes.

• Exemples de simulations :

– L’évolution du climat ou des phénomènes de


crues (Prévisions météorologiques) ;

– le développement d’intelligences artificielles,


fortes consommatrices de traitements
numériques et de calculs.
– ………..
Introduction aux concepts de bases
• La puissance de calcul est la clef de voûte de la
modélisation du climat.

• Depuis l’origine, cette science a suivi les progrès de


l’informatique et en a largement bénéficié.

• Symétriquement, en tant qu’utilisatrice des


supercalculateurs les plus puissants au monde, elle a
longtemps contribué à leur développement.

Prévisions météorologiques
Introduction aux concepts de bases
• La puissance de calcul nécessaire pour les
algorithmes d'intelligence artificielle double tous les
3,4 mois, selon [OpenAI].

• Entre 1959 et 2012, cette progression suivait la loi


de Moore la puissance double tous les deux ans.

• Les cœurs actuels ont une puissance 20 fois


inférieures à la prédiction de la loi de Moore et avec
l'émergence des réseaux neuronaux modernes en
2012, la puissance de calcul a été multipliée par
300.000, soit un taux de progression sept fois plus
rapide.

Le développement d’intelligences artificielles


la progression exponentielle de la puissance de calcul nécessaire pour
entraîner les algorithmes d’intelligence artificielle [OpenAI]

Le développement d’intelligences artificielles


Introduction aux concepts de bases
• La puissance de calcul nécessaire pour les
algorithmes d'intelligence artificielle double tous les
3,4 mois, selon [OpenAI].

• Entre 1959 et 2012, cette progression suivait la loi


de Moore la puissance double tous les deux ans.

• Les cœurs actuels ont une puissance 20 fois


inférieures à la prédiction de la loi de Moore et avec
l'émergence des réseaux neuronaux modernes en
2012, la puissance de calcul a été multipliée par
300.000, soit un taux de progression sept fois plus
rapide.

Le développement d’intelligences artificielles


Introduction aux concepts de bases
• Les problèmes étudiés sont de plus en plus
complexes tant au niveau des méthodes numériques
qu’au niveau des outils informatiques utilisés.
– Simulation numérique :
• Trop grandes : météorologie;
• Trop petites : biologie, matériaux;
• Trop dangereuses : maintenance nucléaire;
• Trop coûteuses : crash-tests, conception aéronautique;
• Impossibles à réaliser en réalité : climat, astrophysique.
– Serveurs de calcul : « on demand computing »;
– Réalité virtuelle ou augmentée : médias, médical
Introduction aux concepts de bases
• Les problèmes étudiés sont de plus en plus
complexes tant au niveau des méthodes numériques
qu’au niveau des outils informatiques utilisés.

• la fréquence des horloges qui viennent rythmer le


travail du microprocesseur, et donc impacter la
vitesse de traitement, a atteint des limites
difficilement franchissables.

les codes de calcul nécessitent un fort parallélisme


Introduction aux concepts de bases
• Pour permettre une augmentation des puissances
de calcul, les microprocesseurs contiennent depuis
quelques années plusieurs cœurs, chacun pouvant
réaliser un traitement élémentaire, parallèlement
aux autres et ce, dans le même cycle d’horloge.

Le calcul haute performance


HPC ( high performance computing )

Utilisation du Parallélisme
Introduction aux concepts de bases

• Le HPC consiste à associer un grand nombre de


processeurs ( de plusieurs milliers à plusieurs
millions) pour construire des architectures de calcul
en parallèle et diminuer les temps de calcul.

• C’est ainsi que les traitements informatisés,


longtemps centralisés sur une seule unité de calcul,
sont maintenant parallélisés sur plusieurs nœuds ;
qu’ils soient des cœurs d’un même processeur ou
des ordinateurs communiquant par l’intermédiaire
d’un réseau.

Utilisation du Parallélisme
Les besoins en performance[Koudil]

Le développement d’intelligences artificielles


Architecture du calcul Parallèle
• Le calcul parallèle ne peut avoir lieu que sur des
plateformes de calcul Parallèle. Parmi les
plateformes de calcul parallèle actuelles, on
distingue :

– Les machines Multicœurs


– Les supercalculateurs
– Autres plateformes parallèles: peuvent être élaborées
en faisant collaborer des ordinateurs ordinaires
interconnectés, telles que
• Les clusters de calcul (OCCIGEN, Turing, Muse)
• Les grilles (France Grille)
• Les accélérateurs (XeonPhi, GPU)
• ……

Architecture du calcul Parallèle


Architecture du calcul Parallèle
• Un processeur multi-cœur est composé de deux ou
plusieurs cœurs (Unités de calcul) indépendants
gravés sur la même puce, chacun étant capable de
traiter des instructions individuellement.
• Largement disponibles à des coûts de plus en plus
faibles.

Circuit intégré (die) du processeur Intel Core i7

Les machines Multi-cœurs


Architecture du calcul Parallèle
• La science des superordinateurs est appelée « »
(en anglais : high-performance computing ou HPC).

• Cette discipline se divise en deux : la


partie matérielle (conception électronique de l'outil
de calcul) et la partie logicielle (adaptation logicielle
du calcul à l'outil). Ces deux parties font appel à des
champs de connaissances différents.

Les supercalculateurs
Architecture du calcul Parallèle

• Un superordinateur ou supercalculateur est


un ordinateur conçu pour atteindre les plus hautes
performances(calcul haute performance)possibles
avec les techniques connues lors de sa conception,
en particulier en ce qui concerne la vitesse de calcul.

• Pour des raisons de performance, c'est presque


toujours un ordinateur central, dont les tâches sont
fournies en traitement par lots.

Les supercalculateurs
Architecture du calcul Parallèle

• occupe l’équivalent de deux terrains


de basket;
• 148,6 pétaflops,
• 2,41 millions de cœurs;
• la machine la plus économe en
énergie;
• la recherche de variants génétiques
dans la population liés à des
maladies, la simulation de
tremblements de terre en milieu
urbain, l’étude d’événements
météorologiques extrêmes, l’étude
des matériaux à l’échelle atomique
ou l’explosion des supernovas, ……

SUMMIT, laboratoire national d’Oak Ridge (États-unis)

Les supercalculateurs
Architecture du calcul Parallèle

• 94,6 pétaflops,
• la recherche militaire, plus
spécifiquement à la simulation
d’armes nucléaires,

SIERRA, laboratoire national lawrence Livermore


(États-unis)

Les supercalculateurs
Architecture du calcul Parallèle
• 93 pétaflops;
• 10 millions de processeurs.

SUNWAY TAIHULIGHT, centre national de calcul intensif


(Wuxi, Chine)

Les supercalculateurs
Architecture du calcul Parallèle

• Le projet Top 500 fait une classification des 500


supercalculateurs les plus performants dans le
monde.

• Ces machines ne sont généralement pas à la portée


de tout le monde.

Les supercalculateurs
Architecture du calcul Parallèle
• Le calcul parallèle ne peut avoir lieu que sur des
plateformes de calcul Parallèle. Parmi les
plateformes de calcul parallèle actuelles, on
distingue :

– Les machines Multicœurs


– Les supercalculateurs
– Autres plateformes parallèles: peuvent être élaborées
en faisant collaborer des ordinateurs ordinaires
interconnectés, telles que
• Les clusters de calcul (OCCIGEN, Turing, Muse)
• Les grilles (France Grille)
• Les accélérateurs (XeonPhi, GPU)
• ……

Architecture du calcul Parallèle


Architecture du calcul Parallèle

• Un cluster, ferme de calcul ou bien grappe de


serveurs en français, est ensemble d’ordinateurs
reliées au sein d’un réseau local permettant de
dépasser les limitations d'une machines en terme de
puissance de calcul;

• La théorie est apparue dans les années 70 mais le


premier cluster fonctionnel est apparu dans le milieu
des années 80 sous le nom de VAXCluster;

Les clusters de calcul


Architecture du calcul Parallèle
Les objectifs des clusters sont:
– Faciliter la montée en charge;
– Augmenter la disponibilité;
– Permettre une répartition de la charge;
– Diminuer les temps de calculs;
– Réaliser opérations non réalisables sur un
serveur;
– Réduire les coûts : prix / performance d’une
grappe de PC est de 3 à 10 fois inférieur à
celui des supercalculateurs traditionnels.

Les clusters de calcul


Architecture du calcul Parallèle
• La demande de puissance de calcul est tellement
forte que parallèment au clustering s'est développé
le Grid Computing.

• Les grilles de calcul sont des agrégations de


ressources de calcul hétérogènes et distribuées sur
des sites distants.

Grid Computing/ Grilles de Calcul


Architecture du calcul Parallèle
• La demande de puissance de calcul est
tellement forte que parallèment au clustering
s'est développé le Grid Computing.

• Les grilles de calcul sont des agrégations de


ressources de calcul hétérogènes et distribuées
sur des sites distants.

• Ces deux technologies, bien qu'ayant un but


commun, diffèrent sur de nombreux points.

Grid Computing/ Grilles de Calcul


Architecture du calcul Parallèle
Cluster Grid Computing
Sécurité Isolé du réseau par un Sécurité des clients difficiles à gérer
firewall
Structure Le plus homogène Hétérogène
possible
Coût Très élevé Peu élevé
Priorité Vitesse de calcul Volume de calcul
Données Dépendantes Indépendantes

Durée Déterminable Inconnue


de calcul

LocalisatiUn seul site Répartie


on

Clustering VS Grid Computing


Architecture du calcul Parallèle
• Parallèlement au développement de la technologie des
CPUs (Central Processing Units), les ordinateurs
personnels ont commencé à se doter d’accélérateurs
graphiques GPU (Graphics Processing Units) afin
d’améliorer l’affichage et la fluidité des systèmes
d’exploitation graphiques.

• En plus, la demande de graphisme en 3D s’est accrue


dans le monde de l’informatique personnelle (jeux
vidéos) et a poussé des sociétés comme NVIDIA, ATI
Technology et 3dfx Interactive à commencer de
produire des accélérateurs graphiques à des prix
suffisamment abordables pour intéresser le grand
publique.

Accélérateurs graphiques GPU


Architecture du calcul Parallèle

• L’évolution de la technologie GPU a permis aux


développeurs de contrôler et de de programmer les
traitement effectués sur leur GPU;

• Ceci a déclenché de nombreuses recherches sur la


possibilité d’utiliser les circuits graphiques pour autre
chose qu’un affichage graphique OpenGL ou DirectX.

• L’idée c’est de pouvoir utiliser le GPU pour exécuter


des traitements généraux, où ce qui est connu sous le
nom de GPGPU (General-Purpose Computing on
Graphics Processing Units).

Accélérateurs graphiques GPU


Architecture du calcul Parallèle
• Les Processeurs graphiques (GPUGPU) modernes
contiennent des milliers de cœurs ( 5210 cœurs dans la
Tesla V100)

Accélérateurs graphiques GPU


Architecture du calcul Parallèle
• La technologie GPGPU est aujourd’hui capables de
beaucoup plus que des calculs de pixels dans les jeux
vidéo. Elle exploite la puissance de calcul des GPUs
pour le traitement des tâches massivement parallèles.

• Contrairement à un CPU, un GPU n’est pas adapté à


un traitement rapide de tâches qui s’exécutent
séquentiellement. En revanche, il convient très bien au
traitement d’algorithmes parallélisables.

• Ainsi, le calcul par le GPU consiste à utiliser la carte


graphique en parallèle du CPU pour accélérer des
applications professionnelles en répartissant les
portions de code les plus lourdes sur le GPU, le reste
de l'application restant affecté au CPU.
Accélérateurs graphiques GPU
Conception d’algorithmes parallèles
• Pour pouvoir exploiter les plateformes de calcul
parallèle actuelles, le traitement (calcul) à exécuter doit
être partitionné en plusieurs parties qui seront affectées
aux différentes ressources parallèles.

• Les différentes parties d’un calcul doivent être


indépendantes chacune de l’autre.

• L’algorithme implémenté doit donc fournir assez de


calculs indépendants pour qu’il soit convenable à une
exécution parallèle.

Conception d’algorithmes parallèles


Conception d’algorithmes parallèles
• Problème : comment concevoir un tel algorithme ? et
comment savoir si deux parties d’un calcul sont
indépendantes ou non ?!!

• Solution : repenser en parallèle et utiliser des


techniques de parallélisation (analyse de
dépendances).

Changer le paradigme de programmation

Conception d’algorithmes parallèles


Conception d’algorithmes parallèles

• Paradigme scientifique est un modèle épistémique


qui fait autorité et regroupe les chercheurs pour un
temps, puis sera remplacé par un autre à la suite
d'une révolution scientifique. Une telle révolution
change profondément les manières de voir le
Monde;

• Paradigme de programmation ≈ Façon d’aborder un


problème de programmation, à l’aide de langages
qui supportent bien certains mécanismes
d’abstraction et de modularité,

Paradigme de programmation
Conception d’algorithmes parallèles

• Paradigme de programmation ≈ Façon d’aborder un


problème de programmation, à l’aide de langages
qui supportent bien certains mécanismes
d’abstraction et de modularité,
Impératif Déclaratif
Procédurale Objet Fonctionnel Autre
c Java sql
C++

Paradigme procédural Appel procédure/fonction


Paradigme objet objets / classes
Paradigme fonctionnel Valeurs et fonctions mathématiques

Paradigme de programmation
Conception d’algorithmes parallèles

« Si le marteau est le seul outil


que vous avez, vous voyez des
clous partout !»
Abraham Maslow (The Psychology of
Science, 1966)

Paradigme de programmation
Conception d’algorithmes parallèles

« Si le marteau est le
seul outil que vous
avez, vous voyez des
clous partout !»
Abraham Maslow (The
Psychology of
Science, 1966)

Cours de Programmation concurrente et parallèle par Guy Tremblay

Paradigme de programmation
Conception d’algorithmes parallèles

Changer de paradigme

Changer d’outils

Cours de Programmation concurrente et parallèle par Guy Tremblay

Paradigme de programmation
Conception d’algorithmes parallèles
• Problème : On veut trouver la valeur maximum
parmi une séquence (un tableau) d’éléments

1- Quel est le temps d’exécution asymptotique pour un tableau de


longueur n ?
2- Est-il possible de faire mieux ? Si oui, comment ?

Paradigme de programmation
Conception d’algorithmes parallèles
• Problème : On veut trouver la valeur maximum
parmi une séquence (un tableau) d’éléments

1- Quel est le temps d’exécution asymptotique pour un tableau de


longueur n ?
2- Est-il possible de faire mieux ? Si oui, comment ?

Paradigme de programmation
Conception d’algorithmes parallèles
• Problème : On veut trouver la valeur maximum
parmi une séquence (un tableau) d’éléments

1- Quel est le temps d’exécution asymptotique pour un tableau de


longueur n ?
2- Est-il possible de faire mieux ? Si oui, comment ?

Paradigme de programmation
Conception d’algorithmes parallèles

Penser en parallèle

1- Quel est le temps d’exécution asymptotique pour un tableau de


longueur n ?
Conception d’algorithmes parallèles

• La première étape de la programmation parallèle


est la conception d’un algorithme ou programme
parallèle pour une application donnée;

• Pour paralléliser un travail, il faut avant tout le


décomposer en un certain nombre de tâches
pouvant s'exécuter en parallèle.
Conception d’algorithmes parallèles

• La quantité de calcul qu’effectuent les tâches (taille


de tâches en termes du nombre d’instructions) est
importante

La granularité des tâches


Ordonnancement de tâches
• Les tâches d’une application sont programmées
dans un langage ou environnement parallèle et sont
assignées à des processus ou threads afin de
déterminer l’ordre dans lequel elles seront
exécutées ;

Ordonnancement (Scheduling)
Affectation des tâches
• Les tâches d’une application sont programmées
dans un langage ou environnement parallèle et sont
assignées à des processus (threads);

• Les processus(threads)sont ensuite assignés à


des unités de calcul ((processeurs ou cœurs)
physiques pour être exécutés .

Affectation (Mapping))
Dépendances des tâches
• Les tâches d’une application peuvent être
indépendantes, mais elles peuvent aussi être
dépendantes les unes des autres.

– La dépendance de données lorsqu’une tâche a besoin


d’une donnée produite par une autre.
– La dépendance de contrôle lorsque l’exécution d’une
tâche dépend du résultat de l’exécution d’une autre.
Dépendances des tâches
• Les tâches d’une application peuvent être
indépendantes, mais elles peuvent aussi être
dépendantes les unes des autres.

– La dépendance de données lorsqu’une tâche a besoin


d’une donnée produite par une autre.
– La dépendance de contrôle lorsque l’exécution d’une
tâche dépend du résultat de l’exécution d’une autre.
Dépendances des tâches
• Les dépendances entre les tâches sont donc des
contraintes pour l’ordonnancement.

Les programmes parallèles ont besoin de


synchronisation et de coordination de processus et
threads pour s’exécuter correctement
(Problèmes de contrôlabilité )
Dépendances des tâches
• La synchronisation et de coordination dépend de
la façon dont les informations sont échangées entre
les processus(threads).

dépend de

L’organisation de la mémoire du hardware


Organisation mémoire
• On distingue entre les machines à mémoire
partagée et celles à mémoire distribuée
Organisation mémoire
• Une unique machine.

• Tous les processus partagent le même espace mémoire( Cela


semble facile à programmer car on n'a pas à se soucier de ce que
chaque processus peut voir) .

• L’échange d’information entre threads se fait moyennant des


variables partagées écrites par un thread et lues par un autre thread.
cpu M
é
cpu
m
cpu o
i
cpu r
e
cpu

Mémoire Partagée
Organisation mémoire
Inconvénient:
• Il faut gérer dans le code les accès concurrents en mémoire
ce qui est complexe (coordination des accès aux données
partagées- Synchronisation des threads)

• On a de grandes pertes de performances si les données ne


sont pas bien gérées, c'est en fait très compliqué.

cpu M
é
cpu
m
cpu o
i
cpu r
e
cpu

Mémoire Partagée
Organisation mémoire
• Chaque processus est indépendant en mémoire;

• Il faut gérer la distribution des données aux différents


processus;

• Il faut éventuellement introduire des communications


pour échanger des informations utiles entre processus.

cpu Mémoire cpu Mémoire

Réseau

cpu Mémoire cpu Mémoire

Mémoire Répartie
Organisation mémoire
Inconvénient

• Le travail semble plus important, mais il est en réalité


moins complexe dans des programmes de taille
importante

cpu Mémoire cpu Mémoire

Réseau

cpu Mémoire cpu Mémoire

Mémoire Répartie
Organisation mémoire

• On mélange la programmation sur architecture à


mémoire partagée et distribuée !

cpu M cpu M
é é
cpu m cpu m
o o
cpu i cpu i
r r
cpu e cpu e

Réseau
M cpu M
cpu é é
cpu m cpu m
o o
cpu i cpu i
r r
cpu e cpu e

Mémoire Hybride
Organisation mémoire
Inconvénient

• C’est encore très compliqué

cpu M cpu M
é é
cpu m cpu m
o o
cpu i cpu i
r r
cpu e cpu e

Réseau
M cpu M
cpu é é
cpu m cpu m
o o
cpu i cpu i
r r
cpu e cpu e

Mémoire Hybride
Organisation mémoire
• Un mécanisme de protection, ou plutôt de synchronisation est couramment
utilisé dans les applications parallèles.

Barrière de synchronisation

• Dans ce cas, tous les processus ou threads doivent attendre à une barrière
de synchronisation jusqu’à ce que tous les autres processus ou threads
atteignent cette barrière.

Wait Wait
Barrière de Synchronisation

Barrière de synchronisation
Organisation mémoire

• Les processus ou threads continuent à exécuter le code situé après la


barrière seulement s’ils ont tous terminé d’exécuter le code situé avant la
barrière.

Wait Wait
Barrière de Synchronisation

Barrière de synchronisation
Mesures de performance
• Temps d’exécution (Tp): le temps écoulé entre le début de
l’exécution de l’application sur le premier processeur. et la fin
de son exécution sur tous les processeurs. (il doit être
inférieur au temps séquentiel sur un seul processeur (Ts))

Tp = max (Tjcalculs +Tjéchange +Tjattente )

• Téchange: le temps d’échange d’information ou de


synchronisation.
• Tattente : le temps d’inactivité pendant lequel le processeur ne
peut faire rien d’utile mais attend un certain événement,

Temps d’exécution parallèle


Mesures de performance
• Exemple: : Somme de n valeurs sur p processeurs (n=p)

T : temps pour une somme ;


C : temps pour une communication.

Tp = (T + C) log2(p)

Temps d’exécution parallèle


Mesures de performance
• Exemple: : Somme de n valeurs sur p processeurs (n/p valeurs par processeur (n>>p))

T : temps pour une somme ;


C : temps pour une communication

𝑛
𝑇𝑝 = ∗ 𝑇 + 𝑇 + 𝐶 ∗ 𝑙𝑜𝑔2 (𝑝)
𝑝

On a,

𝑇𝑠 =𝑛 ∗ 𝑇

Temps d’exécution parallèle


Mesures de performance
• Facteur d’accélération Sp (speed up) :
Le rapport entre le temps d’exécution de l’algorithme
séquentiel Ts et le temps d’exécution de l’algorithme
parallèle sur p processeurs.

𝑇𝑠
𝑆𝑝 = , 𝑎𝑣𝑒𝑐
𝑇𝑝

• p est le nombre de processeurs;


• Ts est le temps d’exécution de l’algorithme séquentiel;
• Tp est le temps d’exécution de l’algorithme parallèle
sur p processeurs.

Facteur d’Accélération
Mesures de performance
• Exemple: : Somme de n valeurs sur p processeurs (n/p valeurs par processeur (n>>p))

T : temps pour une somme ;


C : temps pour une communication

𝑛
𝑇𝑝 = ∗ 𝑇 + 𝑇 + 𝐶 ∗ 𝑙𝑜𝑔2 (𝑝)
𝑝

On a,

𝑇𝑠 =𝑛 ∗ 𝑇

Alors
𝑝
𝑆𝑝 =
𝐶 𝑝
1 + 1 + 𝑇 ∗ 𝑛 ∗ 𝑙𝑜𝑔2 (𝑝)

Temps d’exécution parallèle


Mesures de performance
• Facteur d’accélération Sp (speed up) :
𝑇𝑠
𝑆𝑝 =
𝑇𝑝

• On dit que l’accélération est linéaire ou idéale lorsque Sp = p;

• L’accélération est dite absolue si Ts est le meilleure temps


d’exécution de l’algorithme séquentiel;

• L’accélération est dite relative si Ts est le temps d’exécution


du même algorithme parallèle sur un seul processeur (c’est le
cas par défaut).

Facteur d’Accélération
Mesures de performance
• Facteur d’accélération Sp (speed up) :
𝑇𝑠
𝑆𝑝 =
𝑇𝑝
𝑺𝒑 𝑺𝒑 = p
• Sp < 1 : on ralentit !
mauvaise parallélisation;

• 1 < Sp < P : “normal” ;

• P<Sp : hyper-accélération
analyser & justifier

Facteur d’Accélération
Mesures de performance

• Le pourcentage d’accélération

( 𝑇𝑃 −𝑇𝑆 )
𝑐𝑝𝑡 = ∗ 100�
𝑇𝑠

• qui sera négatif si la version Parallèle est effectivement


plus efficace que la version de Séquentielle

Pourcentage d’Accélération
Mesures de performance

• Le pourcentage d’accélération
Exemple ( Ts = 100)
• �
Tp 100 90 80 70 60 50 40 30 20 10

Accélération(Sp) 1.00 1.11 1.25 1.43 1.67 2.00 2.50 3.33 5.00 10.00

Pourcentage(pct) 0% -10% -20% -30% -40% -50% -60% -70% -80% -90%

Pourcentage d’Accélération
Mesures de performance
• Efficacité (Efficience)
• Le rapport entre le facteur d’accélération et le nombre de
processeurs:

𝑆𝑝 𝑇𝑆
𝐸𝑃 = =
𝑝 𝑃∗𝑇𝑝

• C’est une valeur entre 0 et 1 qui estime combien les


processeurs sont bien utilisés pour la résolution du
problème, comparé à combien de temps est perdu dans la
communication et la synchronisation.

Efficacité
Mesures de performance
• Efficacité (Efficience)
𝑆𝑝 𝑇𝑆
𝐸𝑃 = =
𝑝 𝑃∗𝑇𝑝
• Les algorithmes s’exécutant avec une accélération linéaire
ou sur un seul processeur ont une efficacité égale à 1.

• Les algorithmes difficiles à paralléliser ont une efficience


1
telle que : 𝐸𝑃 = ;
log(𝑝)

• Dans ce cas, plus le nombre de processeurs est grand plus


l’efficience est proche de zéro.

Efficacité
Mesures de performance
• Efficacité (Efficience)
• Exemple
• Considérons une matrice d’ordre n et supposons que le traitement d’un
élément prend c secondes (exemple : traitement d’image)
• Soit T(n,p) le temps d’exécution d’une matrice d’ordre n en utilisant p
processeurs

Efficacité
Mesures de performance
• Efficacité (Efficience)
• Exemple
• Soit T(n,p) le temps d’exécution d’une matrice d’ordre n en utilisant p
processeurs

Ts = t(n,1) = c*n2
• En négligeant les temps de communication

Tp= t(n,9) = t(n/3,1) = c* n2 /9

𝑆𝑝 = Ts/Tp = 9 et Ep = 𝑆𝑝 /9 = 1

Efficacité
Mesures de performance
• Efficacité (Efficience)
𝑆𝑝 𝑇𝑆
𝐸𝑃 = =
𝑝 𝑃 ∗ 𝑇𝑝
• En général 1 ≤ 𝑆𝑝 ≤ p et 𝐸𝑃 ≤ 1 si 𝑆𝑝 > p alors il s’agit d’une
sur-accélération
Mesures de performance
• Le travail (work) (Efficience)

𝑾𝑃 = 𝒑 ∗ 𝑻𝒑 p p

Temps exécution

Optimal si la surface
du rectangle vaut T s

p
Nombre de processeurs
Mesures de performance
• Le travail (work) (Efficience)

𝑾𝑃 = 𝒑 ∗ 𝑻𝒑 p p

Temps exécution

Optimal si la surface
du rectangle vaut T s

p
Nombre de processeurs
LES DIFFÉRENTS TYPES DE PARALLÉLISATION

• Les méthodes de parallélisation


– Le calcul réparti
– Le calcul en mémoire partagée (Multithread)
– Le calcul en mémoire distribuée (MPI)
Plan

• Introduction et concepts de base

• Architectures parallèles

• Modèles de programmation parallèles

• Analyse de performances de programmes


parallèles

• Langages et environnement parallèles

• Applications
Architectures Parallèles

• Machines parallèles Machines avec plusieurs


processeurs travaillant en parallèle.

• Principe de base Obtenir une grande puissance de


calcul par l'utilisation d'un grand nombre de processeurs
standards de faible coût.
Architectures Parallèles

• Les architectures parallèles sont caractérisées par :


• Espace mémoire étendu;

• Plusieurs processeurs;

• Traitement partiel indépendant;

•Accélération des calculs complexes ou coûteux en temps


d'occupation CPU;

• Calcul parallèle répétitif sur un large ensemble de données structuré.


Architectures Parallèles

Nombre de Flux
de données
Un seul Plusieurs

Nombre de Flux Un seul SISD SIMD


d’instructions Plusieurs MISD MIMD

Classification de Flynn
Architectures Parallèles: Classification de Flynn

• SISD est identique à l’architecture de Von-Neumann


avec un processeur unique qui exécute un seul flux
d’instructions pour opérer sur une donnée stockée dans
une mémoire unique
Adresse et Contrôle
Mémoire

Données Instructions

Unité Arithmétique Contrôle Unité de


et Logique (UAL) Contrôle (UC)

Statuts

Architecture SISD
Architectures Parallèles: Classification de Flynn

• Un ordinateur de type SISD peut éventuellement avoir


plusieurs unités fonctionnelles de traitement, mais elles
sont dirigées par une seule unité de contrôle.

Load A
Load B
C=A + B

time
Sore C
A=B * 2
Store A

Architecture SISD
Architectures Parallèles: Classification de Flynn

• SIMD est une architecture dont toutes les unités de


traitement exécutent le même flux d’instructions qui
opèrent sur des flux de données différents.
FD

ML1
UT1

Avec:

FI UC: Unité de Contrôle


FD
UC

UT2

ML2
UT : Unité de traitement
ML: Mémoire Locale
FI : Flux d’instructions
FD : Flux de données
FD
MLn
UTn

Architecture SIMD
Architectures Parallèles: Classification de Flynn

• Une machine SIMD est une machine qui exécute à tout


instant une seule instruction, mais qui agit en parallèle sur
plusieurs données parallélisme de données

Previous instr Previous instr Previous instr


Load A(1) Load A(2) Load A(n)
Load B(1) Load B(2) Load B(n)

time
C(1) =A(1) + B(1) C(2) =A(2) + B(2) C(n) =A(n) + B(n)
Sore C(1) Sore C(2) Sore C(n)
Next instr Next instr Next instr

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD

D1,D2, FD D5,D6,
D3,D4 D7,D8 Étape 1:

FI L’unité de contrôle divise les


UC

nombres en 4 sous-ensembles, un
seul ensemble par processeur.

D9,D10, FD D13,D14,
D11,D12 D15,D16

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD

SP1=Somme( SP2=Somme(
D1,D2,D3,D4) D5,D6,D7,D8) Étape 2:

Calcul des sommes


FI partielles sur les
UC

processeurs individuels;
calcul sériel sur chaque
SP3=Somme( SP4=Somme( unité
D9,D10,D11,D12) D13,D14,D15,D16)

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD
Étape 3:
SP5=SP1+SP3 SP6=SP2+SP4
• La moitié des processeurs
envoie les données,
FI • l’autre moitié les reçoit et
UC

effectue une addition.


• Le réseau d’interconnexion
est utilisé pour communiquer
SP3 SP4
les données

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Addition de 16 nombres (D1,D2,D3,D4,D5,D6,D7,
D8,D9,D10,D11,D12,D13,D14,D15,D16) sur 4 processeurs en utilisant une
architecture SIMD
Étape 4:
SP7=SP5+SP6 SP6
• Additionner à nouveau les
sommes partielles
FI
UC

Architecture SIMD
Architectures Parallèles: Classification de Flynn

• Le modèle SIMD a connu un certain succès sous le nom

d'ordinateur vectoriel.

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Produit de deux matrices d’ordre n

Version SISD

Version SIMD

Architecture SIMD
Architectures Parallèles: Classification de Flynn
• Exemple : Produit de deux matrices d’ordre n (n = 3)

Architecture SIMD

Vous aimerez peut-être aussi