Kilo, méga, giga, téra, péta . . . exa?
Comment pourrons-nous atteindre le prochain palier majeur en terme de puissance de calcul (opérations à virgule flottante par seconde), et ainsi entrer dans le livre mondial des records ? Le créateur de Boinc, David Anderson, nous explique comment il sera possible d'atteindre cet objectif symbolique. Il faudra associer l'informatique volontaire et les circuits intégrés initialement conçus pour afficher les graphismes dans les jeux vidéos.Vous souvenez-vous de vos préfixes ? Kilo, méga, giga, téra, péta. . . exa ? Savez-vous que chacun de ces préfixes renvoit à une unité de grandeur à chaque fois 1000 fois plus grande que la précédente.
L'étape du PétaFLOPS a été franchie au cours de cette année, d'abord par l'université de Stanford avec son projet Folding@Home (un projet de calcul bénévole), puis par les différents projets de calcul bénévole qui utilisent BOINC, un intergiciel pour le calcul bénévole développé par mon groupe de recherche de l'Université de Californie à Berkeley. Plus récemment, cette même étape a été atteinte par le supercalculateur d'IBM, RoadRunner.
La demande en puissance de calcul des recherches scientifiques se développe sans limite.
À cette échelle, les grappes d'ordinateurs et les super-ordinateurs se heurteront à des problèmes de consommation d'énergie et de dissipation thermique, de sorte que si l'on continue avec la même approche, il faudrait de nombreuses longues années pour atteindre le seuil de l'ExaFLOPS.
Toutefois, il existe peut être une voie beaucoup plus rapide et moins coûteuse pour atteindre ce nouveau seuil. Cette nouvelle approche consistera à associer le calcul bénévole et les processeurs graphiques (GPU).
Les GPU, ce sont ces petites puces électroniques qui réalisent les rendus 3D dans nos ordinateurs, dans nos portables et dans nos consoles de jeu. Les principaux fabricants de processeurs graphiques sont NVIDIA et ATI (acquis en 2007 par AMD). L'architecture des GPU est construite autour de centaines de processeurs travaillant en parallèle sur des flux de données multiples. Cette organisation réduit le besoin d'avoir une mémoire cache avec une grande capacité, ainsi les processeurs graphiques peuvent consacrer plus de transistors au traitement arithmétique.
Les processeurs graphiques (GPU) ont aussi un besoin beaucoup moins grand de rétrocompatibilité si on les compare aux processeurs classiques (CPU)
En raison de ces avantages, les GPU sont plus rapides que les CPU: le dernier GPU peut atteindre les 500 Gigaflops sur certaines applications, tandis que le dernier CPU atteindra péniblement les 10 Gigaflops.
Et ce fossé se creuse.
Circuit intégré d'une carte graphique GeForce 6600GT, |
L'avenir, avec les GPU
Les GPU ont aussi surmonté d'autres obstacles qui avaient précédemment gêné leur acceptation: les GPU étaient difficiles à programmer pour des applications scientifiques. En effet, ils ont été conçus pour faire du rendu graphique, c'est à dire produire des images deux dimensions de scènes complexes en 3D. Les algorithmes scientifiques doivent être exprimés en termes de primitives graphiques, ce qui est souvent une tâche très difficile.
Mais le vent a tourné.
L'architecture des GPU n'a cessé de tendre vers un usage plus général, et les derniers modèles sont capables d'effectuer des calculs en virgule flottante avec une double précision, une technique nécessaire pour de nombreuses applications scientifiques. En 2007, NVIDIA a lancé une technologie appelée CUDA qui permet aux GPU d'être programmés en langage C, ce qui facilite le développement et la transposition des applications scientifiques au GPU.
CUDA a également l'avantage de rendre beaucoup plus facile pour les scientifiques la mise au point et le portage d'applications sur GPU. Les scientifiques ont déjà utilisé CUDA pour des applications dans les domaines de la dynamique moléculaire, la prévision de la structure des protéines, le climat et la modélisation météorologique, l'imagerie médicale, et de nombreux autres domaines.
Depuis peu de temps, BOINC permet de mettre à contribution les processeurs graphiques. Le client BOINC détecte et rapporte la présence du GPU, et le serveur BOINC cadence et distribue le travail de façon appropriée. Avec une bonne configuration, BOINC peut même utiliser le GPU d'un PC « en arrière-plan » alors que l'ordinateur est utilisé. Déjà, un projet BOINC (http://GPUgrid.net) se base sur une application CUDA, et plusieurs autres projets suivront prochainement.
Ces tendances pourraient être les ingrédients de base pour atteindre pour la première fois l'ExaFLOPS. Par exemple, si la vitesse moyenne du plus récent modèle de GPU atteint 1 TéraFLOPS, si 4 millions de PC équipés de GPU participent au calcul bénévole et si ces PC sont disponibles en moyenne 25% du temps, alors nous obtenons 1 ExaFLOPS.
Ce scénario pourrait-il être réalisé à court terme, disons en 2010 ? À mon avis, il est quasi-certain que les GPU atteindront 1 Téraflops d'ici à cette date, et un grand pourcentage de PC sera disponible pour BOINC (bien que l'avènement de «l'informatique verte» va diminuer quelque peu leur disponibilité).
Le plus dur sera d'obtenir 4 millions de PC équipés de GPU pour le calcul bénévole, environ 1 million d'ordinateurs participent actuellement au calcul bénévole, et tous ne possèdent pas de GPU, il est donc nécessaire d'augmenter l'ordre de grandeur.
La réalisation de cet objectif impliquera le soutien d'un assembleur de PC ou d'un fabricant de puces électroniques
En résumé: l'association du calcul bénévole et des GPU permettra très bientôt de proposer une puissance de calcul d'un ExaFLOPS aux applications scientifiques. Les scientifiques qui souhaitent utiliser cette ressource peuvent le faire en développant des applications GPU et en déployant ces applications sur BOINC.
—David Anderson, chercheur , Université de Californie, Berkeley, et fondateur de l'Infrastructure Ouverte de Berkeley pour le calcul en réseau (BOINC)