11.7.5.1 : Projet Sympatick_G
La Tomographie d'Émission MonoPhotonique (TEMP) est une modalité d'imagerie médicale basée sur l'administration à un patient de molécules radio-labellisées. Le radio-isotope utilisé en TEMP est un émetteur de photons détectés par une gamma-caméra. En mode tomographique, la gamma-caméra tourne autour du patient et acquiert un ensemble de projections. À partir des projections acquises, on estime la distribution 3D du radio-isotope injecté. Les effets physiques comme l'effet Photoélectrique et la diffusion Compton sont responsables de la dégradation des images reconstruites, car ils sont à l'origine d'une fausse estimation de la concentration du produit radioactif et/ou de sa localisation. Si ces effets physiques ne sont pas corrigés, une dégradation importante du rapport signal-sur-bruit, de la restauration de contraste et de la résolution spatiale est observée dans les images reconstruites ce qui pourrait fausser le diagnostic établi par le médecin. Une méthode pour corriger ces effets physiques consiste à les modéliser et à intégrer le modèle dans un algorithme de reconstruction itérative. Plusieurs méthodes analytiques ont été utilisées pour modéliser ces effets (Photoélectrique, Compton). Bien que les méthodes analytiques soient rapides, leur mise en œuvre peut être complexe quand il s'agit de les implémenter pour des milieux hétérogènes (composition du corps humain) et les géométries originales de détecteurs. Aussi l'utilisation des simulations Monte-Carlo permet la modélisation des effets physiques subies par les photons durant un examen TEMP et donc la correction implicite lors de la reconstruction. Cependant, ces simulations sont très coûteuses en temps de calcul et leur utilisation est à ce jour inappropriée pour des applications cliniques où souvent le taux d'examens d'imagerie journalier est assez élevé surtout si des reconstructions d'images personnalisées sont demandées. Durant ce projet, nous proposons une méthode d'accélération sur carte graphique (GPU) de la modélisation des effets physiques subis par des photons à l'intérieur d'un patient et ce dans un délai acceptable en routine clinique.
Les simulations Monte-Carlo sont considérées comme un outil de référence pour la modélisation du parcours des particules dans la matière. Dans les applications médicales comme la médecine nucléaire et la radiothérapie, une modélisation rigoureuse des processus physiques ayant lieu permet de calculer avec précision le dépôt de dose dans le patient ainsi qu'une reconstruction d'images optimisée notamment dans le cas d'imagerie TEMP (Tomographie par Émission MonoPhotonique), TEP (Tomographie d'Émission de Positons) et TDM (Tomodensitométrie). Cependant, les simulations Monte-Carlo sont assez consommatrices en temps de calcul ce qui les rend incompatibles pour un usage en routine clinique.
Lors de ce projet, nous avons développé un code de simulation hybride (modèle Monte-Carlo analytique) qui s'exécute sur les architectures de cartes graphiques (multi GPU) permettant d'accélérer les calculs Monte-Carlo. Le code développé utilise des tableaux desections efficaces issus de Geant4 et de Gate. La dose déposée est calculée à partir d'un volume voxélisé et d'une description de sources mono-énergétiques rayonnant de façon isotrope. Nous utilisons des fichiers de directions pré-calculées et réparties uniformément sur la sphère. La méthode de dépôt de dose que nous utilisons est basée sur la méthode d'estimation des longueurs des traces (TLE).
L'optimisation du code a nécessité une réécriture quasi complète de l'algorithme de simulation pour prendre en compte les contraintes d'exécution sur un GPU. En effet, d'une part les branchements sont à éviter parce qu'ils ralentissent le flot d'exécution en introduisant une divergence des threads du GPU. D'autre part, pour exploiter le modèle SIMD (Single Instruction Multiple Data), nous avons regroupé les appels du kernel pour plusieurs gerbes de particules similaires. Finalement nous avons mis en œuvre des regroupements de code pour tirer parti du cache mémoire.
Le parallélisme inhérent aux GPUs nous a permis d'accélérer les temps de calcul. Le facteur d'accélération entre un code CPU de référence et notre code GPU est de l'ordre de~$200$ .