n°13
Septembre
2010
Reconstruction tomographique avec CUDA

Le groupe ImaBio de l’IPHC développe une plate-forme d’imagerie multimodale (AMISSA : A Multimodality Imaging System for Small Animal) qui combine trois techniques d’imagerie médicale : la micro tomodensitométrie X donne une représentation anatomique de l’organisme, tandis que les techniques d’imagerie nucléaire, micro tomographe à émission de positrons et micro tomographe à émission monophonique, fournissent une représentation dite fonctionnelle, reflétant la physiologie et le métabolisme des organes. Pour cet article, nous nous concentrerons uniquement sur le micro tomodensitomètre X.

Notre micro tomodensitométre X a pour objectif d’imager un petit animal (rats, souris, petits oiseaux...). Il est composé d’un tube X et d’un détecteur en vis à vis qui tournent autour de l’animal. Typiquement, une acquisition recueille 768 projections d’une taille de 2048x2048 pixels où chaque valeur est codée sur des entiers courts : nous avons donc 6 Go de données en entrée. Notre but est de reconstruire le volume imagé à partir de ces projections dans un temps raisonnable, correspondant au temps nécessaire à l’acquisition des projections, soit 6 minutes environ. Le volume reconstruit est de l’ordre de 768*512*384 pixels codés sur des nombres décimaux en simple précision soit 540 Mo.

Il existe deux grandes classes d’algorithmes de reconstruction qui permettent de reconstruire un volume 3D à partir de ses projections : les algorithmes de type analytique et les algorithmes de type itératif. Les algorithmes analytiques consistent à rétro-projeter les valeurs mesurées, préalablement filtrées, dans un volume contenant l’objet à reconstruire, puis à sommer les valeurs de ces rétro-projections pour les différents angles d’acquisition. La deuxième classe d’algorithmes concerne les algorithmes de type itératif. Ils consistent, de façon itérative, à réaliser une estimation du volume à reconstruire, à projeter ce volume et à comparer projections estimées et projections mesurées. Une mesure de l’erreur et une correction de l’estimation du volume est alors effectuée. Du fait du très grand nombre de données en entrée à traiter, les algorithmes utilisés sont très gourmands en temps de calcul. L’algorithme de Feldkamp, très utilisé dans le cas d’une reconstruction de type analytique nécessite un temps de calcul de plus d’une heure, si l’on considère nos volumes de données à traiter et une exécution sur un unique thread. Cependant, les algorithmes de reconstruction sont hautement parallélisables, ce qui nous a permis de réduire significativement le temps de calcul.

Il y a six ans, un gros effort d’optimisation logiciel a été effectué pour porter un code de reconstruction analytique (Feldkamp) sur un cluster de douze PC, permettant la reconstruction en quasi temps réel. Un gain de 20 a été observé sur le temps de calcul permettant de passer d’un temps de reconstruction de 2 heures à 6 minutes. L’analyse des 6 Go de données des projections issues du micro tomodensitomètre X et la reconstruction d’un volume 3D de 500 Mo s’exécutaient alors pendant un temps équivalent au temps nécessaire à un examen de type CT. Le processus de reconstruction pouvant démarrer dès la première projection acquise, l’image 3D était disponible dès la fin de l’examen. Cependant l’achat et la maintenance d’un tel cluster représente un coût humain et financier non négligeable : pour information, le coût lié à l’achat du cluster en 2004 était de l’ordre de 20 keuros. Nous avons donc décidé en 2008, d’explorer une nouvelle voie qui consiste à utiliser un processeur graphique comme coprocesseur de calcul généraliste.

Les premières implémentations de calculs généralistes sur cartes graphiques datent d’une dizaine d’années. Le langage OpenGL (shaders) était alors utilisé : il était nécessaire d’adapter l’algorithme à implanter à un problème purement graphique. Dans le cadre de la tomographie, les premiers résultats obtenus étaient très encourageants ; cependant, la programmation de calculs généralistes sur cartes graphiques restait difficile à mettre en œuvre. L’apparition de CUDA et openCL ont permis une démocratisation de l’utilisation de processeurs graphiques pour le calcul parallèle. Depuis deux ans, bon nombre d’algorithmes de reconstruction tomographique ont été portés sur cartes graphiques et leur mise en œuvre sur des équipements commercialisés a fait son apparition.

Les premiers résultats, obtenus rapidement, ont été très encourageants. Nous avons rapidement atteint des performances en temps de calcul comparables voire meilleures que ce qui avait été observé avec le cluster de CPU avec une simple carte de jeux vidéo (Nvidia GeForce 8800GT). Ces premiers résultats ont été obtenus avec un PC, dédié pour le jeu, acheté à un prix de 1,8 keuros. Un algorithme de type itératif a également été porté sur GPU, en vue d’ajouter à la reconstruction des traitements de correction de phénomènes physiques tels que le durcissement de faisceau ou la diffusion, phénomènes qui entachent d’artéfacts les volumes reconstruits.

L’utilisation de cartes graphiques pour la reconstruction tomographique s’est avérée être un très bon choix : elle nous a permis de réduire considérablement nos frais d’infrastructure et d’obtenir de meilleurs résultats en terme de temps de calcul par rapport à une solution plus conventionnelle mettant en oeuvre un cluster de PCs. Si le portage d’un algorithme sur carte graphique est facilité par les langages de type CUDA ou openCL, l’optimisation du code pour une architecture de type processeur graphique reste un travail nécessaire si l’on souhaite tirer partie au mieux de la puissance de calcul du matériel. Cette phase d’optimisation nécessite du temps et une certaine expérience. La gestion des différentes mémoires présentes sur une carte graphique est un point crucial en ce qui concerne les performances d’un algorithme porté sur GPU. Cette gestion dépend à la fois du hardware utilisé et de l’algorithme mis en œuvre.

Damien Vintache

Rechercher
     

Responsables éditoriaux : Dominique Boutigny et Cristinel Diaconu
Comité de rédaction : Virginie Dutruel, Sébastien Grégoire, Eric Legay, Gaëlle Shifrin et Tiffany Thome

logo CCIN2P3
© CCIN2P3