Orateur
Emmanuel Hornero
(LPNHE)
Description
Les cartes graphiques, profitant du dynamisme de l'industrie du jeu, se sont vu attribuer une puissance de
calcul et une flexibilité en terme de programmation qui rivalise avec un processeur central, le CPU. Aussi,
nous avons cherché à concevoir un module de calcul parallèle par GPU dépassant en puissance un CPU récent
basé sur le concept de GPGPU : General-Purpose computation on GPUs.
L'architecture parallèle du GPU actuel est basée sur le modèle SIMD (Single Instruction Multiple Data). La
même instruction (noyau) est appliquée simultanément à plusieurs données (flot) pour produire plusieurs
résultats. Ce modèle convient particulièrement bien aux traitements dont la structure est très régulière,
comme c'est le cas, par exemple, pour le calcul matriciel.
Entre 2001 et 2003 sont apparus les GPUs programmables : ce qui était jusqu'alors cablé directement dans les
circuits de la carte graphique est devenu programmable.
Il est intéressant de voir comment les microprocesseurs et les cartes graphiques vont vers une rencontre. Les
microprocesseurs se tournent vers le parallélisme (MMX, 3DNow!, SSE) et vers la multiplication des cores (dual
core), chose déjà présente depuis longtemps dans les cartes graphiques qui travaillent principalement sur des
vecteurs et des matrices (parallélisme) et possèdent plusieurs unités de textures et de shaders (sorte de
multiplication des cores). Les cartes graphiques, quant à elles, disposent de plus en plus de fonctionnalités,
leur permettant de réaliser de plus en plus de choses, ce qui les rapproche d'un microprocesseur capable de
réaliser des tâches génériques.
Nous avons imaginé un prototype de module permettant d'effectuer un certain calcul/algorithme (toujours le
même) sur chaque éléments de plusieurs flux de données en entrée. Ce modèle, suffisamment générique,
permet d'être utilisé dans beaucoup d'applications, dont le traitement d'images.
Les ressources CPU demandées par le traitement d'images sont fortes et les calculs souvent répétitifs. C'est
particulièrement pour ce genre d'applications que ce module de calcul a été pensé.
Ce module a été testé et implémenté dans la librairie Poloka d'outils de traitement d'images astronomiques de
l'expérience SuperNovae afin d'effectuer un filtre donné (une moyenne en l'occurrence) sur un maximum
d'images. Des comparatifs permettent de dégager un gain de facteur 10 en terme de temps de calcul entre la
version CPU et la version GPGPU. Des tests plus poussés sur des applications plus pertinentes sont en
projet.
Auteur principal
Emmanuel Hornero
(LPNHE)