• Aucun résultat trouvé

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

1

dans 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

n

est donné en fonction du temps de

calcul séquentielT

1

par :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

1

T

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

n

en 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

s

et 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

p

et le facteur d’accélération est donné par :

S

n

= T

(n) 1

T

n

=nt

s

t

s

+t

p

(n−1) (1.34)

De même que précédemment, on représente S

n

en fonction de n dans un graphe. Dans

le cadre d’une étude de scalabilité faible, à chaque S

n

correspond 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) 1

T

n

= T

(n) 1

nT

n

= 1− t

s

(n1)

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

A

la 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 101 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

Documents relatifs