Simulation Monte-Carlo sur GPU application en physique médicale école d été GPU, 1 er Juillet 2011 Gipsa Lab Julien Bert Laboratoire du Traitement de l Information Médicale LaTIM - INSERM U650 CHU Brest, France
Plan Introduction Simulation Monte-Carlo Application en physique médicale Pourquoi GPGPU? Monte-Carlo sur GPU Structure de donnée Structure de la simulation Détails sur l implémentation Radiographie X du thorax Simulation Résultats Multi-GPU Conclusion 2
Simulation Monte-Carlo 1940 - Recherche et fabrication de la bombe atomique au Los Alamos (Nouveau Mexique) John von Neumann, Stanislaw Ulam et Nicholas Metropolis Simulation numérique en physique des particules transport : déplacement des particules dans la matière (interactions) Interactions particule/matière sont des processus aléatoires méthode d échantillonnage statistique aléatoire Clin d oeil à Monte-Carlo (casino) emblème du jeux de hasard 3
Simulation Monte-Carlo Interaction des particules avec la matière 4
Simulation Monte-Carlo Interaction des particules avec la matière 1. Vol de la particule 5
Simulation Monte-Carlo Interaction des particules avec la matière 1. Vol de la particule 2. Type d interaction 6
Simulation Monte-Carlo Interaction des particules avec la matière 1. Vol de la particule 2. Type d interaction 3. Interaction 7
Simulation Monte-Carlo Interaction des particules avec la matière 8
Simulation Monte-Carlo MC : «random walking» La statistique doit suivre la physique Prendre en compte : - le type de particule - l énergie de la particule - le matériau traversé -... 9
Simulation Monte-Carlo http://www.laradioactivite.com La grandeur physique reliée à la probabilité d interaction d une particule pour une réaction donnée est la section efficace. Utilisation de tables de sections efficaces Echantillonnage aléatoire + section efficace : - distance de vol de la particule - type d interaction Section efficace Echantillonnage aléatoire 10 Moyenne
Application en physique médicale!" Diagnostique et thérapie par les particules! $#! "#!" http://www.jens-langner.de Lamare et al., Phys. Med. Biol., 2006 Jan et al., Phys. Med. Biol., 2011 Tomographie d émission - Simuler / reconstruire - Corriger (diffusion) Tomographie d émission - Construire - Optimiser Radiothérapie - Simuler - Planifier/Contrôler 11
Pourquoi GPGPU?! Loi des grands nombres = f( 1 N ) La simulation Monte-Carlo n est pas utilisée en routine clinique La précision dépend du nombre de particules simulé Cluster d ordinateur - investissement - maintenance - encombrement - disponibilité - fonctionnement Impossible dans un environnement clinique 12
Pourquoi GPGPU?! Carte graphique : - facilité d achat (pc conventionnel) - faible cout (achat et fonctionnement) - encombrement un pc = 4 GPU (GTX 590) - pas de maintenance - mise en service facile Projet ANR hgate Hybrid GEANT4 Application pour la Tomographie d Emission Faisabilité d une simulation MC sur GPU?? ANR-09-COSI-004 débuté en février 2010 (36 mois) LaTIM, CPPM, IPHC, CREATIS, IMNC, SHFJ Projet de recherche fondamental 13
Plan Introduction Simulation Monte-Carlo Application en physique médicale Pourquoi GPGPU? Monte-Carlo sur GPU Structure de donnée Structure de la simulation Détails sur l implémentation Radiographie X du thorax Simulation Résultats Multi-GPU Conclusion 14
Structure de donnée Particules E E E E E E E dx dx dx dx dx dx dx..................... Structure de type SoA (structure of array) accès contigu = optimisé Structure d un stack - énergie (E) - direction (dx, dy, dz) - position (px, py, pz) - état du générateur de nombre aléatoire (seed) - particule en vie? (live) - particule dans le volume? (in) 35 octets/particule, grille de 10 millions : 350 Mo CPU CPU GPU 15
Structure de la simulation!"#"$%&'#( )%*+,%&'#( -#."$%/&'#( Génération: - charger les particules dans le stack en fonction de la source Navigation: - calculer la distance de vol de la particule (SE) - déplacer la particule jusqu à la prochaine interaction (volume voxélisé) Interaction: - déterminer l effet physique (SE) - appliquer l effet sur la particule (diffusion, absorption) Extraction: - les particules qui sortent de l espace de travail sont enregistrées dans un fichier espace de phase. 01.$%/&'#( 23%4"( 45%/"( Eléments récurrents dans la simulation Générateur de nombres pseudo-aléatoires Effets physiques 16
Structure de la simulation!"#"$%&'#( )%*+,%&'#( -#."$%/&'#( Génération: - charge/recharge les particules dans le stack en fonction de la source Navigation: - calcul le vol de la particule dans l espace voxélisé (CS) - vérifie si la particule est toujours dans l espace de travail Interaction: - détermine l effet physique (CS) - applique l effet sur la particule (diffusion, absorption) Extraction: - les particules qui sortent de l espace de travail sont enregistrées dans un fichier espace de phase. 01.$%/&'#( 23%4"( 45%/"( Eléments récurrents dans la simulation Générateur de nombres pseudo-aléatoires Effets physiques 17
Générateur de nombres pseudo-aléatoires Type de générateur - congruentiel linéaire - longue période > 2 64 - générer des valeurs une à une Park-Miller et Marsaglia-Zaman Seed 1 Seed 2 Seed 0 (initial) Random Random Random valeur valeur valeur Chaque particule doit avoir la valeur du seed courant en mémoire 18
Les effets physiques Calcul des sections efficaces - table par effet physique et par élément atomique - les tables sont chargées en mémoire texturée - pré-calcul des indexes d accès en Z (mémoire constante) 19
Les effets physiques Calcul des sections efficaces - calcul de la section efficace d un matériau donné pour une énergie E eau air corps poumon côte vertèbre coeur intestin sein rate sang foie rein cerveau pancréas 20
Navigation!"#"$%&'#( Navigation : déplacer la particule à l intérieur de l espace voxélisé jusqu à la prochaine interaction. )%*+,%&'#( -#."$%/&'#( 01.$%/&'#( 23%4"( 45%/"( Distance de vol de la particule : - lecture du matériau (position de la particule) - calcul de la section efficace La distance de vol l est calculée en fonction d un nombre aléatoire ξ et de la somme des sections efficaces du matériau traversé par la particule d énergie E. Raytracing : - environnement voxélisé (mémoire texturée) - mettre à jours le vol de la particule en fonction des matériaux traversés 21
Interaction!"#"$%&'#( Choisir l interaction : - aléatoirement via les sections efficaces )%*+,%&'#(! "#!" -#."$%/&'#( 01.$%/&'#( 23%4"( 45%/"(!" Rayleigh Compton Interactions : - photoélectrique (absorption) - Rayleigh (angle de diffusion) - Compton (angle de diffusion + énergie)!"! "# Photoélectrique Mise à jours de la particule (quaternion) 22
Plan Introduction Simulation Monte-Carlo Application en physique médicale Pourquoi GPGPU? Monte-Carlo sur GPU Structure de donnée Structure de la simulation Détails sur l implémentation Radiographie X du thorax Simulation Résultats Multi-GPU Conclusion 23
Radiographie X du thorax Le patient est un fantôme : - 10 matériaux (indexés) - voxel de 4 mm 3 - volume de 128x46x63 voxels - tumeur poumon droit C22 Fantôme (thorax) T10 C35 24
Radiographie X du thorax L examen : - de dos (incidence postéro-antérieure) - distance source - patient 1 m 80 - source isotrope avec colimateur - photon - espace voxélisé 128x46x450 voxels Simulation : - effet Compton et photo-électrique (pas de Rayleigh) - tire à 40 kev, 100 kev et 200 kev - nombre de particules entre 100.10 3 et 10.10 6 Détection : - PAS DE DETECTEUR - raytracing de l espace de phase sur un plan 25
Radiographie X du thorax Résultats : - pour 10 millions de particules : version GPU cuda 5,04 s (GTX 280-240 SP - 1.296 GHz - 933 GFLOPS) version CPU C 315,00 s x62,5 (2,83 GHz) des heures en minutes version Geant4 C++ 3023,00 s x599 10.10 6 40 kev 100.10 3 100 kev 500.10 3 100 kev 1.10 6 100 kev 10.10 6 100 kev 10.10 6 200 kev 26
Plan Introduction Simulation Monte-Carlo Application en physique médicale Pourquoi GPGPU? Monte-Carlo sur GPU Structure de donnée Structure de la simulation Détails sur l implémentation Radiographie X du thorax Simulation Résultats Multi-GPU Conclusion 27
Multi-GPU Stratégie Multi-CPU/GPU : - 1 CPU / n GPU, thread OS - 1 CPU / 1 GPU, thread matériel Multi-threading CPU CPU CPU CPU CPU MPI (Message Passing Interface) CUDA GPU GPU GPU GPU GPU GPU GPU GPU CUDA «soft thread» «hard thread»!! Scalabilité!! capacité du soft à être utilisé sur un système plus grand (mise à l échelle) 28
Multi-GPU CPU Noeud maître MPI Réseau Ethernet (répertoire partagé) CPU CPU CPU CPU CPU CPU CPU CPU CUDA GPU GPU GPU GPU GPU GPU GPU GPU Noeud 1 Noeud 2... Noeud i Cluster CPU/GPU 29
Multi-GPU Côté CPU : Côté GPU : Compilation : nvcc -c files.cu --compiler-options -fpic nvcc -o file.so -shared files.o mpic++ -c main.cpp mpic++ -o main main.o file.so Exécution : mpirun -np 2./main CPU CPU Résultats : 1 CPU (10.10 6 ) 315,00 s 1 CPU/GPU (10.10 6 / GPU) 6,34 s x49,6 2 CPU/GPU (5.10 6 / GPU) 3,90 s x80,7 x1,62 30 GPU GPU 2x GTX 280 Disque dur
Conclusion Multi-GPU : - gain en vitesse - apporte de nouveaux problèmes/limitations - retour à l optimisation GPU Simulation MC (vitesse d'exécution x60) : solution GPU solution classique (low cost) 1 PC 1 000 10 PC 10 000 1 GPU (>240 SP) 150 10 CPU (6 coeurs) 1 700 1 150 11 700 Etude de faisabilité = ok x10 6,00 4,50 3,00 1,50 0 1 2 3 4 5 6 Théorique Multi-GPU MC sur GPU : x60 optimiser le code - MC, code typique GPGPU (divergence, beaucoup d accès en mémoire) - «stream sorting» diminuer la divergence - copie asynchrone, optimiser le rapport CPU/GPU - contraintes non réductible ex.: lecture de tables 31
Questions? 32