Projet TOMOX Accélération de la reconstruction tomographique sur

publicité
Projet TOMOX
Accélération de la reconstruction tomographique
sur processeurs graphiques (GPUs)
Nicolas GAC, MCF Université Paris Sud, L2S (GPI)
Ali Mohammad-Djafari, Asier Rabanal, Alexandre Vabre, Fanny
Buyens, Samuel Legoupil
Ecole ”Problemes inverses”, Porquerolles, 3 Mai 2010
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
1
Reconstruction CT avec segmentation
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
2
Architecture des processeurs graphiques
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
3
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
4
Perspectives
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
Projet TOMOX : Algorithmes innovants pour la
reconstruction en nano-tomographie X
?
IMAGEUR 3D HAUTE RESOLUTION
Objet à imager
1
ACQUISITION
− Plateforme de microtomographie X
haute résolution
CEA−List
2 RECONSTRUCTION
− Algorithme innovant (brevet)
− Accélération sur processeurs graphiques
L2S/Supelec/CNRS/UPS
Structure interne
de l’objet
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
Projet TOMOX : Algorithmes innovants pour la
reconstruction en nano-tomographie X
?
1
phi
IMAGEUR 3D HAUTE RESOLUTION
Objet à imager
1
ACQUISITION
− Plateforme de microtomographie X
haute résolution
Projections
Tomographe
CEA−List
phi
2 RECONSTRUCTION
− Algorithme innovant (brevet)
− Accélération sur processeurs graphiques
L2S/Supelec/CNRS/UPS
Structure interne
de l’objet
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
Projet TOMOX : Algorithmes innovants pour la
reconstruction en nano-tomographie X
?
1
phi
IMAGEUR 3D HAUTE RESOLUTION
Objet à imager
1
ACQUISITION
− Plateforme de microtomographie X
haute résolution
Projections
Tomographe
CEA−List
2
phi
2 RECONSTRUCTION
GPU
− Algorithme innovant (brevet)
− Accélération sur processeurs graphiques
L2S/Supelec/CNRS/UPS
Structure interne
de l’objet
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
Projet TOMOX : Algorithmes innovants pour la
reconstruction en nano-tomographie X
?
1
phi
IMAGEUR 3D HAUTE RESOLUTION
Objet à imager
1
ACQUISITION
− Plateforme de microtomographie X
haute résolution
Tomographe
APPLICATIONS
− Controle non destructif
(réacteurs, pipelines,
pièces industrielles...)
− Imagerie medicale
− Transport
− Agro−alimentaire
− Micro−électronique
(controle qualité)
Projections
CEA−List
2
phi
2 RECONSTRUCTION
GPU
− Algorithme innovant (brevet)
− Accélération sur processeurs graphiques
L2S/Supelec/CNRS/UPS
Structure interne
de l’objet
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
SANS régularisation bayésienne
fn
H
g = Hf + ĝ = Hf n
g
δg = g − ĝ
Descente de gradient
Ht
−> N iterations
H t δg
f n+1
f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
Descente de gradient
J(f ) = ||g − Hf ||2
f n+1 = f n − α · ∇J(f n )
∇J(f ) = −2 · H t (g − Hf )
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
SANS régularisation bayésienne
fn
H
g = Hf + ĝ = Hf n
g
δg = g − ĝ
Descente de gradient
Ht
−> N iterations
δf = H t δg
f n+1
f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
f n : Estimée du volume
Descente de gradient
J(f ) = ||g − Hf ||2
f n+1 = f n − α · ∇J(f n )
∇J(f ) = −2 · H t (g − Hf )
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
SANS régularisation bayésienne
fn
H
g = Hf + ĝ = Hf n
g
δg = g − ĝ
Descente de gradient
Ht
−> N iterations
δf = H t δg
f n+1
f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
ĝ : Estimée des données
Descente de gradient
J(f ) = ||g − Hf ||2
f n+1 = f n − α · ∇J(f n )
∇J(f ) = −2 · H t (g − Hf )
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
SANS régularisation bayésienne
fn
H
g = Hf + ĝ = Hf n
g
δg = g − ĝ
Descente de gradient
Ht
−> N iterations
δf = H t δg
f n+1
f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
δg : Correction des données
Descente de gradient
J(f ) = ||g − Hf ||2
f n+1 = f n − α · ∇J(f n )
∇J(f ) = −2 · H t (g − Hf )
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
SANS régularisation bayésienne
fn
H
g = Hf + ĝ = Hf n
g
δg = g − ĝ
Descente de gradient
Ht
−> N iterations
δf = H t δg
f n+1
f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
δf : Correction du volume
Descente de gradient
J(f ) = ||g − Hf ||2
f n+1 = f n − α · ∇J(f n )
∇J(f ) = −2 · H t (g − Hf )
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
SANS régularisation bayésienne
fn
H
g = Hf + ĝ = Hf n
g
δg = g − ĝ
Descente de gradient
Ht
−> N iterations
δf = H t δg
f n+1
f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
f n+1 : Nouvelle estimée du volume
Descente de gradient
J(f ) = ||g − Hf ||2
f n+1 = f n − α · ∇J(f n )
∇J(f ) = −2 · H t (g − Hf )
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
AVEC régularisation bayésienne
fn
H
ĝ = Hf n
g = Hf + g
δg = g − ĝ
Descente de gradient
Ht
−> N iterations
δf = H t δg
f n+1
f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
Modèle a priori : f = ∪k fk
Segmentation z
z = 0 : air
z = 1 : eau
z = 2 : metal
fk = {r : z(r ) = k}
f (r )|z(r ) = k ∼ N (mk , σk2 )
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
AVEC régularisation bayésienne
z
θ
f
H
ĝ = Hf n
g
λ∇J2
δg = g − ĝ
H
t
δ1 f = H t δg
f
δ2 f = λ∇J2 (f n )
n+1
g = Hf + f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
n
Descente de gradient
avec régularisation
−> N iterations
Modèle a priori : f = ∪k fk
fk = {r : z(r ) = k}
f (r )|z(r ) = k ∼ N (mk , σk2 )
Descente de gradient régularisée
Segmentation z
z = 0 : air
z = 1 : eau
z = 2 : metal
J(f ) = J1 (f ) + J2 (f )
2
J1 (f ) = ||g − Hf
P|| P
P
¯
¯ 0
J2 (f |z, θ) = λ k
r ∈Rk
r 0 ∈V(r ) φ(f (r ) − f (r ))
f (r ) − mk
f¯(r ) =
σk
f n+1 = f n − α1 · ∇J1 (f n ) − α2 · ∇J2 (f n |z, θ)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
AVEC régularisation bayésienne
fi
zi
θi
g = Hf + f : volume
g : données du tomographe
H : modèle d’acquisition
: bruit
n
f
H
ĝ = Hf n
g
λ∇J2
δg = g − ĝ
H
t
δ1 f = H t δg
Descente de gradient
δ2 f = λ∇J2 (f n ) avec régularisation
−> N iterations
f
n+1
f
i+1
zi
θi
Segmentation
−> M iterations
θi
Segmentation z
z = 0 : air
z = 1 : eau
z = 2 : metal
z i+1
Calcul des
hyperparametres
θi+1
Modèle a priori : f = ∪k fk
Reconstruction
−> I iterations
fk = {r : z(r ) = k}
f (r )|z(r ) = k ∼ N (mk , σk2 )
Descente de gradient régularisée
J(f ) = J1 (f ) + J2 (f )
2
J1 (f ) = ||g − Hf
P|| P
P
¯
¯ 0
J2 (f |z, θ) = λ k
r ∈Rk
r 0 ∈V(r ) φ(f (r ) − f (r ))
f (r ) − mk
f¯(r ) =
σk
f n+1 = f n − α1 · ∇J1 (f n ) − α2 · ∇J2 (f n |z, θ)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
Calcul de Hf et H t δg : choix de la méthode
¶ Calcul matriciel
ò lecture des coefficients hij dans la mémoire SDRAM
volume 20483 − > matrice H = 1 To !
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Projet TOMOX
Algorithme bayésien itératif du L2S/CEA
Calcul de Hf et H t δg : choix de la méthode
¶ Calcul matriciel
ò lecture des coefficients hij dans la mémoire SDRAM
volume 20483 − > matrice H = 1 To !
· Opérateurs géométriques
ò calcul en ligne des coefficients hij
Paire de projection/rétroprojection en tomographie à émission (géométrie parallèle)
u
u
détecteurs
du tomographe
phi
phi
Objet imagé
projection
Objet reconstruit
rétroprojection
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
1
Reconstruction CT avec segmentation
2
Architecture des processeurs graphiques
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
3
Reconstruction tomographique sur GPUs
4
Perspectives
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
GPU : Graphic Processing Unit
Evolution vers une architecture many core
A l’origine, architecture dédiée pour le rendu de volume
ò Pipeline graphique (prog. en OpenGL/Cg)
Depuis 2006, architecture adaptée à la parallélisation de divers
calculs scientifiques
ò CUDA : Common Unified Device Architecure (prog. en C)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Puissance de calcul
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Avec CUDA ,: plein de threads !
CUDA : Common Unified Device Architecture
Vertex shader + Fragment shader = Streams Processors (SPs)
ò Le GPU devient un processeur “many cores”
Jusqu’à 240 Stream Processors (Chip GT200 - Juin 2008)
30 coeurs SIMT (Single instructions Multiple Threads)
8 SPs (Stream Processors) par coeur SIMT
3 flop (MADD + MUL) par SP
ò soit ∼ 1 Teraflops pour la carte Geforce GTX 285 (SP @1,5
GhZ)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GT200 utilisé en mode CUDA
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Coeur SIMT : Single Instruction Multiple Instruction
Hardware
8 unités scalaires (Stream Processors)
2 Specific Processor Units (SFUs) :
cos(), sin(), exp()...
16 Ko de registres (2 Ko par SP)
16 ko de mémoire locale (shared
memory)
Accès rapide aux textures : cache 2D
+ Texture Filtering (TF)
3
coeurs SIMT
Ordonnancement des threads
Execution par groupes de 32 threads
appelés warps
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Découpage en threads
Matériel
un Stream Processor (SP)
Logiciel
un thread
Exécution
séquentielle
(a)
un coeur SIMT
un bloc de threads
(plusieurs warps)
parallèle (SIMT)
(b)
une carte GPU (device)
une grille de threads
(kernel)
parallèle (MIMD)
mémoire centralisée
(c)
Mémoire
Mémoire
Mémoire
Mémoire globale
Mémoire
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Un id par thread et un id par bloc de threads
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Hiérarchie mémoire
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
PC hote et carte graphique
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Supercalculateur personnel
SP 1 SP 2
SP 3 SP 4
SP 5 SP 6
SP 7 SP 8
Memoire
Shared
(16 Ko)
Carte graphique 1
Carte graphique 4
Cache 2D
(8 Ko)
SIMT
bus GPU
SIMT 1
(100 Go/s)
SIMT n
SIMT n
SIMT 1
Memoire globale
Memoire globale
(4 Go)
(4 Go)
bus PCI Express
(1 Go/s)
Chipset
bus externe (100 Mo/s)
bus memoire (10 Go/s)
CPU
Disque dur
Coeur 1
Coeur 2
Memoire cache
(10 Mo)
Coeur 3
Coeur 4
Memoire SDRAM
(32 Go)
− rapide (300 Go)
− lent (1 To)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Flot de développement logiciel
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Programmation GPU
¶ Parallélisation de l’algorithme
ò nourrir en threads (plus ou moins indépendants) le GPU
taux de
parallélisation
100 %
99 %
95 %
90 %
accélération
GTX 200
(240 coeurs)
80
24
6
3
300
code parallèle à 100%
code parallèle à 99%
code parallèle à 95%
code parallèle à 90%
250
Accélération
n coeurs (1 Ghz)
vs
1 coeur (3 Ghz)
200
150
100
50
0
0
100
200
300
400
Nombres de coeurs
500
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
GPU : Graphic Processing Unit
Découpage en threads
Programmation GPU
Programmation GPU
¶ Parallélisation de l’algorithme
ò nourrir en threads (plus ou moins indépendants) le GPU
· Implémentation GPU
Selon l’intensité arithmétique du code (puissance de calcul
exploitée / débit des données), l’execution sera soit memory bound
soit computation bound (ex : calcul X k [?])
ò optimisation du code portera alors soit sur les accès mémoire
ou soit sur la complexité arithmétique
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
1
Reconstruction CT avec segmentation
2
Architecture des processeurs graphiques
3
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
4
Perspectives
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Rétroprojection 2D : algorithme
CALCUL DES COORDONNEES
Detecteurs
u
y
g (φ, u)
φ
x
Source
Volume
for (xn, yn) in Volume do
for phi = 0 to phimax − 1 do
// Calcul des coordonnées
u(phi, xn, yn) = ...
// Accumulation
f ∗ (xn, yn)+ = g (u, φ)
end for
end for
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Rétroprojection 2D : interpolation linéaire
CALCUL DES COORDONNEES
Detecteurs
u
ue +1
u(x)
ue
y
g (φ, u)
u
Source
φ
x
Source
Volume
for (xn, yn) in Volume do
for phi = 0 to phimax − 1 do
// Calcul des coordonnées
u(phi, xn, yn) = ...
// Interpolation linéaire
ginterp = (1 − u ) · g (phi, ue ) +
u · g (phi, ue + 1)
// Accumulation
f ∗ (xn, yn)+ = ginterp
end for
end for
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Rétroprojection 2D : accès aux données dispersés
CALCUL DES COORDONNEES
Detecteurs
u
ue +1
u(x)
ue
y
g (φ, u)
u
Source
φ
x
Source
Volume
ACCES AUX DONNEES g (φ, u)
φ
u
Données 2D dans l’espace (φ,u)
for (xn, yn) in Volume do
for phi = 0 to phimax − 1 do
// Calcul des coordonnées
u(phi, xn, yn) = ...
// Interpolation linéaire
ginterp = (1 − u ) · g (phi, ue ) +
u · g (phi, ue + 1)
// Accumulation
f ∗ (xn, yn)+ = ginterp
end for
end for
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Rétroprojection 2D : accès aux données dispersés
CALCUL DES COORDONNEES
Detecteurs
u
ue +1
u(x)
ue
y
g (φ, u)
u
Source
φ
x
Source
Volume
ACCES AUX DONNEES g (φ, u)
φ
u
Données 2D dans l’espace (φ,u)
@= u + phi ∗ Wu
Données 1D dans la mémoire
for (xn, yn) in Volume do
for phi = 0 to phimax − 1 do
// Calcul des coordonnées
u(phi, xn, yn) = ...
// Interpolation linéaire
ginterp = (1 − u ) · g (phi, ue ) +
u · g (phi, ue + 1)
// Accumulation
f ∗ (xn, yn)+ = ginterp
end for
end for
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Rétroprojection 2D : accès aux données dispersés
CALCUL DES COORDONNEES
Detecteurs
u
ue +1
u(x)
ue
y
g (φ, u)
u
Source
φ
x
Source
Volume
ACCES AUX DONNEES g (φ, u)
φ
u
Données 2D dans l’espace (φ,u)
@= u + phi ∗ Wu
Données 1D dans la mémoire
for (xn, yn) in Volume do
for phi = 0 to phimax − 1 do
// Calcul des coordonnées
u(phi, xn, yn) = ...
// Interpolation linéaire
ginterp = (1 − u ) · g (phi, ue ) +
u · g (phi, ue + 1)
// Accumulation
f ∗ (xn, yn)+ = ginterp
end for
end for
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Rétroprojection 2D par bloc : accès aux données localisés
CALCUL DES COORDONNEES
Detecteurs
u
ue +1
u(x)
ue
y
g (φ, u)
u
Source
φ
x
Source
Volume
ACCES AUX DONNEES g (φ, u)
φ
u
Données 2D dans l’espace (φ,u)
@= u + phi ∗ Wu
Données 1D dans la mémoire
for (Bx, By) in Volume do
for phi = 0 to phimax − 1 do
for (xn, yn) in Bloc do
// Calcul des coordonnées
u(phi, xn, yn) = ...
// Interpolation linéaire
ginterp = (1 − u ) ·
g (phi, ue ) + u · g (phi, ue + 1)
// Accumulation
f ∗ (xn, yn)+ = ginterp
end for
end for
end for
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Découpage en threads de la rétroprojection 3D
z
(a) Calcul séquentiel sur un PE
Boucle sur z
3
1
3
Boucle sur φ
4
2
4
(b) Calcul parallèle sur un proc. SIMT
2
1
y
Boucle sur (x,y)
x
4
3
1
2
(c) Calcul parallèle sur une carte
Boucle sur les blocs (Bx,By,Bz)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Découpage en threads de la rétroprojection 3D
z
(a) Calcul séquentiel sur un PE
Boucle sur z
3
1
3
Boucle sur φ
4
2
4
(b) Calcul parallèle sur un proc. SIMT
2
1
y
Boucle sur (x,y)
x
4
3
1
2
(c) Calcul parallèle sur une carte
Boucle sur les blocs (Bx,By,Bz)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Découpage en threads de la rétroprojection 3D
z
(a) Calcul séquentiel sur un PE
Boucle sur z
3
1
3
Boucle sur φ
4
2
4
(b) Calcul parallèle sur un proc. SIMT
2
1
y
Boucle sur (x,y)
x
4
3
1
2
(c) Calcul parallèle sur une carte
Boucle sur les blocs (Bx,By,Bz)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Découpage en threads de la rétroprojection 3D
z
(a) Calcul séquentiel sur un PE
Boucle sur z
3
1
3
Boucle sur φ
4
2
4
(b) Calcul parallèle sur un proc. SIMT
2
1
y
Boucle sur (x,y)
x
4
3
1
2
(c) Calcul parallèle sur une carte
Boucle sur les blocs (Bx,By,Bz)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Découpage en threads et en grilles de la rétroprojection 3D
(a) Calcul séquentiel sur un PE
Boucle sur z
Boucle sur φ
3
1
3
(b) Calcul parallèle sur un proc. SIMT
4
2
4
x
2
1
4
3
1
Boucle sur (x,y)
(c) Calcul parallèle sur une carte
2
Boucle sur les blocs (Bx,By,Bz)
(d) Calcul parallèle sur PC multi-cartes
Boucle sur les grilles (Gx,Gy)
Boucle sur la grille Gφ
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Assèchement de mousses de nickel (données CEA-LIST)
(a) FDK
(b) itératif simple régularisé
(c) Gauss/Markov
(d) segmentation
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Temps de reconstruction mono-GPU
Reconstruction sur une GTX 295 (240 SPs @1.2 Ghz)
volume de 2643 voxels (champs de vue cylindrique)
64 projections de 2562 pixels
Rétroprojecteur
Projecteur
Temps
195 ms (*370 / CPU)
505 ms (*320 / CPU)
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Retroprojection sur GPU
Volumes et temps de reconstruction
Temps de reconstruction multi-GPUs
Reconstruction sur des Tesla S1070 (serveurs 4 et 8 GPUs)
volume de 10243 voxels (champs de vue cylindrique)
512 projections de 1024 ∗ 1280 pixels
Rétroprojecteur
Projecteur
GPUs
2
4
8
2
4
8
Temps
85 s
44 s
26 s
251 s
133 s
73 s
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Travaux en cours
¶ Algorithme bayésien avec segmentation (Gauss/Markov/Potts)
Validation de la méthode sur données réelles (CEA)
Accélération des étapes annexes de calcul sur GPU
(convolution 3D, échantillonnage de Potts)
· Parallélisation sur machine 8 GPUs de Carri system
Optimisation des transferts mémoire PC hôte - carte graphique
¸ Cohérence paire projection/rétroprojection
Etude de la convergence de l’algorithme itératif pour plusieurs
projecteurs couplés avec un rétroprojecteur voxel driven
Reconstruction CT avec segmentation
Architecture des processeurs graphiques
Reconstruction tomographique sur GPUs
Merci de votre attention !
Téléchargement