Cet article a été réalisé par BSM3D, relecture par Benoît Rogez et Olivier Deveux.
CPU vs. GPU?
Avant de commencer la petite histoire du GPU, il faut en premier lieu différencier son rôle par rapport au CPU.
Le CPU (Central Processing Unit) s'occupe de nos jours des calculs autres que l'affichage 3D tels que la gestion d'interfaces et de gameplay, l’intelligence artificielle, la connexion entre les différents softwares et hardwares (mémoire, son, périphériques,...),... . Si le CPU reste la puce principale pour la centralisation des tâches d'un ordinateur, il ne possède en revanche pas de spécialisation particulière et encore moins d'optimisation pour l'affichage 3D.
Le GPU permet au programmeur d'utiliser et de programmer des fonctions de calcul 3D pour améliorer la fluidité de l'affichage 3D dans les applications et les jeux. Le GPU n'est pas fort différent d'un CPU dans sa conception, par contre il est hyper spécialisé dans l'affichage 3D et possède des jeux d'instructions ciblés et optimisés pour cette tâche.
Si le CPU peut arriver à tout faire de part sa conception généraliste, le GPU lui n'est destiné qu'aux calculs 3D et donc à l'affichage.
Le commencement:
Il y a un peu plus de 10 ans, les GPU n'existaient pas, ou presque pas. Les cartes graphiques étaient toutes spécialisées dans l'affichage 2D sur nos écrans et la 3D qui, à l'époque, n'en était qu'à ses balbutiement, utilisait massivement la puissance des CPU de nos PC pour calculer l'affichage 3D.
Note : La société Argonaut Games PLC avait développé en 1993 une puce d'accélération 3D, la SuperFX alors cadencée à 10mhz ! Elle fut utilisée par Nintendo sur la cartouche du jeux Starwing (voir lien), premier jeu à afficher des centaines de polygones. Etait-ce la première contribution hardware à la naissance des futurs GPU ? Fait amusant, Argonaut avait également développé une puce regroupant deux SuperFX, la technologie de couplage parallèle des puces graphiques n'est donc pas nouvelle.
Plusieurs constructeurs s'étaient dès lors lancés dans l'aventure des premières cartes graphiques 3D. Ne rêvons pas, ces pauvres cartes n'affichaient avec mal que quelques centaines de polygones en ombrages de Gouraud (voir http://fr.wikipedia.org/wiki/Ombrage_Gouraud) ou tout au plus Phong (http://fr.wikipedia.org/wiki/Ombrage_Phong) pour les plus puissantes.
Inutile ici de parler des textures, ombres en temps réel, textures de displacements,... Toutes ces fonctions 3D étaient inexistantes pour les cartes graphiques de l'époque et bien mal gérées par le CPU qui devait s'occuper de tout!
A cette époque formidable, quelques constructeurs pionniers des cartes 3D se sont démarqués des autres. Certains ont été rachetés, d'autres ont rendu l'âme,... Quoi qu'il en soit tous ces constructeurs de par leur inventivité ont permis au GPU de devenir une puce hyper spécialisée!
Parmi ces constructeurs, en voici quelques uns qui ont marqué les débuts du GPU:
Matrox fondée en 1976, était à l'époque un des premiers pionniers des cartes 3D abordables et gérait l'accélération 3D sur les polygones uniquement.
Ses produits phares à l'époque étaient la Matrox Mystique et Millenium.
Aujourd'hui Matrox existe toujours et s'est spécialisée dans les solutions d'affichages CAO, multi-écrans et du montage vidéo.
ATI fondée en 1985 a d'abord été maitre dans l'art de l'affichage en 2D avec des solutions comme la carte Mach64 offrant une qualité d'image sans faille et une solution de décompression vidéo en hardware.
ATI a bien évidement pris part à la construction de cartes 3D avec son premier processeur graphique le Rage Pro qui fut le premier concurrent sérieux des cartes 3DFX avec comme avantage la combinaison de l'affichage 2D et 3D sur une même carte.
Ensuite ATI a lancé le processeur Radeon et sa carte fameuse All-In-Wonder (une carte tout en un : 2D, 3D, TV, Capture,...) mais aussi le processeur graphique de la Nintendo GameCube ou encore le Xenos de la Xbox 360.
Aujourd'hui, ATI appartient au fondeur AMD. Il est toujours dans la course à la puissance des GPU avec ses cartes ATI Radeon HD et vient même de dépasser NVIDIA dont il est le véritable rival.
3DFX fondée en 1994 avec son processeur VOODOO, fut parmi les premiers à proposer de véritables cartes d'accélérations 3D pour un prix abordable. Les cartes 3DFX étaient basées sur un concept totalement différent des cartes graphiques de l'époque. Elles ne possédaient pas de sortie vidéo ! Basées sur le concept de carte fille, les 3DFX avaient besoin d'une carte graphique 2D classique pour permettre l'affichage sur l'écran.
Une carte gérait la 3D et l'autre l'affichage. Malgré cela, cette solution puissante et permettant de conserver sa carte graphique 2D n'était pas toujours appréciée car souvent qualifiée de bricolage et au final plus cher qu'une ATI Rage Pro (même si ses performances étaient légèrement supérieures à ATI en affichage 3D).
Le gros problème des cartes 3DFX était de devoir utiliser une API propriétaire nommée Glide pour tirer pleinement parti des performances du processeur VOODOO dans les jeux.
Si ATI régnait en maitre sur le marché des cartes graphiques 2D et 3D grand public, 3DFX maitrisait la technologie avec des innovations comme la conception de cartes VOODOO 5 regroupant jusqu'à 4 GPU. Encore mieux, une solution nommée Scan Line Interleave ou plus communément Sli (ça ne vous dit rien ?) permettait de relier plusieurs cartes 3DFX.
3DFX fut le premier constructeur à engendrer une véritable onde de choque dans l'histoire du GPU. Les cartes 3DFX géraient alors la 3D, les textures et quelques effets graphiques. La qualité des graphismes était proche de celle des bornes arcades ce qui était normal puisque 3DFX créait aussi des cartes pour celles-ci. Une révolution !
Aujourd'hui 3DFX vit toujours, la société a été rachetée par NVIDIA et ses ingénieurs sont toujours très actifs.
PowerVR fondée vers 1996, constructeur innovant et fruit de l'association de NEC et Imagination Technologies, fut un acteur discret comparé à 3DFX, ATI ou NVIDIA.
Comme 3DFX, PowerVR avec son processeur PCX avait une technologie très prometteuse et plus flexible que la solution 3DFX. Malheureusement PowerVR avait pris du retard et le mauvais support d'OpenGL et Direct 3D n'a pas arrangé les choses.
Pour profiter au maximum des performances des cartes PowerVR, les jeux devaient utiliser une API propriétaire nommée PowerSGL.
Malgré de nombreuses innovations, PowerVR n'a jamais rencontré de grand succès, sauf celui d'être le processeur graphique de la console de jeux SEGA Dreamcast.
Aujourd'hui, le constructeur est toujours très actif, notamment au niveau des puces graphiques spécialisées en 2D, 3D et décodage vidéo pour téléphone portable et pocketPC.
Preuve qu'il n'a pas dit son dernier mot, le fondeur Intel a investit assez massivement dans les technologies PowerVR pour ses puces graphiques et quelques projets à venir.
NVIDIA fondée en 1993 a commencé sur de mauvaises bases avec son processeur NV1 qui ne connaitra pas le succès escompté. Pourtant, son processeur graphique permettait de gérer plus qu'un simple processeur graphique 2D et 3D de l'époque : il pouvait faire office de modem et même de carte son. Par contre le support de l'API Direct 3D était catastrophique et pour profiter du NV1 il fallait passer par une API propriétaire NVIDIA.
NVIDIA n'en reste pas là et revient sur le devant de la scène avec son célèbre processeur RIVA TNT qui fut un succès. C'est le véritable départ du constructeur pour ensuite proposer la très célèbre Geforce 256.
Pour en savoir plus sur l'histoire de NVIDIA, consultez notre article dédié.
Aujourd'hui, NVIDIA est le leader du marché des cartes 3D grand public et professionnelles mais aussi fabricant de cartes mères et chipsets.
3Dlabs fondée en 1994 était avant tout un « constructeur » de cartes 3D professionnelles, il a bien essayé de prendre quelques parts du marché multimédia avec son processeur Permedia, mais sans trop de succès face à 3DFX ou NVIDIA.
De par son héritage de la 3D professionnelle (cartes Wildcat ou Oxygen), le GPU Permedia était très performant en OpenGL mais très médiocre avec l'API Direct 3D et les jeux.
Le Permedia était le plus souvent utilisé comme carte 3D OpenGL bon marché par les infographistes 3D n'ayant pas les moyens de s'offrir des cartes comme Evans and Sutherland, SGI ou encore Intergraph.
3Dlabs a probablement été le pionnier dans la création du Glint, processeur graphique haut de gamme pour PC.
Par la suite, 3Dlabs fut racheté par Creatives Labs et ses ingénieurs par Intel et NVIDIA.
De rumeurs circulent à propos d’un projet très discret qu’Intel développerait pour revenir prendre des parts de marchés à NVIDIA et ATI.
Aujourd'hui, 3Dlabs s’est séparé de Creatives Labs pour continuer ses activités allant vers des processeurs orientés pour le décodage des médias (H.264, MPEG-4, OpenGL ES,...) ou les Multi-core ARM et autres solutions pour mobiles.
Bien évidement, d'autres constructeurs comme Tseng Labs, leader des cartes 2D ou encore S3 avec son célèbre processeur Virge étaient également bien présents sur le marché. Aujourd'hui Tseng Labs appartient à AMD / ATI et S3 est toujours présent sur le marché des puces graphiques intégrées et à faible consommation.
Petit bout d'histoire:
A cette époque antique de la 3D accélérée, alors que le grand public était en pleine gestation, les stations de travail SGI, Sun ou Intergraph,... avaient déjà des modèles de cartes graphiques haut de gamme pour l’époque, mais à plusieurs milliers d'euros la carte de 32 mégas !
Peu de temps après la sortie par NVIDIA du RIVA TNT, la révolution allait pouvoir commencer avec le premier GPU destiné au grand public et pour un coût abordable. C’était la Geforce 256!
Le constructeur ATI n'allait pas tardé à suivre avec la sortie en 2000 du Rage 6 renommé par la suite R100, qui fut le premier Radeon 7200.
A ce stade de la course, les autres constructeurs se concentraient sur d'autres types de produits et marchés tellement la cadence engagée par NVIDIA devenait difficile à suivre. Il ne restait plus beaucoup de chances aux autres ; seul ATI continue de se battre pour rester en compétition avec NVIDIA.
Nous sommes au début de l'ère des GPU et la Geforce annonce clairement la couleur avec des performances encore jamais vues, voir supérieures à celles des cartes professionnelles de l'époque à la différence que ces cartes étaient destinées aux joueurs et ne supportaient pas encore les applications 3D professionnelles.
Peu de temps après la sortie des premiers GPU, les infographistes 3D avaient tous la même question en tête : pourrons-nous un jour utiliser des cartes bon marché pour épauler nos applications 3D ?
Imaginez à l'époque ce que la puissance naissante des GPU pouvait déjà augurer. Ne parlons pas non plus de l'envie de mettre à profit cette puissance pour venir aider les CPU déjà en pleine course au Ghz (phénomène qui a perduré quelques années durant).
Depuis quelques temps par contre, les CPU ont commencé à montrer leurs limites technologiques en terme de vitesse et se sont orientés vers les architectures parallèles multi-cœurs ou plus communément appelés multi-cœurs.
Les architectures parallèles ne sont pas nouvelles en soit dans l'histoire de l'informatique. Par contre, ce qui l'est, ce sont des architectures parallèles regroupées au sein d'une même « puce » et accessibles au grand public. C'est par cette voie qu'actuellement les CPU modernes arrivent à fournir des puissances de calcul toujours plus élevées.
Les GPU ont eux aussi évolué vers des architectures parallèles avec des cartes graphiques en « réseaux ». Le premier constructeur à avoir permis cette connexion parallèle fut 3DFX avec ses cartes Voodoo et sa technologie SLI, ensuite NVIDIA repris le SLI et ATI créa sa solution CrossFire.
Une autre solution plus abordable est de mettre plusieurs GPU sur une même carte (3DFX fut à nouveau le premier dans ce domaine) et depuis quelques années, plusieurs micro-GPU au sein d'une même puce.
A la différence des processeurs multi-cœurs qui en possèdent pour l'instant entre 2 et 8, les architectures GPU possèdent elles des dizaines voir centaines de micro-GPU. Ceci permet aujourd'hui d'obtenir des puissances de calcul bien supérieures dans les GPU par rapport aux CPU.
Une telle puissance ne pouvait donc pas rester cloisonnée au « simple » affichage graphismes et modèles 3D. C'est pourquoi les constructeurs ont continué leurs recherches sur l'évolution des GPU afin de les rendre ouverts et programmables à tout type de développements.
L'ère du GPGPU!
Nous entendons parler de CUDA, CTM, Brook+, Stream Computing,... Parmi tout cela, il devient difficile de s'y retrouver! Pour faire simple, sachez que la technologie utilisée pour faire de vos GPU des supers calculateurs se nomme : GPGPU (General-Purpose computation on GPU), la technologie GPGPU permet d'utiliser vos GPU pour décharger vos CPU lors de calculs lourds comme les simulations physiques, les rendus hors-ligne, l'encodage vidéo,...c'est en partant de cette technologie que les constructeurs ont chacun crée leurs propres solutions.
En ce qui concerne NVIDIA, leur solution se nomme CUDA, c'est une API programmée en langage C qui permet la connexion entre les applications et les GPU NVIDIA.
En concurrence directe de CUDA, le fondeur AMD / ATI a également créé une solution de programmation pour ses GPU. Le nom de code de cette technologie est CTM (Close-To-Metal, voir http://en.wikipedia.org/wiki/Close_to_Metal). A la différence de CUDA, cette solution est plus « hardcore » et permet un accès direct aux fonctions des GPU programmables en assembleur et ce sans devoir passer par des API.
Une fois la phase Beta de CTM terminée ATI l’a renommée ATI Stream et en a profité pour mettre à disposition des développeurs un kit de développement nommé Brook+ dérivé du langage C. Tout comme CUDA, il permet maintenant à un plus grand nombre de développeurs de s'intéresser à la solution ATI.
Pour l'instant, NVIDIA CUDA semble un peu mieux supporté par les éditeurs et développeurs d'applications grand public car d'une part la solution CUDA était présente avant la technologie ATI et d'autre part NVIDIA a mis en place une machine publicitaire redoutable. Cependant, la solution ATI se base sur l'API OpenGL et est donc plus ouverte, AMD prétend que sa solution de GPGPU est mieux supportée par la communauté scientifique... pour l'instant...
Qu'est-ce que les GPU peuvent bien apporter à nos applications de tous les jours?
Jusqu'à présent, cette puissance GPU était clairement cantonnée à l'affichage 3D et aux besoins scientifiques (simulations, recherches, universités,...) mais depuis quelques temps les fabricants ont commencés à relier leurs GPU aux applications via des drivers (pilotes des cartes graphiques) ou d'autres passerelles comme CUDA, Brook+, OpenCL,...
Par ex., les joueurs sur PC doivent probablement connaître la librairie de simulations physiques du nom de PhysX (voir http://www.nvidia.fr/object/nvidia_physx_fr.html). Au départ, cette librairie était développée par Ageia avec une carte au hardware dédié permettant l'accélération des calculs et simulations physiques dans les jeux.
Depuis le rachat par NVIDIA de PhysX, cette librairie est maintenant directement reliée à la puissance de vos cartes graphiques via les drivers graphiques NVIDIA. Il est possible de profiter de PhysX avec une carte ATI moyennant des drivers modifiés.
Dans un autre registre, la nouvelle suite de création graphique Adobe CS4 exploite directement la puissance des GPU (voir http://www.nvidia.fr/object/builtforadobepros_fr.html) pour vous permettre de manipuler des données graphiques de très grande taille sans devoir attendre (Déplacement, zoom, mise à l'échelle,...). Encore mieux l'application de filtres souvent lourds prend nettement moins de temps et l'encodage des vidéos en H.264 peut être jusqu'à 20X plus rapide !
Dans le logiciel de montage Adobe Premiere, vous pouvez travailler et encoder en temps réel plusieurs flux vidéos en HD avec une carte graphique de type Quadro, dont une créée spécialement pour la suite Adobe, la CX (Voir http://www.nvidia.fr/page/product_quadro_cx.html).
Note: De nombreux communiqués de presse annonçaient l'utilisation des GPU NVIDIA avec CUDA dans la suite graphique Adobe CS 4. Or, il semblerait bien qu'au final Adobe n'utilise pas CUDA mais l'API OpenGL pour rendre sa suite graphique compatible avec les différents constructeurs de cartes graphiques. Vous pouvez donc profiter de l'accélération matérielle de la suite Adobe avec une carte NVIDIA ou ATI.
NVIDIA a également commercialisé une carte graphique Quadro CX (au tarif avoisinant les 1,500 euros tout de même!) spécialement optimisée pour la suite graphique CS 4 d'Adobe.
D'autres solutions en dehors d'Adobe existent. Par ex., Badaboom Media Converter (voir http://www.badaboomit.com) qui permet l'encodage vidéo à grande vitesse, mais aussi Pixelmator (voir http://www.pixelmator.com), un logiciel de retouche et de création sur Mac ou encore (prochainement) le logiciel GIMP, ...
Pour les possesseurs de cartes ATI des solutions d'encodage arrivent. A l'instar des solutions utilisant les logiciels Adobe et les cartes NVIDIA, ATI offre une solution d'encodage gratuitement à ses utilisateurs. Celle-ci porte le nom d’Avivo et sera fournie avec les drivers Catalyst, d'autres solutions comme CyberLink PowerDirector ou Arcsoft seront également mises à jour pour tirer parti de la solution ATI Stream.
Dans un futur proche (2 à 3 ans), NVIDIA permettra aux graphistes 3D d'utiliser pleinement la puissance des GPU avec le moteur de rendu phare de l'industrie : Mentalray. Vous aurez alors des solutions de rendu grandement accélérées par rapport aux rendus CPU uniquement, voir des rendus en temps réel !
Nous sommes vraiment au début des possibilités de ce que les GPU vont pouvoir nous offrir. Attention encore faut-il que c'est technologies subsistent et que les développeurs suivent NVIDIA et ATI. En effet, à la suite de cet article vous allez découvrir que d'autres possibilités arrivent.
Quelle carte graphique pour l'utilisation de votre GPU?
Une question bien légitime vous a probablement traversé l'esprit pendant votre lecture : comment savoir si ma carte graphique permet l'utilisation des GPU dans mes applications ?
Pour la solution CUDA de NVIDIA vous devez posséder au minimum une carte graphique 8800GT ou supérieure et pour la solution ATI Stream vous devez posséder au minimum une carte graphique R600 ou supérieure.
Note: les solutions NVIDIA CUDA et ATI Stream sont gratuites et mise à la disposition des développeurs.
Le futur des calculs GPGPU?
NVIDIA et ATI ont développé des systèmes de visualisation ou clustering (rendu parallèle).
Aucun affichage graphique ne peut sortir directement de ce genre de cartes. Ce sont des cartes qui embarquent des architectures adaptées des GPU et destinées à être utilisées comme solutions pour venir épauler les très gros calculs scientifiques et futurs moteurs de rendu. Ce sont des systèmes de calculs bruts, utilisant les GPU comme unité de calculs en parallèle.
Ces systèmes se présentent sous plusieurs formes :
Cartes d'extension au format PCI.
Boitiers externes.
Racks serveurs.
Ici les constructeurs s'attaquent clairement aux marchés scientifiques et aux solutions de calcul GPGPU et HPC (High Performance Computing).
Les HPC remplaceront à terme les supers serveurs de calcul mais pour un coût et une maintenance bien moindre.
Ce genre de système n'est pas abordable pour un particulier et de toute façon cela ne lui servirait pas à grand chose pour l'instant. Seul le développeur averti et ayant des compétences en programmation graphique pourrait prétendre tirer parti des solutions de GPGPU!
En conclusion:
NVIDIA nous offre donc ici des solutions de calcul puissantes et abordables. Ce niveau de performance est atteint en utilisant des cartes graphiques grand public, professionnelles ou encore le système Tesla via le langage CUDA qui est « universel » à tous les GPU de la famille NVIDIA. Cela permet alors de décharger les CPU qui pourront s'acquitter plus rapidement d'autres tâches.
L'utilisation des GPU pour venir épauler nos applications graphiques va également permettre de réellement devenir productif en terme de qualité pour les supports HD / Blue-Ray DVD.
Si NVIDIA est pour l'instant l'acteur majeur sur le terrain du GPGPU, d'autres constructeur, et non des moindres, commencent à s'attaquer à ce genre de solutions. Il s'agit bien évidement d'AMD / ATI avec son ATI Stream et ses cartes FireStream.
Nous ne pouvions pas terminer cette article sans vous garder le meilleur pour la fin.
En dehors des deux grands constructeurs de cartes graphiques, il y a les géants Intel et IBM (The gods are back ? ^^ ).
Intel avec son projet au nom de code « Larrabee » s'attaque lui aussi aux marchés des cartes graphiques 3D et solutions de calcul massivement parallèle. L'approche est différente et utilise des architectures multi-cœurs X86. Cette architecture est maitrisée depuis longtemps (votre vieux Pentium 1 reprend du service!) et a été remaniée pour la cause avec des registres en 64 bits et des caches de type L2.
L'idée d'Intel est loin d'être « bête ». Le Pentium 1 est certes largement dépassé en terme de performances CPU mais mis en parallèle, il peut devenir redoutable, d'autant plus que sa fabrication est maintenant très simple et revient bon marché.
N'oublions pas qu'un des problèmes (parmi d'autres) majeurs de cette course à la puissance est la surchauffe des systèmes et leur consommation électrique. Le Pentium 1 ne chauffe pas beaucoup et consomme peu par rapport aux monstres actuels. Ce sera certainement un atout pour le projet « Larrabee ».
Les premières cartes basées sur « Larrabee » seront dotées de 32 cœurs pour ensuite évoluer vers quelques centaines voir milliers de cœurs en parallèle et ce pour un coût de fabrication relativement faible.
Dernier point de ce projet, pour faire communiquer « Larrabee » avec les applications, Intel n'aura pas beaucoup de mal car il ne s'agit n'y plus n'y moins d'une architecture X86 bien connue des développeurs et donc facilement programmable en langage C. Le recyclage des vieux Pentium risque bien de sonner le glas des GPU.
En dehors du projet d'Intel, n'oublions pas celui d'IBM avec son processeur CELL en parallèle qui risque fort de prendre part à cette aventure.
Voici pour terminer un autre article d’Eric Rollins sur l'utilisation du raytracing en temps réel sur une playstation 3 et donc l'architecture du CELL (voir http://eric_rollins.home.mindspring.com/ray/ray.html).
La course aux super calculateurs domestiques et abordables est donc lancée !
Nous ne pouvons pas encore dire qui l’emportera, mais les différents projets semblent très prometteurs.