• Aucun résultat trouvé

4.2 Implémentation du MSV dans PENELOPE

4.2.2 Description du plugin « MSV »

Le modèle de sources virtuelles a été implémenté dans PENELOPE++ sous la forme d’un plugin de type Source qui est chargé par PENELOPE au moment de l’exécution. Ce plugin hérite de la classe ‘Source’ représentée sur la Figure 4-8, pour lequel des méthodes virtuelles ont été codées. Le schéma d’implémentation du MSV est représenté sur la Figure 4-9 et se décline en deux modules principaux :

- le module n°1 gère la mise en forme des histogrammes corrélés 4D : cette première étape correspond à une phase d’initialisation pendant laquelle les différents fichiers contenant les informations relatives au MSV sont chargés et traités pour une utilisation optimale,

- le module n°2 permet d’utiliser les histogrammes corrélés pour générer des particules dans le code MC. C’est ce module qui est intégré à PENELOPE.

Figure 4-9 : Description des deux modules créés pour la mise en place et l’utilisation du MSV : (1) module de création des histogrammes corrélés 4D, (2) module d’utilisation du MSV dans le code PENELOPE.

4.2.2.1 Mise en forme des histogrammes corrélés : phase d’initialisation

Cette étape d’initialisation consiste d’abord à détecter le nombre de sources élémentaires à charger (une seule source si on utilise le modèle mono-source ou trois sources – cible, collimateur primaire et cône égalisateur - si on utilise le modèle multi-sources), puis à lire et à traiter les informations des différents fichiers sources. Un contrôle est tout d’abord réalisé pour vérifier la cohérence des sources élémentaires entre elles : la somme des intensités des sources élémentaires utilisées simultanément doit être égale à un et toutes les sources doivent avoir été générées avec le même PSF.

121

La procédure de tirage aléatoire dans les histogrammes 4D doit ensuite être optimisée pour préparer une utilisation efficace du MSV dans le code MC PENELOPE. Dans certains cas, elle requiert une réorganisation des histogrammes 4D. Plusieurs procédures de tirage aléatoire ont été considérées et sont présentées dans la suite : le parcours de l’histogramme, la dichotomie, la méthode de Walker et la méthode de Walker améliorée.

Parcours de l’histogramme et dichotomie

Lorsqu’on travaille avec un maillage irrégulier comme cela est souvent le cas ici, on peut appliquer deux procédures simples pour le tirage du canal qui utilisent toutes deux les histogrammes 4D en l’état : le parcours de l’histogramme 4D et la dichotomie. Prenons l’exemple de l’histogramme représenté en Figure 4-10 : il ne s’agit pas de l’histogramme 4D directement mais de sa distribution cumulée car c’est elle qui est utilisée dans PENELOPE pour le choix d’un canal. Chaque canal est délimité par des frontières dont les valeurs sont comprises entre 0 et 1. On tire au hasard un nombre. Ce nombre est associé à un canal de l’histogramme 4D et PENELOPE doit parcourir la distribution pour le trouver. La Figure 4-10 illustre un parcours simple de l’histogramme : cette façon de procéder est très peu efficace car il faut tester les canaux disponibles un par un, jusqu’à trouver celui qui est recherché. La complexité8 de cet algorithme est

linéaire avec le nombre de canaux. La dichotomie, illustrée en Figure 4-11, est une méthode plus efficace, car sa complexité est logarithmique. On commence par se placer au milieu de l’histogramme. Si le canal cherché n’est pas dans la première moitié de l’histogramme, alors il est nécessairement dans la deuxième. On se place au milieu de cette deuxième moitié et on réitère l’opération jusqu’à trouver le canal recherché.

Figure 4-10 : Identification d’un canal par parcours de l’histogramme 4D.

Figure 4-11 : Identification d’un canal par dichotomie

8 La complexité d’un algorithme est reliée au nombre d’opérations à effectuer pour réaliser une tâche. Ici,

la tâche correspond à l’identification d’un canal. Les opérations considérées sont l’addition, la comparaison et l’accès mémoire.

122

Finalement, avec ces deux méthodes, la vitesse de génération des particules dépend du nombre de canaux qui composent l’histogramme 4D. Puisque nous allons travailler avec des nombres importants de particules à générer (de l’ordre de 1010), il est crucial de choisir une méthode de tirage aléatoire rapide.

Les méthodes de parcours de l’histogramme et de dichotomie risquant d’être assez lentes dans notre cas, nous avons choisi d’implémenter et de tester deux autres méthodes de tirage aléatoire plus rapides, la méthode de Walker et sa version améliorée.

Méthode de Walker

La méthode de Walker [324] décrite sur la Figure 4-12 est celle qui a été utilisée par Schach von Wittenau et al. [3].

Initialisation

L’histogramme est d’abord réorganisé de manière à ce qu’il devienne uniforme. On calcule la moyenne de l’histogramme. On identifie le canal le plus haut et le plus bas. Dans le cas présenté par la Figure 4-12, ce sont les canaux 2 et 1. On déplace une partie du canal 2 dans le canal 1 jusqu’à ce que ce dernier atteigne la valeur moyenne de l’histogramme. Le canal le plus haut est toujours le numéro 2, mais le plus bas est le numéro 4. Là encore on déverse une partie du canal 2 dans le canal 4 jusqu’à ce que ce dernier atteigne la valeur moyenne de l’histogramme. La hauteur du canal est lui aussi égale à la moyenne. Puisque le canal 3 était déjà à la hauteur de la moyenne, l’histogramme est maintenant uniforme. Un tableau qui décrit le contenu des canaux lui est associé. Le canal 1 est rempli à 50 % de lui-même et à 50 % du canal 2. Les canaux 2 et 3 ne contiennent qu’eux même. Une partie du canal 2 est placée avec le canal 4.

La complexité de cette étape d’initialisation est quadratique. Les étapes d’initialisation de la simulation dans PENELOPE n’étant pas parallélisées, un histogramme 4D de 644 canaux sera initialisé en plus de

six heures sur notre cluster. Cette méthode implique donc de travailler avec des histogrammes de taille très restreinte. Ceci n’est pas limitant si on utilise un modèle tel que celui décrit par Schach von Wittenau et al. [3]. Puisqu’elle ne prend en compte que deux corrélations sur quatre, à savoir l’énergie et la position, le nombre total de canaux est moins important que lorsqu’on utilise un modèle qui comme le nôtre, conserve toutes les corrélations entre les variables.

Tirage d’un canal

Le tableau créé lors de l’initialisation suffit pour réaliser les tirages. On choisit dans un premier temps un numéro de canal grâce à un premier nombre aléatoire, ici 0,01. On sait qu’il y a quatre canaux, et qu’ils ont tous la même probabilité. Puisque 0,01 est compris entre 0 et 0,25, le canal cherché correspond au tout premier d’entre eux. Un second nombre aléatoire, ici 0,6, nous permet de nous positionner à l’intérieur du canal 1. Ce nombre se situe dans la « partie haute » du canal puisqu’il est supérieur à 0,5 ce qui correspond au canal 2. Finalement, il suffit de tirer deux nombres pour trouver un canal. La procédure de tirage est de complexité constante, ce qui représente un gain de temps extrêmement important par rapport aux méthodes précédentes.

123

(a) Initialisation

(b) Tirage

Figure 4-12 : Réorganisation de l’histogramme 4D grâce à la méthode de Walker et tirage d’un canal.

Méthode de Walker améliorée

Une alternative à la méthode de Walker consiste à utiliser l’algorithme de Walker amélioré par Peterson et Kronmal [325, p. 107].

Initialisation

L’histogramme est parcouru une première fois de manière à créer deux index contenant la liste rangée des canaux « hauts » et « bas ». A chaque réorganisation de l’histogramme, le canal bas, dont la hauteur est maintenant égale à la moyenne, disparaît de l’index associé. Le canal haut est quant à lui rangé en fonction de sa nouvelle valeur. Cette opération est réitérée jusqu’à ce que les deux index soient vides. Un histogramme de 644 canaux est à présent initialisé en moins de dix secondes, ce qui convient

parfaitement.

Tirage d’un canal

124

Figure 4-13 : Initialisation de l’histogramme selon la méthode de Walker améliorée

Finalement, la méthode d’échantillonnage utilisée nous oblige à prévoir un temps d’initialisation, qui est d’environ dix secondes par source élémentaire pour un histogramme de 644 canaux (idem pour la source

unique). Dans le cas du modèle multi-sources, il faudra donc compter environ trente secondes. En comparaison, la phase de l’initialisation des informations associées aux matériaux par PENELOPE dure environ quinze secondes. Une fois cette étape d’initialisation réalisée, le temps dédié au tirage d’une particule est indépendant du nombre de canaux. Toutefois, au lieu de stocker un histogramme simple, il faut garder en mémoire le tableau de l’histogramme réinitialisé. La contrainte de temps est donc transformée en contrainte de stockage, qui est ici plus facilement maîtrisable. De cette façon, lors de la lecture de la source et de la création des tableaux de génération par la méthode de Walker, la consommation des ressources mémoires pour une source peut atteindre autour de 320 Mo si les valeurs de sources sont stockées en double précision. Par la suite, seuls les tableaux de valeurs et d’indices associés suffisent, limitant l’occupation mémoire à environ 200 Mo par source.

4.2.2.2 Génération des particules

Une fois que les histogrammes 4D sont tous initialisés, il est possible de générer des particules. Du point de vue de PENELOPE, chaque particule générée est une particule primaire, ce qui n’est pas le cas physiquement. Ceci n’a pas d’impact sur le calcul de dose lui-même, mais les valeurs de la dose et des incertitudes doivent être corrigées pour prendre en compte le fait qu’une gerbe de particules est générée par un électron primaire. Le facteur correctif à appliquer correspond donc au nombre moyen de photons émis par rayonnement de freinage par électron primaire. Ce facteur dépend des paramètres de la source primaire, de la géométrie du linac et des éventuelles réductions de variance appliquées. Dans le cas présent il est égal à 0,059.

La procédure de tirage de particules est illustrée sur la Figure 4-14 :

• Etape 1 : tirage de la source élémentaire en fonction de l’intensité relative des trois sources

élémentaires grâce à un nombre aléatoire tiré de manière uniforme entre 0 et 1,

• Etape 2 : tirage du canal 𝑚𝑚4𝐷𝐷 dans l’histogramme 4D et identification des canaux 𝑚𝑚𝐸𝐸, 𝑚𝑚𝑟𝑟

𝑠𝑠2, 𝑚𝑚𝜑𝜑𝑑𝑑 et

𝑚𝑚𝜃𝜃𝑑𝑑 associés par divisions euclidiennes successives,

• Etape 3 : échantillonnage des caractéristiques de la particule par tirage uniforme dans chacun

125

et 180 ° grâce à la symétrie de la distribution en 𝜃𝜃𝑑𝑑. Pour lui donner son signe, on tire un

nouveau nombre aléatoire entre 0 et 1. S’il est supérieur à 0,5, 𝜃𝜃𝑑𝑑 est inchangée, sinon on lui

adjoint un signe négatif,

• Etape 4 : application de la roulette russe si 𝑟𝑟𝑆𝑆> 𝐿𝐿 – Le principe de la roulette russe est détaillé

ci-après,

• Etape 5 : conversion des coordonnées de la particule dans le repère de PENELOPE. Le détail

des opérations à mettre en œuvre est présenté en annexe.

Figure 4-14 : Procédure de tirage des particules dans le cas du modèle multi-sources. Dans le cas du modèle mono-source, la première étape est ignorée puisqu’on ne choisit qu’un seul histogramme.

L’étape 4 a pour objectif d’optimiser le temps de calcul suivant le champ d’irradiation défini. Nous rappelons ici que le modèle de source a été conçu pour permettre des calculs de dose dans le champ et hors-champ, et décrit donc l’espace des phases sur une large gamme de valeurs de 𝑟𝑟𝑆𝑆. Si on simule un

champ de petite taille, il est totalement inefficace d’utiliser du temps de calcul pour suivre les particules ayant une position radiale importante car elles vont interagir dans les systèmes de collimation sans en sortir. Pour diminuer les temps de calculs et limiter le suivi des particules peu « intéressantes », une réduction de variance similaire à la roulette russe de PENELOPE a été développée. Deux paramètres doivent être fixés :

la position radiale maximale définie dans le plan de l’isocentre, notée 𝐿𝐿, correspondant à la position radiale au-delà de laquelle on ne s’intéresse plus aux particules,

la probabilité de survie d’une particule soumise à la roulette russe, notée 𝑃𝑃𝑅𝑅𝑅𝑅.

Si une particule est générée par le modèle avec une position radiale inférieure à 𝐿𝐿 dans le plan de l’isocentre, la particule est suivie de manière habituelle. Si sa position radiale est supérieure ou égale à 𝐿𝐿, alors un nombre aléatoire est tiré uniformément entre 0 et 1. Si ce nombre est supérieur à 𝑃𝑃𝑅𝑅𝑅𝑅 la

126

particule survit et son poids passe de 𝑤𝑤𝑖𝑖 à 𝑤𝑤𝑖𝑖⁄(1 − 𝑃𝑃𝑅𝑅𝑅𝑅). Sinon, la particule est tuée en ramenant son

poids initial à 0.