• Aucun résultat trouvé

La parallélisation de GATE

Dans le document The DART-Europe E-theses Portal (Page 193-196)

Chapitre 4 : Les applications

IV.1 La parallélisation de GATE

Dans la tomographie d’émission à simple photon simulée par ordinateur, le système matriciel qui transforme l’objet en 3 dimensions dans un ensemble de projection en 2 dimensions peut être calculé en utilisant des simulations de Monté Carlo. Cette approche est appelée F3DMC pour « Fully 3 Dimension Monte Carlo » (Lazaro, Breton et Buvat, Feasibility and value of fully 3D Monte Carlo reconstruction in Single Photon Emission Computed Tomography 2004). La simulation de Monté-Carlo permet de prendre en compte tous les phénomènes physiques qui ont lieu durant le processus d’acquisition, et ainsi d’obtenir une meilleure précision pour les images reconstruites par rapport aux autres méthodes de reconstruction (Lazaro, El Bitar, et al. 2005). Malheureusement, l’usage de F3DMC dans un contexte clinique semble impraticable du fait de la quantité de calcul qu’elle représente. Nous avons réalisé une reconstruction par la méthode F3DMC à partir d’acquisitions réalistes du fantôme présenté dans la Figure 59 et de la boîte à outils de simulation de Monté Carlo pour la tomographie par émission de positrons et pour la tomographie d'émission monophotonique GATE (Jan et al. 2004).

GATE a été conçu pour être flexible et très précis. Par conséquent, les simulations GATE sont très consommatrices en termes de ressources de calcul afin d’obtenir des résultats exploitables. Dans notre système simulé, le fantôme a été « voxélisé » en une matrice de taille 64x64x64. La précision de la reconstruction augmente avec le nombre de photons simulés par voxel (Qi et Huesman 2005). Dans notre cas, du fait de la taille de la matrice utilisée, les études préliminaires ont montré qu’il était nécessaire de calculer un grand nombre de trajectoires, de l’ordre de 74 milliards, afin d’obtenir une précision satisfaisante. L’augmentation de la définition du système, de sa complexité ou l’ajout d’une dimension temporelle représente chacun un facteur de croissance en

193

termes de puissance de calcul nécessaire. Seule l’utilisation de calculateurs massivement distribués type grille de calcul permet de réaliser de tels simulations (Maigne, et al.

2004).

Figure Figure Figure

Figure 59595959 Fantôme " Jaszczak”Fantôme " Jaszczak”Fantôme " Jaszczak”Fantôme " Jaszczak”

Cette partie présente la parallélisation de l’application de la méthode de reconstruction d’image F3DMC en utilisant le simulateur GATE (pour plus d’information sur cette application voir (Breton et Buvat 2004) et (El Bitar, et al. 2006)). Le simulateur GATE a été initialement conçu pour utiliser l’algorithme de génération de nombres pseudo-aléatoires James Random (James 1990) implémenté en C++ dans la bibliothèque de classes pour la physique des hautes énergies (CLHEP). J’ai pu vérifier que celui-ci présentait de larges défauts au regard des tests statistiques actuels. En effet ce générateur ne passe que 36 tests sur 96 de la batterie de test « Crush » de TestU01 (L'Ecuyer et Simard, TestU01: A C Library for Empirical Testing of Random Number Generators 2007) (pour plus d’information sut TestU01 voir le chapitre 2 de ce manuscrit). Pour cette raison, j’ai remplacé l’utilisation de James Random dans GATE par celle du générateur Mersenne Twister 19937 (Matsumoto et Nishimura, Mersenne Twister: A 623-dimensionally equidistributed uniform pseudorandom number generator 1997) qui passe presque tous les tests de la même batterie « Crush ». Ce générateur est lui aussi implémenté dans CLHEP. Cela peut paraître surprenant, mais le changement du générateur pseudo-aléatoire de GATE n’est pas une opération aisée et nécessite la modification du code C++ et la recompilation d’une partie du logiciel GATE (plus de 80000 lignes de code).

Dans un deuxième temps, j’ai « parallélisé » le générateur de nombres pseudo-aléatoires Mersenne Twister 19937. Comme nous l’avons vu dans la première partie de ce chapitre, seules deux techniques de parallélisation sont utilisables pour ce

194

générateur : la technique des séquences indexées, et le découpage en séquence. J’ai choisi dans un premier temps de paralléliser le Mersenne Twister 19937 par découpage en séquence. Afin de garantir la contrainte de non-chevauchement des séquences de nombres pseudo-aléatoires consommées par les différents jobs ainsi qu’une durée des jobs compatible avec leurs exécutions sur grille, j’ai tout d’abord conçu un job de simulation d’environ 12 heures sur un nœud de calcul de puissance moyenne, pour l’organisation virtuelle « biomed » de la grille européenne EGEE. J’ai ensuite estimé sa consommation en termes de nombres pseudo-aléatoires à environ 12 milliards de tirages. J’ai enfin généré des fichiers statuts pour l’algorithme de génération Mersenne Twister 19937 espacés de 15 milliards de tirages chacun (nous avons utilisé une approche similaire dans (Maigne, et al. 2004)). La génération de 6000 statuts a nécessité 80 jours de calcul sur un processeur Intel Xéon 3 GHz. Ce calcul n’est pas aisément parallélisable et nécessite le déroulement du cycle de génération du « Mersenne Twister 19937 » pas à pas. Une fois les statuts générés ils ont été insérés dans la base de données de statuts de DistMe selon la méthode exposée dans le paragraphe III.3 de ce chapitre.

Figure Figure Figure

Figure 60606060 Nombre séquence échouant à n tests de la batterie Crush de TestU01Nombre séquence échouant à n tests de la batterie Crush de TestU01Nombre séquence échouant à n tests de la batterie Crush de TestU01 Nombre séquence échouant à n tests de la batterie Crush de TestU01 0

200 400 600 800 1000 1200 1400 1600 1800

0 1 2 3 4 5 6 7 8 9 10

Nombre de tests échoués

Nombrede séquences

195

Nous avons ensuite testé individuellement chaque séquence de nombres pseudo-aléatoires générés à l’aide de la batterie « Crush » de TestU01 (L'Ecuyer et Simard, TestU01: A C Library for Empirical Testing of Random Number Generators 2007) pour en vérifier la qualité. La Figure 60 présente le résultat de l’exécution de la batterie de tests en totalisant le nombre de séquences échouant à

n

tests de la batterie. Seulement 2% des séquences échouent à plus de 5 tests de la batterie qui en comprend 96 au total.

Les séquences utilisées pour la simulation sont donc de haute qualité au vue des standards actuels. Ce calcul a été effectué de manière distribuée. Il a nécessité 35 jours d’exécution sur une ferme de calcul de 14 bi-Xéon à 3 GHz à pleine charge. Ce même calcul exécuté en séquentiel sur un nœud de la ferme aurait nécessité 3 ans de calcul.

Dans le document The DART-Europe E-theses Portal (Page 193-196)