Analyse et mesure de performances du calcul distribué
Mohsine Eleuldj
Département Génie Informatique, EMI [email protected]
CruCID Workshop, EMI, Rabat, 5 au 7 juillet 1999
Motivation
• Types d’applications :
– Ensemble immense de données : prévision météorologique, sismique, intelligence artificielle (traitement de l’image, reconnaissance de
forme,…) recherche médicale (réaction chimique), recherche militaire (simulation des armes), recherche spatiale…
– Temps réel : réservation des billets d’avion, pilotage automatique d’un avion, gestion d’une centrale nucléaire,…
• Solution : traitement parallèle, concurrent, simultané, pipeline, réparti, distribué,…
Plan
• Introduction
• Calcul distribué
• Mesures de performance
• Analyse des algorithmes
• Equilibre des charges
• Granularité
• Extensibilité
• Ordonnancement
• Sources d ’interblocage
• Conclusion
Niveaux de traitement parallèle
• Niveaux
– Travail ou programme (Job) : multitraitement
– Tâche ou procédure : décomposition du programme
– inter-instruction : analyse de la dépendance des données, vectorisation – Intra-instruction : type de contrôle (micro-progammation ou câblage)
• Evolution : le matériel remplace le logiciel
– Coût du matériel diminue et logiciel augmente
– Augmentation de la vitesse (application temps réel) – Tolérance aux pannes
Mécanismes de Traitement parallèle dans un monoprocesseur
• Multiplicité des unités fonctionnelles : additionneur, mutilpieur, virgule flottante…
• Parallélisme et pipeline dans l’UCT (processeur)
• Chevauchement des opérations de l’UCT et des E/S : DMA, cannaux d’E/S, E/S programmées
• Système de mémoire hiérarchique : mémoire virtuelle
• Equilibrage des tâches bornées par le calcul et celles bornées par les E/S
• Multiprogrammation (chevauchement entre le CPU et les E/S) et le temps partagé (efficace en interactif et application temps réel)
Classification architecturale
Basée sur la multiplicité du flot d’instructions et le flot de données (Flynn 1966) :
• SISD : Single Instruction Single Data stream (ordinateur conventionnel)
• SIMD : Single Instruction Mulitple Data stream (Cray 1:ordinateur vectoriel)
• MISD : Multiple Instruction Single Data stream
• MIMD : Multiple Instruction Multiple Data stream (Cray 2, MPP)
Basée sur l’utilisation de la mémoire
• Système à mémoire partagée (Cray 1)
• Système à mémoire distribuée (Cray 2)
Calcul distribué - Plate forme
Réseau de communication
Cray J916 (6 processeurs)
Réseau local 1 Réseau local 2
P
P : est un poste de travail (PC, Station de travail, SIMD, MPP,...) sous un système d ’exploitation (Unix, Windows, SunOS,…)
P P P P P P P
Calcul distribué - Principe
• Décomposition du problème en plusieurs processus
• Répartition des processus sur les différents processeurs (selon le modèle m aître /esclave, arborescent,...)
• Possibilité d’échange de messages au cours du traitement
• Combinaison des résultats des processus afin de résoudre le
problème de départ
Calcul distribué - Objectifs
⇒ ?
⇒
⇒
⇒ amélioration de la performance
Programme séquentiel +
fonctions MPI
programme parallèle
Performance P = 1/t où t est le temps d ’exécution
Objectifs : amélioration de la performance
Calcul distribué - Eléments de performance
• Taille de l’exemplaire
• Algorithme (itératif, diviser-pour-régner,…)
• Equilibre des charges, Granularité, Extensibilité, Ordonnancement
• Paradigmes de parallélisation (maître/esclave, arborescent, …)
• Bibliothèques (MPI, PVM,…)
• Langage (Fortran, C, …), Compilateur (vectorisation, …)
• Système d ’exploitation (Linux, Windows NT, Windows 95/98,…)
• Protocole de communication (Ethernet, TCP/IP, ATM…)
• Architecture (mémoire partagée, distribuée)
• Processeurs (nombre, fréquence, …), Mémoire (temps d ’accès)
Mesures de performance - Accélération
• Accélération (Speed up)
A = T(1,n)/T(m,n)
où T(1,n) et T(m,n) sont les temps d ’exécution du programme avec 1 et m processeurs respectivement sur un exemplaire de taille n
• Efficacité E = A/m
• En général 1 ≤ A ≤ m et E ≤ 1
si A > m alors sur-accélération
Accélération - Exemple
… … …
… … …
… … …
… … …
… … …
… … …
… … …
… … …
… … …
Supposons que T(1,n) = cn2 où n : ordre de la matrice et c : constante En négligeant les temps de communication
T(9,n) = T(1,n/3) = cn2/9
A = T(1,n)/T(9,n) = 9 et E = A/9 = 1
… … …
… … …
… … …
… … …
… … …
… … …
… … …
… … …
… … … n
n
Mesures de performance - Parallélisme
Degré de parallélisme
D(t) = nombre de processeurs utilisés pendant l’instant t avec m processeurs (D(t) ≤ m)
− ∫
=
21 1 2
) 1
t(
t
D t dt
t D t
Degré moyen de parallélisme
où t
1et t
2les temps de début et fin de l ’exécution
∑
== −
21 1 2
) 1
t(
t t
t t D
D t
D(t) est discrète ⇒
Degré de parallélisme - Exemple
8 9 10 11 12
7 6
5 4
1 2 3 4 5 6 7 8 9 10
temps processeurs
Degré de parallélisme
Analyse des algorithmes
Notion d ’ordre
O(f(n)) = {t:N > R*/ (∃c ∈ R+)(n0 ∈ N)( ∀n> n0 ) [t(n) < cf(n)]}
t(n) est de l’ordre de f(n)
Soit t(n) le temps d ’exécution d ’un algorithme sur un exemplaire de taille n t(n) ∈O(log n) ⇒ algorithme est logarithmique
t(n) ∈O(n) ⇒ linéaire
t(n) ∈O(n2) ⇒ quadratique
t(n) ∈O(p(n)), où p polynôme ⇒ polynomial t(n) ∈O(f(n)), où f exponentielle ⇒ exponentiel Classes des problèmes : P, NP, NP-complet
Analyse des algorithmes - Exemple
Calcul des sommes partielles Si (1≤ i ≤ n)
∑
==
ij
i
j
S
1
n cn
b n
n na
bi a
b a
n t
n
i n
i
i
j
* 2
/ ) 1 (
) (
) (
) (
1
1 1
∑
∑ ∑
=
= =
≤ +
+
= +
= +
=
pour i=1 à n faire S(i) 0
pour j=1 à i faire
S(i) S(i) + j
Soient a et b les temps de la mise à zéro et de l’addition
Equilibre des charges - Exemple
Calcul des sommes partielles Si (1≤ i ≤ 256) sur 8 processeurs
Supposons que le temps de communication est négligeable devant le calcul T(8) = Max(t(p1),t(p2),…,t(p8))
∑
== i
j
i j
S
1
pour i=1 à 256 faire S(i) 0
pour j=1 à i faire S(i) S(i) + j
Equilibre des charges - Affectation 1
128 150 192 224 256
96 64
32 1
p1 p2 p3 p4 p5 p6 p7 p8
p1 exécute les itérations i=1 à 32
p2 i=33 à 64
…
pk i=(32k - 31) à 32k
…
p8 i=225 à 256
Equilibre des charges - Affectation 1
N(k) : nombre d’additions effectuées par le processeur k N(k) = 16 x (64k – 31)
Par pour k=1 à 8 faire
pour i=(32k - 31) à 32k faire S(i) 0
pour j=1 à i faire S(i) S(i) + j
Equilibre des charges - Affectation 1
0 1000 2000 3000 4000 5000 6000 7000 8000
p1 p2 p3 p4 p5 p6 p7 p8
Affectation 1
Equilibre des charges - Affectation 2
128 144 160 176 192 208 224 240 256 112
96 80 64 48 32 16 1
p1 p2 p3 p4 p5 p6 p7 p8 p8 p7 p6 p5 p4 p3 p2 p1
p1 exécute les itérations i=1 à 16 et i=241 à 256
p2 i=17 à 32 et i=225 à 240
…
pk i=(16k-15) à 16k et i=(257 - 16k) à (272 - 16k)
…
p8 i=113 à 128 et i=129 à 144
Equilibre des charges - Affectation 2
N(k) = 8 x (32k – 15) + 8 x (529 – 32k) = 8 x 514 = 4112 Par pour k=1 à 8 faire
pour i=(16k - 15) à 16k et i=(257 - 16k) à (272 - 16k) faire S(i) 0
pour j=1 à i faire S(i) S(i) + j
Equilibre des charges - Affectations
0 1000 2000 3000 4000 5000 6000 7000 8000
p1 p2 p3 p4 p5 p6 p7 p8
Affectation 1 Affectation 2
Temps(Affectation 2) = t(p1) =t(p2) = ... = t(p8)
Equilibre de charges - Parallélisme
t4 t5 t6 t7 t8
t3 t2
t1 t0
1 2 3 4 5 6 7 8 9 10
temps processeurs
Affectation 1 Affectation 2
Granularité
Exemple : Produit matriciel C = AB où A et B deux matrices d’ordre n.
Granularité = taille de la tâche allouée à un processeur (ou processus) temps d ’exécution = temps de calcul + temps de communication
temps de communiquer un message de taille n est a + bn
Version 1: pour i=1 à n faire C(i,j) 0
pour j=1 à n faire
C(i,j) 0 pour k=1 à n faire
C(i,j) C(i,j) + A(i,k) * B(k,j)
Granularité - Exemples
version 2 : granularité grosse Par pour i=1 à n faire processus : vecteur x matrice pour j=1 à n faire
C(i,j) 0 pour k=1 à n faire
C(i,j) C(i,j) + A(i,k) * B(k,j) version 3 : granularité moyenne pour i=1 à n faire
processus : vecteur x vecteur Par pour j=1 à n faire C(i,j) 0
pour k=1 à n faire
C(i,j) C(i,j) + A(i,k) * B(k,j) version 4 : granularité fine pour i=1 à n faire
processus : scalaire x scalaire pour j=1 à n faire C(i,j) 0
Par pour k=1 à n faire
C(i,j) C(i,j) + A(i,k) * B(k,j)
Granularité - Exemples
0 5 10 15 20 25 30
Version 1 Version 2 Version 3 Version 4
Itérations
Communication
Temps de calcul et de communication pour n=3
Ordonnancement
• Les processeurs alternent entre les phases de calcul et de communication
• congestion du réseau de communication réduit le débit
• ordonnancement des processus de telle sorte que lorsque certains calculent les autres communiquent
Calcul
Communication
Communication Calcul
Calcul p1
p2 p3 p
Extensibilité (scalability)
0 20 40 60 80 100
1 2 3 4 5 6 7 8
Détermination du nombre optimal de processeurs
processeurs temps
Sources d ’interblocage
• Envoi d ’un grand message du processus 0 au processus 1
• communication bloquante « unsafe » (avec accusé de réception)
p0 p1
Envoyer (1) Envoyer (0) Recevoir(1) Recevoir(0)
• Solution
p0 p1
Envoyer (1) Recevoir(0)
Conclusion
• Contenu de l’exposé
– Introduction au traitement parallèle
– Mesures de performances du calcul distribué – Techniques générales de performance
• Objectifs
– Importance de la performance – Prévoir la performance
– Améliorer la performance