L'évolution des cartes graphiques ces dernières années se caractérise par un parallélisme massif et par la généricité de programmation.
Augmenter le parallélisme a permis une augmentation du débit du rendu à la fois par la multiplication de la fréquence d'images générées et par accroissement en taille de ces dernières. La généricité a facilité l'émergence de nouveaux effets de rendu en temps réel grâce à l'apparition de composants programmables comme les unités de pixelisation programmables (programmable pixel shaders units).
Ces deux facteurs réunis ont rendu les cartes graphiques actuelles très attractives pour réaliser des calculs intensifs dépassant le cadre du rendu visuel. La puissance de crête d'une des nouvelles cartes dépasse celle de certains super-calculateurs pour un prix de quelques centaines d'euros ! C'est l'émergence d'une nouvelle technique appelée programmation généraliste de cartes graphiques (GPGPU, General-Purpose computation on Graphics Processing Units).
Le GPGPU est soutenu par les constructeurs des cartes graphiques comme NVIDIA et ATI/AMD qui y voient un nouveau marché pour leurs produits haut de gamme. Ils ont introduit des langages de haut niveau et des environnements de développement facilitant l'accès aux non spécialistes. Aujourd'hui, le calcul massivement parallèle se démocratise. L'évolution des processeurs des ordinateurs s'oriente aussi vers le parallélisme. Il est donc possible que les techniques du GPGPU d'aujourd'hui deviennent les bases de la programmation des PC de demain.
Cet article donne les clefs pour comprendre comment utiliser les cartes graphiques pour augmenter la puissance utile de calcul des ordinateurs. Une première partie est consacrée à l'évolution des cartes graphiques qui permettent de faire du GPGPU. Dans une deuxième partie, une description des architectures actuelles permet au lecteur de saisir les qualités et limitations des cartes graphiques pour le calcul. La troisième partie décrit les principaux langages de programmation orientés pour le calcul des cartes graphiques. Un exemple concret dans la quatrième partie permettra au lecteur d'apercevoir les enjeux de ces techniques et va l'aider à comprendre quel type de calcul est possible d'y être porté avec un bon retour d'investissement. La dernière partie décrit les évolutions à venir qui permettront une convergence plus forte entre CPU (Computer Processor Unit) et GPU (Graphic Processor Unit), ainsi que les évolutions de la couche logicielle en vue d'une standardisation de la programmation pour assurer la portabilité des développements.
Les références entre crochets sont développées dans la rubrique Pour en savoir plus.