Programmation GPU

Acquis du module

La programmation GPU (Graphic Processing Unit) consiste à être en mesure de programmer sur la carte graphique. Les processeurs de cartes graphiques sont aujourd’hui les unités de calculs parallèles les plus efficaces par rapport à leur facilité d’accès. Programmer sur carte graphique de développer des effets avancés pour des applications en synthèse d’image (subdivision adaptative, shaders avancé), permettant ainsi d’améliorer le rendu de scène 3D complexe tout en gardant un résultat temps réel. Notons également la démocratisation de l’utilisation des cartes graphiques désormais directement accessibles par les navigateurs internet standards pour des applications Web modernes et efficaces.
Mais les cartes graphiques permettent également de réaliser des applications autres qu’en synthèse d’images. Ainsi en proposant le calcul parallèle générique par le biais du GPGPU (General Processing GPU), la programmation sur carte graphique devient un acteur majeur du calcul à haute performance (HPC). Elle ouvre ainsi la voie à la mise en place de calculs très efficace pour les applications diverses (simulation numérique, calculs financiers, statistiques, analyse du signal, etc).
A l’issue de la formation, les étudiants seront en mesure d’implémenter des algorithmes basés sur la de la programmation parallèle pour l’architecture des cartes graphiques récentes pour des applications graphiques ainsi que du calcul général à la fois en programmation standard et en programmation Web.

  • Identifier
    • Les caractéristiques d’une programmation du carte graphique.
    • Les différents langages de programmation de cartes graphiques (GLSL, CUDA, OpenCL).
    • L’utilisation de carte graphique par le biais du navigateur (WebGL).
  • Concevoir
    • Des algorithmes parallèles qui puissent être écrits sur carte graphique.
  • Mettre en oeuvre
    • Une visualisation avancée sur la carte graphique en GLSL.
    • L’utilisation des cartes graphiques par le navigateur web.
    • Un programme simple de GPGPU permettant d’accélérer un traitement quelconque.

Contenu

Programmation GLSL avancées

Le standard OpenGL propose un langage de communication avec la carte graphique sous la forme de shaders écrits en GLSL. Au cours de ce module, les étudiants développeront des shaders avancés permettant de développer des effets classiques utilisés par exemple dans les jeux vidéos: Utilisation du Frame Buffer Object (FBO) pour réutiliser la sortie du calcul de la carte graphique, subdivision adaptative par le Geometry Shader, lancé de rayons sur carte graphique, etc.

Programmation WebGL

Le langage WebGL permet, par le biais d’appels JavaScript de lancer des shaders exécutés sur la carte graphique depuis un navigateur. Au cours de ce module, les étudiants verront la mise en place de ces appels JavaScripts liés au shader et implémenteront un démonstrateur d’une scène 3D interactive directement utilisable dans un navigateur standard.

Programmation GPGPU

Le GPGPU peut se faire en adaptant le langage de shaders pour des données autres que graphiques ou en utilisant directement un langage spécifique tel qu’OpenCL ou CUDA. Les étudiants verront au cours de ce module comment réutiliser la sortie de la carte graphique en tant que résultat de calculs intermédiaire et étudieront les spécificités indispensables pour la programmation sur architecture hautement parallèle (minimisation de synchronisation, localité de la mémoire pour utilisation rapide des caches, etc).

Comments are closed