1.2. Calcul intensif
1.2.2. Mesure de performances
Dans le cadre du calcul intensif, il est important de pouvoir comparer les différentes
im-plémentations et codes de calculs et d’en mesurer les performances. Pour cela des métriques
spécifiques sont utilisées.
La première métrique utilisée est la puissance brute développée par un algorithme. Cette
grandeur est exprimée par le nombre d’opérations sur des nombres réels à virgules flottante
réalisées par secondes d’exécution. On utilisera la notationFLOPSpour désigner cette unité,
également notée FLOP s
−1dans la littérature. Cette mesure est notamment utilisée pour
établir le classement du Top500, En pratique, le nombre d’opérations effectuées lors d’une
exécution peut être obtenu par un outil de profilage et dépend fortement du compilateur,
des options de compilations employées ainsi que de l’architecture utilisée.
Scalabilité
Scalabilité forte Lors de la parallélisation d’un code, la performance maximale
attei-gnable est bornée par la loi d’Amdahl donnée par Rodgers (1985). L’accélération maximale
dépend de la proportion de code parallélisable, notéep ∈[0; 1]. Le temps de calcul total,
pour un problème de taille fixe, sur n processeurs T
nest donné en fonction du temps de
calcul séquentielT
1par :T
n=T
1(1−p+p/n). Le facteur d’accélération,S
n, égal au rapport
entre le temps de calcul surn processeurs et le temps de calcul sur un seul processeur est
alors donné par l’expression :
S
n= T
1T
n=
1
1−p+p/n < n. (1.33)
On remarque que lorsque le nombre de processeurs devient grand, le rapport tend vers
(1−p)
−1. Cela signifie que l’accélération maximale, lorsque la partie parallélisable devient
négligeable, est bornée par la partie non parallélisable du code. De manière optimale, pour
p= 1, on attend que le facteur d’accélération du code soit égal au nombre de processeurs.
La performance d’un code peut être mesurée en réalisant une étude de scalabilité forte. Il
s’agit d’étudier l’évolution du facteur d’accélération du code pour un problème de taille fixe
en faisant augmenter les ressources employées à la résolution. Généralement, ces résultats
sont présentés sur un graphe donnant le rapport T
1/T
nen fonction de n. Une scalabilité
idéale conduit à l’obtention d’une droite de pente égale à 1.
Scalabilité faible On peut également considérer l’évolution du facteur d’accélération
lorsque l’augmentation des ressources est réalisée simultanément avec une augmentation de
la taille des données du problème. Dans ce cas, la loi de Gustafson-Barsis (Gustafson, 1988)
conduit à une décomposition du temps de calcul surnprocesseurs en une partie séquentielle
t
set une partie parallèlet
p, T
n=t
s+t
p. Ainsi, le temps de calcul de ce problème sur un
seul processeur est égal àT
1(n)=t
s+nt
pet le facteur d’accélération est donné par :
S
n= T
(n) 1
T
n=n− t
st
s+t
p(n−1) (1.34)
De même que précédemment, on représente S
nen fonction de n dans un graphe. Dans
le cadre d’une étude de scalabilité faible, à chaque S
ncorrespond une taille de problème
contrairement à la scalabilité forte où l’étude complète est réalisée pour une même taille de
problème. Dans le cas idéal, le temps de calcul est entièrement dédié à la partie parallèle,
t
s= 0, on obtient une droite de pente 1.
Le temps de calcul séquentiel du problème associé à n processeur, T
1(n), peut parfois
devenir prohibitif et même impossible à obtenir lorsque n est grand. Pour cela, on pose
l’hypothèse que ce temps est proportionnel au temps de calcul séquentiel du problème
unitaireT
1(n)=nT
1(1). On représente alors le facteur d’accélération par :
˜
S
n= T
(1) 1T
n= T
(n) 1nT
n= 1− t
s(n−1)
n(t
s+t
p). (1.35)
Modèle roofline
Les architectures multicœurs se caractérisent par le partage d’une mémoire entre les
différents cœurs dans lesquelles la bande passante est parfois un facteur limitant les
per-formances. Le modèle roofline, introduit par Williamset al. en 2009, est un modèle de
vi-sualisation de performances basé sur l’intensité opérationnelle d’une implémentation. Cette
grandeur est définie comme le nombre d’opérations en virgule flottante parBytede donnée
transférée entre les unités de calcul et la mémoire globale. La quantité de données
échan-gées entre les unités de calculs et la mémoire du système est constituée des accès en lecture
et écriture. Ce modèle permet de représenter graphiquement les performances de calcul
en fonction de l’intensité opérationnelle. Le graphe, en échelle logarithmique, présente la
performance atteignable en fonction de l’intensité opérationnelle selon la formule :
P
A= min(P, B×I), (1.36)
avec P
Ala puissance atteignable en GFLOPS, P la puissance crête théorique de la
ma-chine, également en GFLOPS, B la bande passante théorique en GByte/s etI l’intensité
opérationnelle du code en FLOP/Byte. L’intensité opérationnelle dépend de la machine et
du code et peut être calculée à partir des compteurs présents dans le matériel et
éventuelle-ment accessibles via un outil de profilage. Dans certains cas, il est possible d’approcher cette
intensité par un comptage des opérations du code. Le modèle conduit à la représentation
donnée en exemple en figure 1.4.
On détermine si une implémentation est bornée par la bande passante, comme pour
l’intensité I
A, ou par la puissance de calcul théorique, comme pour I
B. Cela donne une
borne de performance maximale atteignable pour une implémentation donnée. Une
pre-mière stratégie d’optimisation pour un algorithme donné consiste à se déplacer vers une
intensité opérationnelle plus grande, flèches horizontales sur la figure 1.4. Elle consiste en
une optimisation de l’implémentation pour limiter les accès à la mémoire globale afin de
maximiser la puissance atteignable. La seconde stratégie consiste à optimiser le code pour
diminuer le temps de calcul. En effet, la performance atteinte lors d’une exécution
corres-pond à un point sur le graphe. Visuellement, les optimisations visent à déplacer ce point
vers la borne théorique le long d’une demi-droite correspondant à l’intensité opérationnelle
de l’implémentation évaluée. Cette seconde stratégie est représentée par les flèches verticales
sur la figure 1.4.
Efficacité énergétique
Dans le cadre de l’étude de l’impact environnemental des machines, la puissance de
calcul est mise en regard de la consommation électrique. En particulier, depuis fin 2007, le
classement du Green500 ordonne les éléments du Top500 en fonction de leur performance
énergétique qui est exprimée en MFLOPS par watt consommé au cours d’un calcul. La
figure 1.5 donne l’évolution des machines de rang 1 et 500 du classement Green500 ainsi
que, à titre de comparaison, du Top500.
La figure 1.6 représente les 150 premières machines des classements du Top500 et
Green500 par groupes de couleurs selon le type d’accélérateurs ou selon l’architecture.
Comme le montre Subramaniamet al. (2013), dans leur analyse de la consommation
éner-gétique des super-calculateurs l’utilisation d’accélérateurs graphiques, GPU, ou de
copro-cesseurs semble contribuer fortement à l’amélioration de l’efficacité énergétique. À titre de
0.1 1 10 100 1000 IA IA0 IB 0.1 1 10 100 Borne calcul Borneband e passan te Puissance atteignabl e (GFLOPS)
Intensité opérationnelle (FLOP/Byte) Roofline
Figure 1.4. – Exemple de modèle roofline.
100 101 102 103 104 2007 2008 2009 2010 2011 2012 2013 2014 2015 Efficacité énergétique (MFLOPS/W)
Date de publication des classements Green500 - #1
Green500 - #500 Top500 - #1 Top500 - #500
comparaison, les ordres de grandeurs de puissance consommée sont illustrés par des
maté-riels usuels.
Le code de couleurs utilisé sur la figure 1.6 permet de distinguer quatre types
d’ar-chitecture. L’architecture classique correspond à une machine constituée de processeurs
multicœurs traditionnels et ne contenant aucun accélérateur. L’architecture BlueGene se
distingue de la précédente par un nombre bien plus grand de processeurs, par une faible
fréquence des processeurs et une faible quantité de mémoire des nœuds. Ces deux dernières
caractéristiques permettent à ce type de machine d’être extrêmement efficace en termes de
performance énergétique. Les machines dotées de coprocesseurs représentées sur la figure 1.6
sont constituées de processeurs multicœurs Xéon Phi comportant jusqu’à 61 cœurs de calcul
et qui ont été introduits récemment par Intel. La machine à coprocesseurs la plus efficace
est constituée de processeur PEZY-SC contenant 1 024 cœurs qui sont développés par la
société japonaise PEZY Computing. Enfin, le second type d’accélérateur est représenté par
les GPU dont les caractéristiques seront détaillées dans le chapitre 4.
105 106 107 108 10−1 100 101 20 MW 1 MW 0.1MW éolienne motrice de TGV voiture Puissance de calcul (GF L OPS)
Efficacité énergétique (GFLOPS/W) Top500 Green500 GPU Coprocesseur BlueGene Classique
Figure 1.6. – Comparaison des performances énergétiques des 150 premières machines du
Top500 et Green500 selon le matériel (classements de novembre 2014).
1.2.3. Défi de l’exascale
Dans le document
Couplage de modèles, algorithmes multi-échelles et calcul hybride
(Page 33-37)