FLASH INFORMATIQUE FI



public averti HPC@GreenIT : entre efficacités computationnelle et énergétique


Depuis 1993, le petit (et le grand) monde du calcul scientifique se concentre presque exclusivement sur la publication bisannuelle de la liste du top500 [1] lorsqu’il s’agit de déterminer si un superordinateur est digne de figurer dans la classe des machines dites de haute performance ou pas. Depuis juin 2008, la liste comporte aussi une estimation de la consommation électrique des superordinateurs. Parallèlement, une liste verte - la liste green500 - basée sur le même benchmark (HPL) que le top500 classe les superordinateurs selon leur efficacité énergétique. Peut-on aujourd’hui déjà, construire une machine qui consommerait 1 Joule pour 1 gigaFLOPS pour un code dominé par des opérations BLAS2, soit 4 à 5 fois moins que les meilleures solutions vertes ciblées sur BLAS3  ? Nous vous proposons une petite expérience de pensée pour y répondre.



Since 1993, the small world of high performance computing focuses nearly exclusively on the publication of the top500 [1] lists during the International Supercomputing Conference in June and SuperComputing in November to rank the worldwide supercomputers. Since June 2008, the top500 list proposes an estimation of the energy consumption of the supercomputers. Along the top500 list, another one based on the same benchmark (HPL) named green500 classifies the supercomputers on the basis of their energy consumption. But, is it possible today to build a machine which consumes 1 Joule per GFLOPS for a BLAS2-dominated code, around 4 to 5 times better than the best green BLAS3 solutions  ? We try to answer this question by a thought experiment.


Ralf GRUBER

Vincent KELLER


Efficacité computationnelle  ?

Si l’on s’enhardit à classer les applications scientifiques selon leur type, on s’aperçoit bien vite que celles qui trustent la première place (entre 75% et 80% à l’Université de Zürich[2], chiffre similaire mesuré à l’EPFL[4]) sont celles qui sont dominées par des accès mémoire. En simplifié, les opérandes ne peuvent être gardés en cache, chaque instruction requiert un accès à la mémoire haute. On appelle ce type de noyau - de nain selon la nomenclature de Berkeley[3] - une opération de type BLAS2. Hors, la classification top500 régulièrement citée en référence utilise un noyau de type BLAS3 (le benchmark HPL[5]) qui, s’il est correctement configuré, permet de tirer la performance maximum d’un noeud de calcul. On a même entendu dire que les constructeurs de chips ajoutaient quelques portes logiques et transistors ciblés à leur hardware pour pouvoir exploser la performance du benchmark HPL. En terme d’efficacité computationnelle, à savoir le rapport entre la performance mesurée et la performance maximale, le benchmark HPL atteint une valeur proche de 90% alors que les applications de la vraie vie n’en tirent pas plus de 10% à 15% dans les meilleurs cas, bien moins sur les processeurs multi-coeurs (moins de 5% est une valeur mesurée sur des quad-coeurs[4]). Premier constat donc, la réalité des applications devraient pousser le monde du calcul scientifique vers des suites de benchmarks qui reflèteraient l’efficacité computationnelle des applications du monde réel plutôt qu’un benchmark conçu à l’origine pour les architectures vectorielles. C’est le cas de HPC Challenge (HPCC) [6] ou de la plus complète NASA Benchmark Suite (NPB) [7]. Pour la suite de cet article, nous utiliserons le benchmark SMXV, il consiste en une multiplication matrice-vecteur qui, pour une taille de vecteur suffisamment grande (au-delà de la taille du cache L2) mesure exactement la bande passante mémoire puisque requérant exactement un accès à la mémoire haute - un LOAD - pour chaque instruction.

Efficacité énergétique  ?

L’efficacité énergétique se définit comme le rapport entre ce qu’on peut tirer utilement d’un appareil divisé par la consommation énergétique totale de celui-ci. En informatique en général, en sciences computationnelles en particulier, l’efficacité énergétique se décrit comme le rapport entre la performance d’une application divisée par la quantité d’énergie pour la faire tourner. À nouveau arrive le problème de savoir ce que nous entendons par application et donc performance. Comme il est facile de tricher avec des courbes de speedup pour les applications parallèles (en mesurant une valeur catastrophique pour la quantité 1 en fonction de laquelle l’accélération est calculée), il est tout autant aisé de présenter des processeurs plus efficaces qu’ils ne le sont en réalité. Ainsi, si nous jetons un oeil à la liste green500 (basée sur le benchmark HPL), le classement fait ressortir des valeurs de l’ordre de 1.6 GF/W pour le prototype du BlueGene/Q à IBM Watson à environ 1 GF/W pour les machines hybrides (composées de CPU conventionnels et de GPUs ou de Cell/B.E.). Au-delà du fait qu’il eut été plus judicieux de mesurer la valeur énergétique (en Joules) plutôt que la puissance crête (en Watt), on voit que les meilleures machines sont capables de fournir 1.6 GF/J pour le benchmark HPL, on estime à moins de 160 MF/J sur une vraie application (10% d’efficacité computationnelle). La question qui se pose immédiatement : est-il possible de construire une machine avec la technologie existante qui serait capable de produire 1 GF sur une application réelle dominée par la bande passante mémoire et qui consommerait 1 J  ? Nous proposons une réponse positive sous la forme d’une expérience de pensée basée sur les données d’une carte graphique Nvidia GTX280.

Une expérience de pensée

Dans toute expérience de pensée, nous devons présenter les hypothèses de travail sur lesquelles elle se base. Nous avons choisi de prendre comme référence la carte graphique Nvidia GTX280, une carte graphique capable d’être programmée pour le calcul (GPGPU). Voici nos hypothèses de travail :

  1. Il est possible d’isoler chacun des Nvidia cores .
  2. Il est possible de modifier la fréquence d’horloge de chacun des coeurs.
  3. Le processeur de texture est identique électroniquement aux autres Nvidia cores
  4. La consommation énergétique d’une carte graphique se divise en trois parties égales : la mémoire haute, les GPUs et le reste de la carte.
  5. Le prix de la carte graphique se décompose en trois parties égales : 33% pour la mémoire haute, 33% pour les GPUs et 33% pour le reste.
  6. 1 Watt sur 1 an coûte 1 franc suisse.
  7. La durée de vie d’un superordinateur est de 4 ans.
  8. La consommation électrique d’un chip (technologie CMOS) est fonction de la fréquence de fonctionnement au carré. Cela signifie que si l’on divise par deux la fréquence, le gain en énergie est d’un facteur 4.

Pour commencer, il s’agit de décrire la carte graphique GTX280 à partir de ces hypothèses. En voici les principales caractéristiques que nous utilisons dans notre expérience de pensée :

  • 10 GPU à 24 Nvidia coeurs chacun ce qui représente 240 coeurs Nvidia au total ;
  • la fréquence de fonctionnement est de 1.3 GHz ;
  • la performance maximum (peak performance) est de 78 GF pour des opérandes à virgule flottante en double précision ;
  • la performance BLAS2 (multiplication matrice-vecteur avec taille suffisamment grande) est de 10 GF ;
  • 4 GB de mémoire haute, une bande passante mémoire de 15 Gmots/seconde ;
  • puissance électrique requise : 236 W (350 W si l’on considère le refroidissement) ;
  • coût : 400 CHF.

L’expérience de pensée se déroule en trois phases distinctes. Dans les trois cas, l’on estime la performance et la consommation énergétique en utilisant le benchmark SMXV. La première phase consiste en la mesure de la performance et de la consommation énergétique de la carte out of the box. Durant la seconde phase, on divise la fréquence des 10 GPUs par 4 tout en réduisant de 4GB à 1 GB la taille de la mémoire haute. Pour contrebalancer cette perte, on multiplie par 4 le nombre de cartes GTX280. Finalement, lors de la troisième phase, on éteint les coeurs inutiles, on ne conserve donc plus que 10 coeurs actifs sur les 240 d’origine.







Phase 1
1 x GTX280
1.3 GHz
4 GB memory
240 cores
Phase 2
4 x GTX280
0.375 GHz
1 GB memory per card
4 x 240 cores
Phase 3
4 x GTX280
0.375 GHz
1 GB memory per card
4 x 10 cores


Finalement on estime le coût de chacune des phases sur les quatre années de fonctionnement d’un noeud de calcul ainsi conçu. Les résultats se déclinent dans le tableau 1.

Machine GTX280 GTX280 ¼ F GTX280 ¼ F, 1 core per GPU
NGPU 10 10 10
Ncores 24 24 1
F (GHz) 1,3 0,375 0,375
R∞ (GF) 78 19,5 6,5
M∞ (Gw/s) 17,7 4,43 4,43
Mnode (GB) 4 1 1
RSMXV (GF) 10 2,5 2,5
W (W) 236 11 6,5
W/RSMXV (J/GF) [1] 24 4,4 2,6
+50% AC [2] 36 6,6 3,9
Coût [CHF] 1800 1600 1400

tableau 1 - expérience de pensée : les trois phases. Une carte qui possède 1GB de mémoire haute au lieu de 4GB ne coûte plus que 300 CHF au lieu de 400 CHF. Le coût final est calculé sur 4 années et en tenant compte que lorsque la fréquence et la taille de la mémoire sont divisés par 4, il s’agit d’acquérir 4 cartes.

Le premier constat qui saute aux yeux, c’est la bande passante exceptionnelle de la carte GTX280. C’est grâce à la conception de la carte que le benchmark SMXV atteint une telle performance. La seconde conclusion difficilement imaginable, c’est le coût moyenné sur 4 ans. Quatre fois plus de matériel qui tourne quatre fois moins vite coûte 23% moins cher pour une performance équivalente sur le benchmark SMXV. L’efficacité énergétique est meilleure d’un facteur 9 (24/2.6) et est la cause de ces résultats prometteurs. La troisième conclusion est qu’il est possible avec le matériel d’aujourd’hui, de construire un noeud de calcul - et donc une machine parallèle composée de ces mêmes noeuds - capable de fournir une performance soutenue (sustained performance) sur un benchmark proche des applications réelles et consommant moins de 3 J par GF. 3 Joules c’est l’énergie requise pour soulever une pomme de 3 mètres dans le champ de gravitation terrestre selon Wikipedia.

Quelques remarques tout de même

Qui dit quatre fois plus de matériel, dit qu’une densification des composants est obligatoire. D’autant plus qu’une bonne partie de l’électronique n’est pas utilisée. Cela signifie en d’autres termes une meilleure gestion du packaging du noeud de calcul. Cela reste possible, l’expérience Blue Gene a montré avec succès qu’une densification des composants lorsque ceux-ci ne dégagent pas énormément de chaleur est possible.
Un autre effet indésirable de baisser la fréquence des processeurs, est que lorsqu’on se trouve dans le cas des derniers 30% d’applications non dominées par la bande passante mémoire, la performance baisse dramatiquement et la quantité d’énergie augmente. Pour y remédier, il doit être possible de pouvoir overclocker les processeurs à la demande. Cela se fait déjà aujourd’hui dans le domaine de l’informatique embarquée et mobile (via la technologie DVFS). Une instrumentalisation (monitoring en anglais) de l’utilisation de la machine non intrusive, bas niveau, en temps réel et continue est donc fondamentale. Des premiers résultats prometteurs sont présentés dans HPC@GreenIT [4].

Conclusion

La lutte contre le gaspillage de cycles de calcul mène à une lutte contre le gaspillage énergétique. Le meilleur moyen de ne pas gaspiller des cycles de calcul c’est avant tout de ne pas les produire. Un processeur multi-coeurs qui tourne une application scientifique dominée par les accès mémoire va n’utiliser qu’un seul coeur pour le calcul et tous les autres pour chauffer l’atmosphère. Cet article traite de cet aspect. Mais il y a de nombreux autres moyens d’économiser de l’énergie : l’optimisation des codes, l’optimisation du choix des machines en fonction des besoins des applications ou encore la parallélisation de codes. Tous ces éléments sont abondamment abordés dans le livre HPC@GreenIT [4] publié cette année.

Références

[1] Classification top500
[2] Vincent Keller, Ralf Gruber, One Joule per GFlops for BLAS2 now  !, proceedings of ICNAAM2010, Rhodes, Greece, AIP, pp. 1321-1324, 2010
[3] Berkely dwarfs
[4] Ralf Gruber, Vincent Keller, HPC@GreenIT, Springer, ISBN 978-3-642-01788-9, 2010
[5] High Performance LINPACK
[6] High Performance Computing Challenges
[7] NASA Parallel Benchmark

[1] énergie par GF sur le benchmark SMXV

[2] additionné de 50% de la valeur W/R SMXV pour le refroidissement (AC=Air Conditioning ou Air Conditionné). 50% correspond à un PUE de 1.5 (PUE=Power Usage Effectiveness).



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.