Académique Documents
Professionnel Documents
Culture Documents
U NIVERSITÉ PARIS -S UD
RAPPORT DE STAGE
Lieu :
- Groupe Problèmes Inverses -
- Laboratoire des Signaux et Systèmes -
- CentraleSupélec -
Auteur : Encadrant :
Mohammed CHGHAF Nicolas GAC
i
Introduction 1
3 Résultats 22
3.1 Opérateurs simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1 Performance de calcul en version données centralisées . . . . . 22
3.1.2 Performance de calcul en version données distribuées . . . . . . 24
3.2 L’algorithme itératif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Conclusion et Perspectives 32
Bibliographie 33
ii
1.1 Vitesse de transfert des données entre les différents GPUs du serveur
dans le cas où la communication directe pair-à-pair est désactivée. . . . 9
1.2 Vitesse de transfert des données entre les différents GPUs du serveur
dans le cas où la communication directe pair-à-pair est activée. . . . . . 9
Remerciements
Introduction
Chapitre 1
Reconstruction Tomographique
Multi-GPU
g = Hf +ε (1.3)
Où f est le volume à reconstruire, g les données mesurées, H la matrice de pro-
jection et ε décrit le bruit relié au modèle d’acquisition. La matrice H est donc de di-
mension M × N. Ainsi, en travaillant en valeurs flottantes simple précision la taille
de la matrice H peut varier de 112,6 téraoctet à 295,1 exaoctet (1018 ). En pratique,
les coefficients de cette matrice ne peuvent être stockés en mémoire et doivent être
recalculés à chaque fois qu’on en a besoin. Dans le but d’accélérer ces calculs, les
processeurs graphiques GPUs sont privilégiés pour leur capacité de paralléliser les
calculs arithmétiques.
On appelle opérateur de projection les opérations arithmétiques quantifiant la
traversée des rayons X à travers l’objet. Il correspond à la matrice H appelée ma-
trice de projection. L’opérateur adjoint est la rétroprojection et est représenté par H>
la matrice de rétroprojection. Dans les algorithmes itératifs de reconstruction tomo-
graphique ces deux opérateurs sont réitérés de manière successive et sont les plus
gourmands en temps de calculs.
(1) (2)
Dans le cas des algorithmes «voxel driven», le calcul est centré sur le voxel (pixel
en 3D) et pour chacun de ces voxels on cherche l’ensemble des projections lui cor-
respondant. Ces algorithmes ont l’avantage d’éviter les conflits en écriture lors de
la rétroprojection qui peuvent être causé par les algorithmes «ray driven». D’autre
part, ces algorithmes sont fortement parallélisable.
Mk est la position du voxel traversé par le rayon X, chaque position «k» est à
une distance fixée de la position voisine «k+1», d’où l’appellation échantillonnage
régulier. La valeur f (xk , yk , zk ) est ensuite calculée par interpolation tri-linéaire. La
Figure 1.2 : (1) illustre le principe de projection à échantillonage régulier dans le cas
à deux dimensions, le principe restant le même en 3 dimensions.
Les projections Pinterp (φ, un , vn ) sont obtenues après une interpolation bilinéaire :
1.2 TomoBayes
1.2.1 Description générale
Le Laboratoire des Signaux et Systèmes (L2S) a développé «TomoBayes», un lo-
giciel de reconstruction tomographique [Bou+15]. Ce logiciel est le fruit de la colla-
boration entre le L2S et Safran, sa première version date de 2015. Ce logiciel permet
de lire les données des scanners au format brut et d’avoir en sortie le volume recons-
truit par des méthodes analytiques ou itératives, il peut être appliqué au contrôle
non destructif ou à l’imagerie médicale.
Les reconstructions sont accélérées grâce à une parallélisation sur les processeurs
GPU des opérateurs les plus gourmands en temps de calcul (projection et rétropro-
jection). Cette parallélisation est effectuée à deux niveaux : (i) sur les différents cœurs
des processeurs many-cores des GPUs et (ii) sur les différentes cartes GPU du ser-
veur (validé sur le serveur 10 GPUs du L2S).
Dans le cadre de mon stage, je me suis focalisé sur les méthodes de reconstruc-
tion itératives du logiciel TomoBayes. Dans sa version simple (sans régularisation)
cet algorithme peut être schématisé comme montré dans la Figure 1.4. L’objectif de
cet algorithme est de trouver une valeur estimée du volume fˆ(n+1) en minimisant
de manière itérative l’erreur quadratique JMC ( f ) = k g − H f k2 . Le calcul du terme
des moindres carrées δMC f (n) = −2.H> (g − H f (n) ) se fait en trois étapes principales :
la première consiste à effectuer une projection estimée d’un volume d’initialisation.
Dans la deuxième étape, les données estimées obtenues sont corrigées en les sous-
tractant des données réelles obtenues du scanner. La troisième étape permet d’effec-
tuer une rétroprojection de cette soustration et de corriger le volume estimé.
CUDA
CUDA (Compute Unified Device Architecture) est une plateforme de program-
mation des calculs parallèles sur des GPUs NVIDIA et qui permet de résoudre de
manière efficace de nombreux problèmes de calcul complexes[CGM14]. La techno-
logie CUDA permet d’exécuter plusieurs threads organisés en «warps» (32 threads)
qui exécutent les mêmes instructions (kernels). Un ensemble de «warps» forment
un block. Les «warps» du même block peuvent être synchronisés automatiquement.
Cependant, les blocks ne peuvent pas être synchronisés. Cette hiéararchisation des
niveaux de parallélisations permet une accélération importante du calcul.
CUDA nécessite l’utilisation d’un CPU (appelé «host») en parallèle avec le GPU
(appelé «device»). Le GPU est utilisé pour accélérer les calculs intensifs du pro-
gramme, tandis que le reste est exécuté sur le CPU. Globalement, les étapes prin-
cipales d’un programme en CUDA sont comme suit :
— Allocation mémoire sur le CPU et le GPU ;
— Transfert de données du CPU vers le GPU ;
— Exécution des kernels sur le GPU ;
— Récupération des données, transfert depuis le CPU vers le GPU ;
— Désallocation mémoire sur le CPU et le GPU.
Même si CUDA permet une accélération nette des calculs, la gestion des trans-
ferts mémoire reste une problématique importante à considérer en développement
logiciel en général et dans le cadre des optimisations à effectuer sur le logiciel Tomo-
Bayes en paraticulier.
différentes mémoires des GPU les tranches axiales du volume. Il suffit de séparer
le volume en tranches perpendiculaires à l’axe de rotation, équivalentes en nombre
à celui des GPUs. Les zones correspondantes à ces tranches sur le plan détecteur
vont être disjointes et vont permettre d’effectuer les calculs de reconstruction de
manière indépendante entre les différents GPUs sans besoin de communiquer entre
eux. Chaque processeur étant responsable d’une partie spécifique du volume et du
détecteur.
Néanmoins, dans le cas des scanners à faisceau conique, les procédures de pa-
rallélisation ne sont pas immédiates. A cause de la divergence des faisceaux, un
rayon entre la source et le détecteur peut intersecter plus qu’une zone du volume.
En conséquence, les zones du détecteur qui correspondent aux tranches du volume
vont se chevaucher. Ainsi, pour effectuer une projection où chaque GPU est respon-
sable d’une tranche du volume, les données des deux tranches adjacentes doivent
être combinées pour effectuer le calcul nécessaire de la projection dans ces régions
qui se chevauchent.
Cette dépendance de données qui existe entre les différentes instructions qui
forme les noyaux de calculs des GPUs influence de manière importante sur les per-
formances globales du programme. D’autre part, la communication à travers des
bus souvent plus lents qu’un simple accès mémoire devient une contrainte supplé-
mentaire à gérer.
(1) (2)
GPU/GPU 0 1 2 3 4 5 6 7 8 9
0 246.72 10.37 10.27 10.36 10.36 19.09 18.99 17.39 18.65 13.95
1 10.36 247.67 10.33 10.40 10.37 19.14 18.65 17.32 18.61 13.89
2 10.36 10.32 246.95 10.43 10.34 17.25 17.46 17.12 17.34 13.90
3 10.30 10.32 10.39 248.23 10.38 18.44 18.62 17.29 18.35 13.98
4 10.36 10.31 10.35 10.23 247.77 13.83 13.85 13.86 13.92 13.82
5 18.65 18.78 17.33 18.45 13.87 247.72 10.23 10.41 10.40 10.27
6 18.65 18.63 17.41 18.70 13.94 10.29 247.37 10.22 10.32 10.30
7 16.99 17.14 17.00 17.25 13.89 10.41 10.33 247.65 10.38 10.30
8 18.19 18.61 17.29 18.42 13.96 10.35 10.32 10.41 247.19 10.25
9 13.89 13.97 13.86 13.89 13.81 10.28 10.16 10.23 10.21 247.08
GPU/GPU 0 1 2 3 4 5 6 7 8 9
0 246.65 25.23 25.22 25.22 25.24 19.64 19.65 18.23 19.65 14.19
1 25.24 247.49 25.22 25.24 25.24 19.65 19.65 18.23 19.65 14.19
2 25.22 25.21 247.36 25.23 25.23 18.22 18.22 18.24 18.22 14.19
3 25.23 25.23 25.23 248.11 25.24 19.65 19.64 18.23 19.65 14.19
4 25.24 25.25 25.24 25.23 247.39 14.18 14.18 14.18 14.18 14.19
5 19.67 19.68 18.23 19.66 14.19 247.92 25.25 25.24 25.23 25.26
6 19.67 19.67 18.24 19.67 14.19 25.25 246.55 25.24 25.23 25.26
7 18.22 18.22 18.24 18.22 14.19 25.24 25.23 247.85 25.23 25.24
8 19.66 19.67 18.23 19.67 14.19 25.23 25.24 25.23 247.31 25.24
9 14.18 14.18 14.18 14.18 14.19 25.25 25.25 25.23 25.23 247.03
Chapitre 2
La rétroprojection est réalisée en suivant les mêmes étapes que celles de la pro-
jection. Les mesures de projection restent alors centralisés dans le CPU. On n’envoie
que la partie nécessaire au calcul à chaque GPU. Le volume de rétroprojection est à
son tour centralisé au CPU quand les calculs se terminent.
La Figure 2.1 illustre le cas où 4 GPUs sont utilisés pour réaliser l’opérateur de
projection. Dans cette situation, le «GPU 0» a besoin de quelques slices supplémen-
taires au 14 du volume global (représenté en couleur bleue) pour calculer les mesures
représentées en couleur orange. Ces slices supplémentaires sont représentées en cou-
leur verte. Dans la stratégie utilisée par la version actuelle de TomoBayes, l’ensemble
des données représenté en couleur bleu et vert est transféré alors au «GPU 0».
2.1.2 TIGRE
TIGRE est une toolbox à base de Matlab et de Python pour la reconstruction to-
mographique accélérée sur GPUs. L’objectif général de l’optimisation réalisée par
TIGRE est de réorganiser les opérations de calcul et les transferts mémoire de ma-
nière à ce que les premiers soient maximisées et les deuxièmes soient minimisés.
Afin de réaliser l’opération de projection, l’approche utilisée dans la toolbox
TIGRE consiste à stocker le volume sur le CPU et décomposer sur les différents
GPUs les sous-ensembles des données de projection. Chaque GPU effectue alors la
projection du volume sur un sous ensemble de projection. Les données sont par la
suite récupérées de manière asynchrone : tout en exécutant les nouveaux calculs sur
les nouveaux sous-ensemble de projection les transferts mémoire entre CPU et GPU
sont lancés afin de réduire le temps global d’exécution [Big+19]. La Figure 2.3 illustre
la chronologie des calculs et des transferts mémoires pour l’opérateur de projection
en utilisant la toolbox TIGRE dans le cas de 2 GPUs et de 2 sous-ensemble de projec-
tion.
De la même manière, l’opérateur de rétroprojection est réalisé dans l’approche
proposée par la toolbox TIGRE. Les images de projections sont donc divisées en piles
de tranches axiales de taille égale et réparties entre les différents GPUs, chacun de ces
GPUs effectue les calculs nécessaires sur le sous-ensemble des images de projection
dont il est responsable. Le reste des opérations nécessaires pour l’algorithme itératif,
comme la comparaison des mesures estimées avec les mesures réelles et la correction
du volume obtenu, s’effectuent en décomposant de la même manière à chaque fois
les mesures ou le volume sur l’ensemble des GPUs selon l’axe de rotation du volume.
En résumé, la stratégie de parallélisation utilisée dans TIGRE consiste alors à ef-
fectuer une décomposition du volume, préalablement stocké au CPU. C’est donc
également une stratégie à «Données Centralisées» au CPU. Les étapes de l’algo-
rithme itératif de la stratégie de parallélisation utilisée dans TIGRE peuvent être
explicitées comme suit :
Chapitre 2. Parallélisation Multi-GPU avec distribution de données 14
1. Diffusion : diffusion du volume f (n) sur l’ensemble des GPUs utilisés pour le
calcul
2. Projection : projection du volume pour chaque GPU sur un sous ensemble des
données de projection
3. Comparaison : comparaison des données estimées gb(n) avec les données réelles
g
4. Rétroprojection : rétroprojection de la correction des données δg(n)
5. Réduction : sommation des corrections partielles δMC f (n)
6. Correction : correction du volume f (n+1)
La toolbox TIGRE a l’avantage d’être facile à utiliser puisqu’elle fournit des fonc-
tions prédéfinies pour effectuer toute les opérations nécessaires à une reconstruction
tomographique. Par ailleurs, l’utilisation de langages de haut Python et Matlab, per-
met à l’utilisateur d’avoir un niveau d’abstraction plus haut. Malheureusement, ces
fonctions présentées comme des «boites noires» peuvent pénaliser les optimisations
qui peuvent être effectuées en gestion de la mémoire et en organisation globale des
noyaux de calculs CUDA.
2.1.3 ASTRA
ASTRA (All Scale Tomographic Reconstruction Antwerp) [Aar+15] est une tool-
box de reconstruction tomographique pouvant également s’interfacer avec Matlab
et Python. Contrairement à son interface Matlab, son interface Python permet la pa-
rallélisation multi-GPUs des calculs.
Pour faciliter l’utilisation d’ASTRA plusieurs fonctions sont disponibles et peuvent
être appelées pour gérer de manière interne la distribution des données sur les dif-
férents GPUs. Ainsi, en supposant qu’on a N GPUs, le volume est réparti en N sous-
volumes indépendants de taille comparables où on attribue à chaque GPU un sous-
volume orthogonal à l’axe de rotation. Chaque GPU, effectue alors la projection du
sous-volume qui lui correspond sur tous les angles de projection. On note bien que
Chapitre 2. Parallélisation Multi-GPU avec distribution de données 15
Ces opérations peuvent être directement exécutés sur les différents GPUs sans
avoir besoin de transférer les données du volume ou les mesures de projection vers
le CPU. Pour cette raison, c’est une stratégie dite à «Données Distribuées» sur GPU.
F IGURE 2.7 – Calcul des limites du plan détecteur utilisé pour l’opé-
rateur de rétroprojection du 3ème GPU dans le cas où 5 GPUs sont
utilisés.
−X
utilisé par le «GPU 2» est notée V1r , elle est égale à Z1r SOD
SDD . Z1r étant la limite
inférieure du sous-volume dont le «GPU 2» est responsable. De même, on calcule la
limite supérieuredu plan détecteur utilisé par le «GPU 2» :
−X
V2r = Z2r SODSDD . Z2r . La limite supérieure du sous-volume dont le «GPU 2» est res-
ponsable, également connue, est notée Z2r . Ainsi, on retrouve la partie des mesures
manquantes au «GPU 2» pour effectuer la rétroprojection. Dans ce cas de figure, la
partie en couleur orange de la Figure 2.7 sera alors transférée par une communica-
tion directe pair-à-pair du «GPU 1» au «GPU 2».
de l’algorithme itératif proposée, tous les calculs sont réalisés sans avoir besoin d’ef-
fectuer ces échanges intermédiaires entre CPU et GPU.
Chapitre 2. Parallélisation Multi-GPU avec distribution de données 21
Ainsi, dans l’algorithme itératif proposé, on arrive à maximiser les temps de cal-
culs effectués sur les GPUs tout en réduisant les temps de transfert mémoire. En
effet, les slices exactes nécessaires pour effectuer les opérations de projection et de
rétroprojection, sont échangés entre les GPUs adjacents, ce qui permet de profiter du
débit de communication directe pair-à-pair, supérieur au débit de communication
CPU-GPU. Cet échange est effectué juste avant le début de ces noyaux de calculs, ce
qui permet un gain du temps par rapport aux autres stratégies existantes. Pour des
raisons de simplification, les opérations intermédiaires n’ont pas été détaillées dans
l’Algorithme 3 qui présente un pseudo-code de l’algorithme itératif.
En résumé, la solution proposée est une stratégie de parallélisation avec «Don-
nées Distribuées» sur les différents GPUs. Parmi ses avantages on peut citer :
— Meilleure gestion de la mémoire : utilisation de la mémoire texture permettant
l’interpolation bi-linéaire et tri-linéaire en un seul accès mémoire ;
— Réduction des quantités transférées entre le CPU et chacun des GPUs ;
— Utilisation de la communication directe pair-à-pair entre GPUs adjacents.
22
Chapitre 3
Résultats
(1) (2)
1024 projections du volume sur le plan détecteur, réparties uniformément sur [0, 2π [.
Le nombre total de projections étant Nφ = 1024. Puis, pour effectuer la rétroprojec-
tion, on repart de chaque projection réalisée sur le plan détecteur pour retrouver
chaque pixel du volume en se basant sur l’algorithme présenté dans la Figure 1.2.
Les résultats sont regroupés dans le Tableau 3.1.
On peut remarquer tout d’abord l’intérêt d’utiliser des streams qui masquent les
temps nécessaires aux transferts mémoire. En effet, si on n’utilise pas les streams, le
GPU restera inactif durant la durée du transfert des données du CPU vers le GPU
et puis durant la récupération des calculs du GPU vers le CPU, ce qui constitue un
temps mort qui pénalise l’accélération des calculs apportée par les GPUs. Par contre,
si on utilise des streams on arrive à effectuer plusieurs opérations en parallèle tout
en respectant l’ordre de ces opérations. Ainsi, en découpant un opérateur (projection
ou rétroprojection) en un nombre de streams, les résultats de calcul de l’opérateur
peuvent être transferés au CPU au fur et à mesure que les calculs s’effectuent.
L’accélération obtenue sur 8 GPUs (entre ×7 et ×7, 5) pour TomoBayes est proche
de l’accélération théorique (qui de ×8), ceci est dû aux optimisations qui ont été
faites pour les noyaux de calculs et de la gestion de mémoire efficace apportée par
l’utilisation des streams. Par contre, l’exécution séquentielle des noyaux de calcul et
des transferts mémoire utilisée par ASTRA cause la limitation de l’accélération du
calcul (limitée à ×6, 95 dans les meilleurs des cas) même si on utilise 8 GPUs.
(1) (2)
Efficacité de parallélisation
1
0.95
0.9
Données centralisées
Données distribuées
0.85
1 2 3 4 5 6 7 8 9
Nombre de GPUs
F IGURE 3.5 – Efficacité de parallélisation en fonction du nombre des
GPUs pour un volume de taille 2563 dans le cas des données centrali-
sées et distribuées.
Efficacité de parallélisation
0.95
0.9
Données centralisées
Données distribuées
0.85
1 2 3 4 5 6 7 8 9
Nombre de GPUs
F IGURE 3.6 – Efficacité de parallélisation en fonction du nombre des
GPUs pour un volume de taille 10243 dans le cas des données centra-
lisées et distribuées.
120
s
PUs
s
s
PUs
s
2GPU
4GPU
8GPU
2GPU
4GPU
8GPU
1G
1G
100
Pourcentage % 80
% Calcul
60
% Transfert Mémoire
40
20
0
256 1024
Taille du volume
F IGURE 3.7 – Pourcentage des calculs et des transferts mémoires par
rapport au temps d’exécution de la version centralisée pour l’opéra-
teur de projection.
120
s
PUs
s
s
PUs
s
2GPU
4GPU
8GPU
2GPU
4GPU
8GPU
1G
1G
100
Pourcentage %
80
% Calcul
60
% Transfert Mémoire
40
20
0
256 1024
Taille du volume
F IGURE 3.8 – Pourcentage des calculs et des transferts mémoires par
rapport au temps d’exécution de la version distribuée pour l’opéra-
teur de projection.
Opérateur de rétroprojection
On s’intéresse également à la comparaison entre les performances obtenues par
la version avec données centralisées et la version avec données distribuées pour
l’opérateur de rétroprojection. La comparaison est effectuée sur un volume de taille
2563 puis sur un volume de taille 10243 . La Figure 3.9 montre les résultats d’accéléra-
tion obtenus pour l’opérateur de rétroprojection pour les deux versions (en variant
le nombre de GPUs utilisés et la taille du volume), égale approximativement à un
facteur ×8 si 8 GPUs sont utilisés.
L’efficacité de parallélisation est alors presque identique pour les deux version
avec une légère supériorité de la version «Données Distribuées» surtout quand la
taille du volume est importante.
Chapitre 3. Résultats 28
Efficacité de parallélisation
1
0.95
0.9
Données centralisées
Données distribuées
0.85
1 2 3 4 5 6 7 8 9
Nombre de GPUs
F IGURE 3.9 – Efficacité de parallélisation en fonction du nombre des
GPUs pour un volume de taille 2563 dans le cas des données centrali-
sées et distribuées.
Efficacité de parallélisation
1
Données centralisées
Données distribuées
0.95
0.9
0.85
1 2 3 4 5 6 7 8 9
Nombre de GPUs
F IGURE 3.10 – Efficacité de parallélisation en fonction du nombre
des GPUs pour un volume de taille 10243 dans le cas des données
centralisées et distribuées.
120
s
PUs
s
s
PUs
s
2GPU
4GPU
8GPU
2GPU
4GPU
8GPU
1G
1G
100
Pourcentage % 80
% Calcul
60
% Transfert Mémoire
40
20
0
256 1024
Taille du volume
F IGURE 3.11 – Pourcentage des calculs et des transferts mémoires par
rapport au temps d’exécution de la version centralisée pour l’opéra-
teur de rétroprojection.
120
s
PUs
s
s
PUs
s
2GPU
4GPU
8GPU
2GPU
4GPU
8GPU
1G
1G
100
Pourcentage %
80
% Calcul
60
% Transfert Mémoire
40
20
0
256 1024
Taille du volume
F IGURE 3.12 – Pourcentage des calculs et des transferts mémoires
par rapport au temps d’exécution de la version distribuée pour l’opé-
rateur de rétroprojection
(1) (2)
0.98
0.96
0.94
0.92
0.9
0.88
0.86
Données centralisées
0.84
Données distribuées
0.82
1 2 3 4 5 6 7 8 9
Nombre de GPUs
F IGURE 3.14 – Efficacité de parallélisation en fonction du nombre des
GPUs dans le cas ou les données sont centralisées et distribuées pour
100 itérations. (taille du volume 10243 ).
Chapitre 3. Résultats 31
120
8G PUs
PU s
8GPUs
PUs
s
8GPUs
PUs
s
s
2GPU
4GPU
2GPU
4GPU
2GPU
4GPU
1G
1G
1G
100 % Calcul
Pourcentage %
% Transfert Mémoire
80
60
40
20
0 1 Itération 50 Itérations 100 Itérations
Taille du volume
F IGURE 3.15 – Pourcentage des calculs et des transferts mémoires par
rapport au temps d’exécution de la version centralisée en fonction des
itérations et du nombre des GPUs ( taille du volume 10243 ).
120
8G PUs
PU s
8GPUs
PUs
s
8GPUs
PUs
s
s
2GPU
4GPU
2GPU
4GPU
2GPU
4GPU
1G
1G
1G
100 % Calcul
Pourcentage %
% Transfert Mémoire
80
60
40
20
0 1 Itération 50 Itérations 100 Itérations
Taille du volume
F IGURE 3.16 – Pourcentage des calculs et des transferts mémoires
par rapport au temps d’exécution de la version distribuée en fonction
des itérations et du nombre des GPUs ( taille du volume 10243 ).
Ainsi, on remarque que pour la version avec les données distribuées sur GPUs les
temps de transfert mémoire tendent vers 0 en augmentant le nombre des itérations.
Alors, que pour la version des données centralisées, les taux de transferts deviennent
de plus en plus important en augmentant le nombre des itérations et le nombre des
GPUs.
En résumé, l’optimisation qui a été effectuée sur les tailles données à échanger
entre le CPU et les GPUs ainsi que l’utilisation de la communication directe pair-à-
pair a permis d’obtenir une nette amélioration en performance pour les algorithmes
itératifs de reconstruction tomographique.
32
Conclusion et Perspectives
Conclusion
Durant ces mois de stage au L2S, j’ai eu l’opportunité de mettre en œuvre
mes connaissances en traitement de signal et d’image avec mes compétences
en programmation. Ce stage m’a permis d’élargir mon spectre de connais-
sances, commençant par la tomographie à rayons X. J’ai pu alors avoir une
meilleure compréhension des principes physiques et mathématiques qui ré-
gissent la tomographie.
Perspectives
En guise de perspective, les prochaines semaines seront dédiées à la fi-
nalisation de toutes les fonctions nécessaires au bon fonctionnement de l’al-
gorithme itératif. Ensuite, l’intégration de cette version aux versions dispo-
nibles du logiciel est prévue.
A long terme, on peut envisager l’utilisation du bus NVLink pour les com-
munications pair-à-pair pour bénéficier davantage de la rapidité des trans-
ferts mémoire. Une autre possibilité est de tester le logiciel sur des clusters
permettant la gestion automatique du nombre des GPUs à utiliser pour les
calculs afin d’obtenir les meilleurs performances possibles.
33
Bibliographie
[Aar+15] Wim van A ARLE et al. « The ASTRA Toolbox : A platform for advanced
algorithm development in electron tomography ». In : Ultramicroscopy
157 (2015), p. 35–47.
[Bha08] Venkatesh Bantwal B HAT. « High-Speed Reconstruction of Low-Dose CT
Using Iterative Techniques for Image-Guided Interventions ». Thèse de
doct. 2008.
[Big+19] Ander B IGURI et al. « Arbitrarily large iterative tomographic reconstruc-
tion on multiple GPUs using the TIGRE toolbox ». In : arXiv preprint
arXiv :1905.03748 (2019).
[Bou+15] Thomas B OULAY et al. TomoBayes v1.0 - logiciel de reconstruction en tomo-
graphie CT - Ref CNRS du pré-dépôt APP 11562-03 (num IDDN prochaine-
ment disponible). Déc. 2015. URL : https://hal.inria.fr/hal-01771489.
[CDL18] Simone C ARMIGNATO, Wim D EWULF et Richard L EACH. Industrial X-ray
computed tomography. Springer, 2018.
[CGM14] John C HENG, Max G ROSSMAN et Ty M C K ERCHER. Professional Cuda C
Programming. John Wiley & Sons, 2014.
[Cha+17] Camille C HAPDELAINE et al. « A 3D Bayesian computed tomography re-
construction algorithm with Gauss-Markov-Potts prior model and its ap-
plication to real data ». In : Fundamenta Informaticae 155.4 (2017), p. 373–
405.
[FD17] Denis F OLEY et John D ANSKIN. « Ultra-performance Pascal GPU and
NVLink interconnect ». In : IEEE Micro 37.2 (2017), p. 7–17.
[Jos] Peter M J OSEPH. « An improved algorithm for reprojecting rays through
pixel images ». In : IEEE transactions on medical imaging 1.3 (), p. 192–196.
[Li+19] Ang L I et al. « Evaluating Modern GPU Interconnect : PCIe, NVLink,
NV-SLI, NVSwitch and GPUDirect ». In : arXiv preprint arXiv :1903.04611
(2019).
[Pal+17] Willem Jan PALENSTIJN et al. « A distributed ASTRA toolbox ». In : Ad-
vanced structural and chemical imaging 2.1 (2017), p. 19.
[SB93] Ken S AUER et Charles B OUMAN. « A local update strategy for iterative
reconstruction from projections ». In : IEEE Transactions on Signal Proces-
sing 41.2 (1993), p. 534–548.
[Sha14] Chris C S HAW. Cone beam computed tomography. Taylor & Francis, 2014.
[Sid85] Robert L S IDDON. « Fast calculation of the exact radiological path for a
three-dimensional CT array ». In : Medical physics 12.2 (1985), p. 252–255.
[ZZZ12] Yining Z HU, Yunsong Z HAO et Xing Z HAO. « A multi-thread scheduling
method for 3D CT image reconstruction using multi-GPU ». In : Journal
of X-ray Science and Technology 20.2 (2012), p. 187–197.