Il y a trente ans, les CPU et autres processeurs spécialisés géraient presque toutes les tâches de calcul. Les cartes graphiques de cette époque contribuaient à accélérer le dessin de formes 2D dans Windows et les applications, mais ne faisaient rien d’autre. Avançons jusqu’à aujourd’hui et le GPU est maintenant l’une des puces les plus dominantes de toute l’industrie.
Les jours où la seule fonction du hardware de la puce graphique était les graphismes – ironiquement – les calculs hautes performances et l’apprentissage automatique dépendent fortement de la puissance de traitement du modeste GPU. Suivez-nous pour découvrir comment cette seule puce est passée d’un simple pousseur de pixels à une puissance de calcul à virgule flottante.
Au début, les CPUs régnaient en maîtres
Commençons par remonter dans les années 1990. Le domaine du calcul haute performance, que ce soit pour des travaux scientifiques utilisant des supercalculateurs, du traitement de données sur des serveurs standard, ou des tâches d’ingénierie et de conception sur des stations de travail, reposait entièrement sur deux types de CPUs – des processeurs spécialisés conçus pour un but unique ou des puces grand public d’AMD, IBM ou Intel.
Prenons ASCI Red, par exemple. En 1997, c’était l’un des supercalculateurs les plus puissants du moment, composé de 9 632 CPUs Intel Pentium II Overdrive. Avec chaque unité fonctionnant à 333 MHz, le système affichait une performance de calcul théorique maximale légèrement supérieure à 3,2 TFLOPS (trillions d’opérations à virgule flottante par seconde).

Nous allons souvent nous référer à cette métrique tout au long de cet article, il est donc utile de prendre un moment pour expliquer ce qu’elle indique. En informatique, les nombres à virgule flottante, ou flottants, sont des valeurs de données qui représentent des valeurs non entières, telles que 6.2815 ou 0.0044. Les valeurs entières, appelées entiers, sont utilisées fréquemment pour les calculs nécessaires au contrôle d’un ordinateur et des logiciels fonctionnant dessus.
Les flottants sont cruciaux pour les situations où la précision est primordiale – en particulier tout ce qui concerne la science ou l’ingénierie. Même un calcul simple, comme déterminer la circonférence d’un cercle, implique au moins une offre à virgule flottante.
Les CPUs ont eu des circuits distincts pour exécuter des opérations logiques sur des entiers et des flottants depuis de nombreuses décennies. Dans le cas du Pentium II Overdrive mentionné précédemment, il pouvait effectuer une opération flottante de base (multiplication ou addition) par cycle de fréquence. En théorie, c’est pourquoi ASCI Red avait une performance de point flottant maximale de 9 632 CPUs x 333 millions de cycles de fréquence x 1 opération/cycle = 3 207 456 millions de FLOPS.
Ces chiffres sont basés sur des conditions idéales (par exemple, l’utilisation des instructions les plus simples sur des données facilement stockables dans le cache) et sont rarement réalisables dans la réalité. Cependant, ils donnent une bonne indication de la puissance des systèmes.

D’autres supercalculateurs affichaient des nombres similaires de processeurs standard – Blue Pacific au Lawrence Livermore National Laboratory utilisait 5808 puces PowerPC 604e d’IBM et Blue Mountain de Los Alamos National Laboratory (ci-dessus) en abritait 6144 MIPS Technologies R1000.
Pour atteindre le niveau de traitement de téraflops, il fallait des milliers de CPUs, tous soutenus par de vastes quantités de RAM et de stockage sur disque dur. C’était, et c’est toujours, dû aux exigences mathématiques des machines. Lorsque nous sommes initialement confrontés à des équations en physique, chimie et autres matières à l’école, tout est unidimensionnel. En d’autres termes, nous utilisons un seul nombre pour la distance, la vitesse, la masse, le temps, etc.
Cependant, pour modéliser et simuler avec précision des phénomènes, plus de dimensions sont nécessaires, et les mathématiques passent au niveau des vecteurs, des matrices et des tenseurs. Ceux-ci sont traités comme des entités uniques en mathématiques, mais comprennent plusieurs valeurs, ce qui implique que tout ordinateur travaillant sur les calculs doit gérer de nombreux nombres simultanément. Étant donné que les CPUs de l’époque ne pouvaient traiter qu’un ou deux flottants par cycle, des milliers d’entre eux étaient nécessaires.
SIMD entre dans l’arène : MMX, 3DNow! Et SSE
En 1997, Intel a mis à jour sa série de CPUs Pentium d’origine avec une technologie appelée MMX – un ensemble d’instructions qui utilisait huit registres supplémentaires à l’intérieur du core. Chacun était conçu pour stocker entre un à quatre entiers. Ce système permettait au processeur d’exécuter une instruction sur plusieurs nombres simultanément, une approche mieux connue sous le nom de SIMD (Single Instruction, Multiple Data).
Une année plus tard, AMD a introduit sa propre version, appelée 3DNow!. Elle était notablement supérieure, car les registres pouvaient stocker des valeurs à virgule flottante. Il a fallu encore une année avant qu’Intel ne résolve ce problème avec MMX, en introduisant SSE (Streaming SIMD Extensions) dans sa puce Pentium III.

Quand le nouveau millénaire a commencé, les concepteurs d’ordinateurs haute performance avaient accès à des processeurs standard capables de gérer efficacement les mathématiques vectorielles. Une fois mis à l’échelle de milliers d’entre eux, ces processeurs pouvaient gérer également les matrices et les tenseurs. Malgré cette avancée, le secteur des supercalculateurs continuait de préférer les puces plus anciennes ou spécialisées, car ces nouvelles extensions n’étaient pas spécifiquement conçues pour de telles tâches.
C’était également vrai pour un autre processeur rapidement populaire, meilleur pour le travail SIMD que n’importe quel CPU d’AMD ou d’Intel : le GPU.
Au début de l’ère des processeurs graphiques, le CPU traitait les calculs pour les triangles composant une scène (d’où le nom utilisé par AMD pour sa technologie SIMD). Cependant, la coloration et la texture des pixels étaient exclusivement gérées par le GPU, et de nombreux aspects de ce travail impliquaient des mathématiques vectorielles.
Les meilleures cartes graphiques grand public d’il y a plus de 20 ans, telles que la Voodoo5 5500 de 3dfx et la GeForce 2 Ultra de NVIDIA, étaient d’excellents dispositifs SIMD. Cependant, elles étaient conçues pour produire des graphismes 3D pour les jeux et rien d’autre. Même les cartes sur le marché professionnel étaient uniquement axées sur le rendu.

La FireGL 3 à 2 000 $ d’ATI était équipée de deux puces IBM (un moteur de géométrie GT1000 et un rasteriseur RC1000), d’une énorme mémoire DDR-SDRAM de 128 Mo et d’une puissance de traitement revendiquée de 30 GFLOPS. Mais tout cela servait à accélérer les graphismes dans des programmes comme 3D Studio Max et AutoCAD, en utilisant l’interface de rendu OpenGL.
Les GPUs de cette époque n’étaient pas adaptés à d’autres utilisations, car les processus de transformation des objets 3D et leur conversion en images de moniteur ne nécessitaient pas une quantité importante de calculs à virgule flottante. En réalité, une partie importante de ces processus était effectuée au niveau des entiers, et il faudrait plusieurs années avant que les cartes graphiques commencent à fonctionner massivement avec des valeurs à virgule flottante dans leurs pipelines.
L’une des premières cartes était le processeur R300 d’ATI, qui disposait de 8 pipelines de pixels distincts, gérant toutes les opérations mathématiques avec une précision à virgule flottante de 24 bits. Malheureusement, il n’y avait aucun moyen d’exploiter cette puissance pour autre chose que les graphismes – le hardware et le logiciel associés étaient entièrement tournés vers l’image.
Les ingénieurs informatiques n’étaient pas aveugles au fait que les GPUs avaient une grande puissance de calcul SIMD, mais qu’il leur manquait un moyen de l’appliquer dans d’autres domaines. Étonnamment, c’est une console de jeu qui a montré comment résoudre ce problème épineux.
Une nouvelle ère d’unification
En novembre 2005, la Xbox 360 de Microsoft est arrivée sur les étagères, avec un CPU conçu et fabriqué par IBM basé sur son architecture PowerPC standard, et un GPU conçu par ATI et fabriqué par TMSC. Cette puce graphique, surnommée Xenos, était spéciale car sa structure abandonnait complètement l’approche classique de pipelines distincts pour les vertex et les pixels.

>
Découvrez le reportage du mois (sous-titré en français), l’IA gagnera t-elle face aux champion du monde du jeu de Go ? :

