CUDA et Programmation Générale sur GPU

Présentation

Contexte

Dans le cadre de la dernière année d'études en ingénierie de l'informatique et des réseaux au sein de l'UFR Ingénieurs 2000 de l'Université Paris Est-Marne la vallée, il est demandé à chaque étudiant de réaliser une présentation de 45 minutes sur le thème de leur choix, ainsi qu'un mini-site web présentant plus en avant les points abordés lors de la présentation.

Ces exposés sont encadrés et dirigés par Dominique Revuz, directeur de l'UFR Ingénieurs 2000 à l'Université de Marne-la-vallée, et par Etienne Duris, responsable de la filière Informatique et Réseaux au sein de cette UFR.

Le but de ces exposés est de présenter une technologie récente non étudiée au cours des trois années de la formation d'ingénieur proposée par l'école. Chaque exposé se compose d'une présentation (effectuée devant l'ensemble de la promotion) et d'un mini-site internet présentant la technologie étudiée.

Sujet

Le sujet que j'ai choisi de présenter est la technologie CUDA et la programmation générique sur processeur graphique.

En effet, étant particulièrement attentif à l'évolution du matériel informatique et des cartes graphiques en particulier, j'ai suivi l'évolution de la façon de programmer sur celles-ci, et notamment l'apparition des technologies de programmation générique.

Ainsi, cet exposé à été l'opportunité pour moi de creuser un peu plus ce sujet, en l'attaquant d'un point de vue plus technique.

L'objectif de ce site est de donner un aperçu de la technologie CUDA en s'adaptant à un public néophyte ayant quand même des connaissances d'informatique plutôt avancées, mais pas à un expert du domaine qui ira plutôt chercher ses informations sur le guide de programmation CUDA officiel.

Introduction

En une vingtaine d'années, les capacités de calcul des processeurs graphiques (GPU, Graphical Processing Unit) pour ordinateurs personnels ont considérablement évoluées.

Depuis l'accélération de quelques fonctions fixes de rendu graphique, les GPU ont petit à petit incorporé l'accélération de fonctions plus génériques, pour atteindre de nos jours un niveau de programmabilité similaire à celui d'un processeur central (CPU, Central Processing Unit).

Ainsi sont apparues des technologies permettant d'exécuter des programmes génériques sur GPU. Parmi celles-ci, la technologie CUDA (Compute Unified Device Architecture) de la société nVIDIA s'est imposée comme la solution la plus aboutie.

Cette technologie repose sur des extensions du C qui permettent de définir les portions de codes à exécuter sur le processeur graphique, ainsi qu'un certain nombre de fonctions de support (gestion des transferts mémoire, etc.).