Comment le GPU a conquis le monde
Nous prenons les GPU pour acquis maintenant, mais leur existence a des racines qui remontent aux années 1970.
Même Gordon Moore, de la loi du même nom, aurait peut-être cligné des yeux devant les performances des GPU modernes. Oui, ils ont un nombre énorme de transistors, comme Moore l’a si bien prédit, souvent à peu près autant qu’un processeur contemporain. Il est difficile d’éviter la réalité, cependant, que leur comportement en usage est très différent, et il est raisonnable de se demander comment nous en sommes arrivés là.
À la fin des années 1990, il devenait clair que le traitement graphique effectué pour les jeux vidéo dépasserait rapidement la capacité du matériel extrêmement coûteux utilisé pour des choses comme la correction des couleurs en temps réel dans le cinéma et la télévision. Le RT2000 de Matrox a probablement été l’un des premiers moyens abordables d’exploiter un matériel graphique dans un flux de travail vidéo, bien que ses limites soient très visibles; comme la plupart des choses de l’époque, ses effets étaient clairement basés sur des primitives graphiques, une carte de texture sur un plan.
Bien sûr, le processeur graphique sous-jacent à la RT2000, ainsi que les séries PlayStation et Xbox, étaient les descendants d’une ligne de développement remontant aux années 1970.Bien que le niveau de sophistication varie naturellement massivement sur cette période de trente ans, l’hypothèse sous-jacente cruciale a souvent été la même: l’idée que les opérations de rendu pour les jeux vidéo étaient extrêmement répétitives et que le processeur pouvait être épargné par le travail d’âne.
Une carte graphique VisionTek avec GPU Nvidia GeForce 256. Image: Hyins / Wikipedia.
Presque tous les ordinateurs depuis les années 70 ont eu quelque chose qui s’approche d’une puce graphique dédiée. Ce n’est pas joli quand ils ne le font pas: le ZX80 extrêmement bon marché de Clive Sinclair ne pouvait générer un affichage vidéo que lorsqu’il ne faisait rien d’autre, de sorte que l’affichage clignotait à chaque frappe et était complètement vide pendant un long calcul. Ses descendants incluent le spectre séminal, qui comprenait un réseau logique non engagé Ferranti, un précurseur reconnaissable de la technologie FPGA moderne, qui générait les données de trame au fur et à mesure qu’elles étaient numérisées.
Cette approche est restée populaire jusqu’au milieu des années 1990, sur des machines de jeux qui conservaient des données de sprites dans leur mémoire limitée, et les récupéraient pixel par pixel alors que le canon à électrons du téléviseur balayait l’écran. Même alors, il y avait des dispositifs graphiques programmables qui sont reconnaissables comme précurseurs de la technique actuelle; la gamme Commodore Amiga avait un coprocesseur qui pouvait être programmé pour exécuter diverses instructions graphiques. Le Atari Falcon030 pourrait également utiliser son processeur DSP pour calculer des graphiques 3D en temps réel. Cependant, l’utilisation de matériel graphique pour effectuer d’autres travaux n’est pas devenue courante jusqu’à ce que les graphiques 3D soient devenus beaucoup plus courants.
Même cela a commencé à se produire longtemps avant que quiconque ne pense à exploiter le matériel pour effectuer un travail non graphique. En 1994, deux choses se sont produites: Sony a sorti la PlayStation 1, et 3dfx Interactif a été fondée à San Jose, en Californie. Il a produit la série de cartes graphiques enfichables Voodoo, sans doute la première succès essayez d’apporter une 3D accélérée par le matériel aux joueurs PC. Comme avec tant de tentatives de version, les cartes Voodoo étaient idiosyncratiques, nécessitant un câble de passage d’une carte graphique 2D conventionnelle et des logiciels exigeants utilisent le propre standard Glide de l’entreprise pour communiquer avec le matériel graphique 3D.
(Note de l’auteur – Ah, Irréel sur un Vaudou 2. C’étaient les jours. Et oui, c’est là que le moteur Unreal tire son nom.)
À la fin des années 90, les GeForce 256 et GeForce 2 de Nvidia et l’ATI Radeon 7200 étaient sur les talons de 3dfx, et la société a échoué à la fin de 2000, Nvidia rachetant une grande partie de sa technologie. Ce qui a fait du marché des GPU ce qu’il est aujourd’hui, cependant, est moins lié au matériel, et plus à l’introduction par Microsoft de son interface logicielle Direct3D, qui, à côté de l’alternative OpenGL plus axée sur la productivité, signifiait que les applications pouvaient utiliser l’accélération 3D sans se soucier (beaucoup) de ce sur quoi elles fonctionnaient.
Effets limités
À ce stade, le matériel pourrait en fait faire c’était la rastérisation, le processus consistant à prendre des nuages de triangles dans l’espace 3D et à tracer ces triangles sur un affichage bidimensionnel. La cartographie de la texture, de la bosse et de la réflexion, la rotation et la translation de la géométrie, les calculs d’éclairage et d’autres améliorations étaient désormais normaux. Les entreprises ont rivalisé sur les effets que leur matériel pouvait créer, mais c’était un pipeline à fonction fixe, capable seulement des opérations que les concepteurs avaient prévues serait utile. Peu de temps après, il est devenu évident que rendre le matériel programmable était le seul moyen réaliste de maximiser la flexibilité tout en contrôlant la complexité.
La terminologie graphique a souvent appelé « ombrage » le processus de traçage des effets de texture et d’éclairage sur les polygones, et les programmes exécutés par les GPU sont encore souvent appelés « shaders », même s’ils ne sont pas conçus pour dessiner des graphiques. La façon dont les shaders ont été écrits pour les GPU a changé plusieurs fois, mais vers 2005, il avait été réalisé que, compte tenu de cette programmabilité, un GPU pouvait être persuadé – et c’était le bon terme – de faire un travail non graphique. Au début, il était nécessaire de regrouper les données à traiter en tant qu ‘ »image » et de les envoyer au GPU en tant que « texture », mais cela a fonctionné.
La raison pour laquelle cela a fonctionné nous ramène à la nature répétitive du travail graphique. Une scène dans un jeu vidéo comprend des milliers, voire des dizaines ou des centaines de milliers, de triangles, dont beaucoup avec plusieurs couches de texturation et d’éclairage, qui doivent tous être manipulés lorsqu’un cadre est rendu. Un GPU est comme une rangée de mille calculatrices avec un seul levier disposé pour appuyer simultanément sur tous les boutons « égaux », de sorte qu’il peut faire une énorme quantité de choses assez simples à la fois. Les scientifiques, en particulier, ont rapidement trouvé des moyens de tirer parti de cette capacité.
Cela a été régularisé à la fin de la première décennie du XXIe siècle avec des systèmes tels que Brook, RapidMind et CUDA, sortis en 2007, qui continuent de rendre beaucoup d’applications cinématographiques et télévisuelles beaucoup (beaucoup) plus rapides à ce jour. L’impact de cela sur certaines charges de travail a été au-delà de la révolution; il a détruit et créé des entreprises, a offert le haut de gamme aux masses et a permis aux gens de tirer sur des extraterrestres et d’esquiver les abats volants. Et, avant de subir des illusions de grandeur, rappelons-nous que sans les abats, rien de tout cela ne serait jamais arrivé.