• Aucun résultat trouvé

Tel que pr´esent´e pr´ec´edemment, les simulations Monte Carlo reposent sur un g´en´erateur de nombres al´eatoires et n´ecessitent beaucoup de photons pour obtenir des r´esultats justes et pr´ecis. Un aspect presque aussi important que le r´esultat de la simulation lui-mˆeme consiste en un calcul de l’erreur due `a la nature al´eatoire de la simulation. En effet, le r´esultat de la simulation peut ˆetre en accord avec certaines valeurs de r´ef´erences mais si l’incertitude est ´

enorme, la simulation ne veut plus vraiment rien dire. Une premi`ere fa¸con d’estimer l’incer- titude et utilis´ee par le code BEAM [35] consiste `a s´eparer chaque simulation compl`ete en N simulations identiques plus petites, avec N = 10 habituellement. L’incertitude sur une quantit´e X est alors calcul´ee avec

sX¯ = s PN i=1 Xi− ¯X  N (N − 1) (2.6)

avec Xi le r´esultat obtenu lors de la simulation ni, i ∈ [1, N ]. Trois probl`emes sont toutefois

point´es par Walter et al. [36]. Tout d’abord, le petit nombre de simulations N am`ene lui- mˆeme une incertitude sur le calcul de l’erreur statistique. Ensuite, aucune corr´elation entre les photons lanc´es ne peut ˆetre tenue en compte comme c’est le cas lors de l’utilisation r´ep´et´ee d’un

espace de phase. Finalement, cette technique n´ecessite beaucoup de m´emoire sur l’ordinateur car les r´esultats de plusieurs simulations doivent ˆetre conserv´es. C’est pourquoi le calcul de l’incertitude histoire par histoire a ´et´e d´evelopp´e par Walter et al. en se basant sur les travaux de Sempau et al. [37]. Avec cette technique, c’est le nombre total d’histoires, donc de photons simul´es, qui est utilis´e pour trouver l’incertitude en calculant

sY¯ = v u u u t 1 N − 1   PN i=1Yi2 N + PN i=1Yi N !2  (2.7)

avec N maintenant le nombre de photons simul´es. Cette nouvelle technique n´ecessite main- tenant d’emmagasiner Yi, la quantit´e d´epos´ee dans un voxel, en mˆeme temps que Yi2, ce qui requiert moins de m´emoire que la m´ethode pr´ec´edente. Aussi, comme le nombre de photons simul´es est tr`es ´elev´e, le probl`eme d’impr´ecision sur le calcul d’incertitude en raison d’un pe- tit ´echantillonnage ne tient plus. Finalement, la corr´elation entre les photons est directement prise en compte dans la valeur de N utilis´e. Par exemple, si un espace de phase de N photons, produit par la simulation de N0 particules, est r´eutilis´e M fois, seulement N0 est utilis´e pour calculer l’incertitude et non M · N0.

L’algorithme Monte Carlo demeure toujours pour l’instant l’outil de calcul par excellence de distributions de doses en physique m´edicale. Malgr´e les techniques d’optimisation pr´esent´ees, les temps de calcul demeurent encore trop lent pour une application clinique en curieth´erapie. Plusieurs algorithmes Monte Carlo ont ´et´e d´evelopp´es en utilisant diverses approximations ou techniques qui n’ont pas ´et´e pr´esent´ees pr´ec´edemment. Mentionnons entres autres les codes ALGEBRA [38], MCPI [39] ou BrachyDose [40]. Ces trois codes fonctionnent sur des ordi- nateurs standards (CPU). Toutefois, depuis 2007, la compagnie de cartes graphiques (GPU) NVidia d´eveloppe un langage de programmation permettant d’exploiter le parall´elisme de cal- cul des composantes des GPU. Il s’agit d’une voie d’avenir pour le calcul haute performance et son application au Monte Carlo en physique m´edicale est d´ej`a bien commenc´ee.

Chapitre 3

Calculs parall`eles sur processeurs

graphiques

Les cartes pour l’affichage graphique pr´esentes dans les ordinateurs modernes ont ´et´e con¸cu principalement afin de satisfaire les besoins de l’industrie du jeu vid´eo. En effet, avec l’aug- mentation de la compl´exit´e de l’affichage graphique de ces jeux, la puissance des cartes a augment´e de fa¸con importante au cours des derni`eres ann´ees. Cependant, il n’y a pas que l’industrie des jeux vid´eos qui profitent de ces d´eveloppement. En effet, le haut niveau de pa- rall´elisation des op´erations sur les cartes graphiques attire aussi l’attention des programmeurs. Ceux-ci voyaient un moyen compact et abordable pour effectuer des calculs plus g´en´eraux en parall`ele sans la n´ecessit´e d’avoir acc`es `a une grappe de calcul. C’est toutefois en 2007 avec le lancement de l’architecture CUDA [41], pour Compute Unified Device Architecture, par la com- pagnie NVIDIA que le calcul sur processeurs graphiques a gagn´e en popularit´e. Avec quelques ajouts simples au langage informatique C, le calcul sur carte graphique est maintenant de- venu accessible pour les programmeurs plus ou moins aguerris. Les applications scientifiques du calcul sur processeur graphique est dor´enavant tr`es r´epandu comme en t´emoigne la figure

3.1 [42].

Dans ce chapitre, le calcul sur carte graphique avec la plate-forme CUDA est bri`evement pr´esent´e. Bien qu’assez techniques, les ´el´ements pr´esent´es permettront de mieux comprendre comment a ´et´e con¸cu l’algorithme Monte Carlo sur processeur graphique d´ecrit au prochain chapitre. Aussi, mˆeme si diff´erentes alternatives se pr´esentent aux programmeurs d´esirant effectuer des calculs sur processeurs graphiques, la plate-forme CUDA est consid´er´ee ici en raison de sa facilit´e d’utilisation du point de vue de la programmation. Plusieurs concepts n´ecessaires `a la compr´ehension d’un algorithme utilisant les processeurs graphiques seront pr´esent´es dans les prochaines sections.

Figure 3.1: Diff´erents secteurs d’applications du calcul sur carte graphique pr´esent´es sur le site web de NVIDIA [42].

Figure 3.2: Diff´erence structurelle entre les processeurs standards et graphiques [41].

3.1

Architecture d’une carte graphique

Tout comme les processeurs standards `a l’int´erieur des ordinateurs de bureau, les processeurs graphiques sont compos´es de plusieurs millions ou milliards de transistors. L’utilisation de ces transistors diff`ere cependant : pour un processeur standard, une bonne partie est consacr´ee au contrˆole et `a la gestion des donn´ees alors que sur une carte graphique, la majorit´e s’occupent des op´erations `a effectuer comme le montre la figure3.2[41]. C’est d’ailleurs la raison faisant en sorte que les processeurs graphiques sont aptes `a calculer de fa¸con intensive sur des donn´ees en parall`ele. Sur la figure, ce sont les composantes vertes, les unit´es d’arithm´etique et de logique (arithmetic logic unit ou ALU en anglais), qui se chargent d’effectuer les op´erations sur les donn´ees.

Une connaissance approfondie de la structure interne d’une carte graphique est loin d’ˆetre n´ecessaire afin de programmer avec la plate-forme CUDA. Cependant, certaines caract´eristiques de son architecture permettent de comprendre ce qui se passe lorsque des instructions sont envoy´ees. La figure3.3[43] montre l’aspect d’un multi-processeur (Streaming Multiprocessor ou SM) moderne qu’on trouve sur une carte graphique. Il apparaˆıt ´evident qu’il s’agit d’une structure complexe poss´edant beaucoup de composantes. Celles d’int´erˆet pour le moment sont

Figure 3.3: Allure g´en´erale d’un multi-processeur sur une carte graphique [43]. carte # SM # coeurs/SM GFLOPS

8800 GT (2007) 16 8 504 GTX 580 (2010) 16 32 1581 GTX Titan (2013) 14 192 4500

Table 3.1: Puissance de calcul pour diff´erentes cartes graphiques [44].

les stuctures en vert qui s’appellent coeur CUDA. Ce sont ces composantes qui effectuent les calculs en parall`ele sur la carte graphique. De fa¸con simple, plus il y a de coeurs CUDA pour un multi-processeur, plus il y a de donn´ees trait´ees en mˆeme temps en parall`ele. La figure 3.3

montre que ces coeurs CUDA sont nombreux. ´Etant donn´e que plusieurs multi-processeurs comme celui de la figure 3.3se trouvent sur la carte graphique, la puissance de calcul et le ni- veau de parall´elisation augmentent tr`es rapidement. D’ailleurs, le nombre de coeurs CUDA par multi-processeur est la composante principale qui fait augmenter la performance des calculs comme le montre le tableau3.1[44]. Pour ´evaluer la puissance d’une carte graphique, le nombre d’op´erations effectu´ees par seconde sur des nombres d´ecimals est d´etermin´e en GFLOPS pour Billion(G) floating-point (FL) operations (O) per second (S). Le tableau 3.1 montre qu’avec l’´evolution et le d´eveloppement de la technologie des cartes graphiques au cours des ann´ees, la puissance de calcul s’est accrue tr`es rapidement. La figure 3.4 [41] pr´esente quant `a elle

Figure 3.4: ´Evolution de la puissance de calcul en GFLOPS avec les ann´ees selon le mod`ele de carte graphique [41].

l’´evolution avec les ann´ees de la puissance de calcul des processeurs standards comparative- ment `a celle des cartes graphiques.

Documents relatifs