Le GPU dans les sciences du vivant et de la santé - GIPSA-Lab

Transcription

Le GPU dans les sciences du vivant et de la santé - GIPSA-Lab
Le GPU dans les sciences du vivant et
de la santé
étude de cas en cryomicroscopie électronique
Julien Bert
Laboratory of Medical Information Processing
LaTIM - INSERM U650
CHU Brest, France
1
Summer School Gipsa Lab 2010
Le plan
• Introduction :
• imagerie médicale
• biologie moléculaire
• Etude de cas en cryomicroscopie électronique
• algorithme K-means
• implémentation GPU via CUBLAS
• implémentation multi-CPU/GPU
• Conclusions
2
Summer School Gipsa Lab 2010
Reconstruction
Jens Langner
http://www.jens-langner.de
[Schneider and Westermann 2003]
ATI 9700
IRM de diffusion (faisceaux de matière
blanche) Université de Fribourg
[McGraw and Nadar 2007]
NVIDIA GeForce 8800 GTX 768 MB
256x256x256 voxels, x20
[Pratx et al. 2009]
NVIDIA GeForce 8800 GT
x50
Schneider, J. & Westermann, R., IEEE Visualization, 2003, 293-300
McGraw, T. & Nadar, M., IEEE Transactions on Visualization
and Computer Graphics, 2007, 13, 1504-1511
Pratx, G.; Chinn, G.; Olcott, P. D. & Levin, C. S.
IEEE Transactions on Medical Imaging, 2009, 28, 435-445
3
Summer School Gipsa Lab 2010
Visualisation
[Kratz et al. 2006]
NVIDIA GeForce Quadro FX 3400/4400
Scanner rayon X, 512x512x1112 voxels
[Stuart et al. 2010]
NVIDIA Tesla C1090 (8 GPUs)
Scanner rayon X, 1024x1024x1024 voxels
[Kruger and Westermann 2003]
ATI 9700, x17
Scanner rayon X, 256x256x256 voxels
Kruger, J. & Westermann, R., IEEE Visualization, 2003, 287-292
Kratz, A.; Hadwiger, M.; Fuhrmann, A.; Splechtna, R. & Bhler, K.
International workshop on Augmented environments for Medical Imaging
and Computer-aided Surgery, 2006, 1-7
4
Summer School Gipsa Lab 2010
Recalage et segmentation
[Ansorge et al. 2009]
NVIDIA GTX285
Scanner rayon X et TEP
Ansorge, R.
CUDA Textures and Image Registration
University of Cambridge, 2009
Chen, H.-L. J.; Samavati, F. F. & Sousa, M. C., The Visual Computer, 2008, 24, 689-698
[Chen et al. 2008]
NVIDIA GeForce 8800 GTX - 768 MB
IRM, 256x256x256 voxels
5
Summer School Gipsa Lab 2010
Simulation et Réalité augmentée
[Melchionna et al. 2009]
Multi GPU NVIDIA GT 200
Artère coronaire 512x512x512 voxels
[Kutter et al. 2008]
NVIDIA GeForce 8800 Ultra 768 MB
Scanner rayon X, thorax 256x368x261 voxels, 30 FPS
Melchionna, S.; Kaxiras, E.; Bernaschi, M. & Succi, S.,
EPFL Flash Informatique, 2009, 32-36
Kutter, O.; Aichert, A.; Bichlmeier, C.; Traub, J.; Heining, S. M.; Ockert, B.; Euler, E. & Navab, N.
6
International workshop on Augmented environments for Medical Imaging and
Computer-aided Surgery, 2008, 104-113
Summer School Gipsa Lab 2010
Biologie Moléculaire
[Sinnott-Armstrong et al. 2009]
Analyse génétique sur ADN humain
Plusieurs NVIDIA GeForce GTX 280
~ x90
[Langdon and Harrison 2008]
Expression des gènes pour le cancer du sein
Plusieurs NVIDIA GeForce 8800 GTS
~ x7
Sinnott-Armstrong, N. A.; Greene, C. S.; Cancare, F. & Moore, J. H.
BMC Research Notes, 2009, 2, 1-6
Langdon, W. B. & Harrison, A. P.
Soft Computing, 2008, 12, 1169-1183
7
Summer School Gipsa Lab 2010
Biologie Moléculaire
[Tan et al. 2009]
NVIDIA GeForce 8800 1 GB
x10
[Sukhwani and Herbordt 2009]
NVIDIA Tesla C1060
x18
Tan, G.; Guo, Z.; Chen, M. & Meng, D.
International Conference on Supercomputing, 2009, 380-389
Sukhwani, B. & Herbordt, M. C.
Proceedings of 2nd Workshop on General Purpose Processing on
Graphics Processing Units, 2009, 19-27
8
Summer School Gipsa Lab 2010
Biologie Moléculaire
[Phillips and Stone 2009]
Lincoln cluster, 384 GPUs (Tesla S1070)
x20
http://folding.stanford.edu
Phillips, J. C. & Stone, J. E., Communications of the ACM, 2009, 52, 34-41
9
Summer School Gipsa Lab 2010
Le plan
• Introduction :
• imagerie médicale
• biologie moléculaire
• Etude de cas en cryomicroscopie électronique
• algorithme K-means
• implémentation GPU via CUBLAS
• implémentation multi-CPU/GPU
• Conclusions
10
Summer School Gipsa Lab 2010
Cryomicroscopie électronique - principe
RNA pol II - densité électronique
11
Summer School Gipsa Lab 2010
Cryomicroscopie électronique - reconstruction
Classification par
K-means
2400 images de 32x32 pixels
120 000 images de 32x32 pixels (4-10 Å)
12
Summer School Gipsa Lab 2010
Le plan
• Introduction :
• imagerie médicale
• biologie moléculaire
• Etude de cas en cryomicroscopie électronique
• algorithme K-means
• implémentation GPU via CUBLAS
• implémentation multi-CPU/GPU
• Conclusions
13
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
14
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
15
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
16
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
17
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
18
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
19
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
20
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
21
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
22
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
23
Summer School Gipsa Lab 2010
K-means - propriétés
K groupes, N images
1. Assigne aléatoirement chaque image
dans un groupe
2. Calcul la moyenne de chaque groupe
3. Pour chaque image :
- Calcul les distances entre image/moyennes
- Assigne l’image dans le groupe qui a la
distance image/moyennes la plus faible
4. Calcul la nouvelle moyenne
5. Si une des images a changé de groupe
retour à l’étape 3.
K moyennes, affectation de N images
• Algorithme itératif simple
• Complexité O(n)
• Simple paramètre K
• Converge dans un minimum local
• Classification dépend de l’initialisation
• Similarité par la norme L2 (Carré de la distance Euclidienne)
24
Summer School Gipsa Lab 2010
Le plan
• Introduction :
• imagerie médicale
• biologie moléculaire
• Etude de cas en cryomicroscopie électronique
• algorithme K-means
• implémentation GPU via CUBLAS
• implémentation multi-CPU/GPU
• Conclusions
25
Summer School Gipsa Lab 2010
K-means - CUBLAS
CUBLAS
1979 - Basic Linear Algebra Subprograms (BLAS)
ATLAS
LAPACK
CUBLAS = CUDA + BLAS
NVIDIA CUDA SDK (simpleCUBLAS)
Level 1 : opération vecteur - vecteur
Level 2 : opération matrice - vecteur
Level 3 : opération matrice - matrice
Exemple avec la fonction simple précision SGEMV level 2:
y = alpha * A * x + beta * y
26
Summer School Gipsa Lab 2010
K-means - GPU - Calcul des distances
m
�
2
2
Kernel ?!
dE =
(imi − moyi )
i
2
dE
=
m
�
i
2
imi
+
m
�
i
2
moyi
−2
m
�
imi .moyi
i
opération vecteur - vecteur pour une valeur de distance
2
Djk
= IMj2 + M OYj2 − 2[IM × M OY T ]jk
opération matrice - matrice pour toutes les distances
CUBLAS SGEMM level 3
C ← αop(A)op(B) + βC
27
Summer School Gipsa Lab 2010
K-means - GPU - Séquence d’implémentation
CPU
491 Mo
GPU
Lecture des images
Pré-calcul
491 Mo
120 000 images de 32x32 pixels
491 Mo
2 400 images de 32x32 pixels
500 Mo
Pré-calcul toutes les
distances en une opération
1,65 Go
IM 2
Itérations
496 Mo
1,65 Go
Calcul des moyennes
Pré-calcul M OY 2
120 000 x 2 400 éléments
9,8 Mo
1,15 Go
Complètes les distances
Affectation
IM x MOY
!! Bénéfice entre CPU/GPU !!
Convergence
28
Summer School Gipsa Lab 2010
K-means - GPU - implémentation
Initialisation
Pré-calcul la somme de chaque image au carré IM 2
Assigne aléatoirement les images dans un groupe
Allocation mémoire - Host et Device
Transfert des images du PC à la carte graphique
Calcul des moyennes
Accumulation (N x m)
Division (K x m)
M OY 2
29
Summer School Gipsa Lab 2010
K-means - GPU - implémentation
Pré-calcul des distances
C ← αop(A)op(B) + βC
cublasSgemm( op(A), op(B), nb lignes op(A), nb colonnes op(B),
alpha, A, lda, B, ldb, beta, C, ldc)
m
K
T m
x
MOYT x
N
N
=
IM
30
nb colonnes op(A),
=
K
D
Summer School Gipsa Lab 2010
K-means - GPU - implémentation
Calcul des distances finales et affectation des images
Libère l’espace mémoire et quitte
31
Summer School Gipsa Lab 2010
K-means - GPU - résultats
Matériels :
• Tesla C1060 - 240 SPs - 4 GB - 1,3 GHz - 933 GFLOPS
• Intel Quad Xeon E5520 Nehalem
4 coeurs - 2,26 GHz - 64 bits - 8MB cache - 36,16 GFLOPS
• RAM - 12 MB
Environnement :
• Mac OS x - Leopard (développement)
• GNU/Linux - RedHat (exécution)
• Haut niveau - Python (prototypage, flexibilité)
• Bas niveau - C / CUDA (noyau rapide)
Jeu de données :
• 120 000 images de 32x32 pixels (vecteur de 1024)
• 2 400 groupes
Type
Temps par itération
1 CPU
2423 s (40 min)
1 CPU + 1 GPU
10,6 s
32
Gain de rapidité
x 228
!
Summer School Gipsa Lab 2010
Le plan
• Introduction :
• imagerie médicale
• biologie moléculaire
• Etude de cas en cryomicroscopie électronique
• algorithme K-means
• implémentation GPU via CUBLAS
• implémentation multi-CPU/GPU
• Conclusions
33
Summer School Gipsa Lab 2010
K-means - multi-CPU/GPU - scalabilité
Capacité d’une application à fonctionner sur un système plus grand (cluster).
Parallèliser un programme : MPI, OpenMP, etc.
Calcul distribué - séparé le jeu de données (les images)
MPI
CPU
CPU
CPU
N / ncpu images (locale)
N / ncpu images (locale)
N / ncpu images (locale)
Moyennes (globales)
Moyennes (globales)
Moyennes (globales)
GPU Distances (locales)
GPU Distances (locales)
Affectations (locales)
Affectations (locales)
34
GPU
Distances (locales)
Affectations (locales)
Summer School Gipsa Lab 2010
K-means - multi-CPU/GPU - cluster
Python/C++
CPU Noeud maître
MPI
Réseau Ethernet (répertoire partagé)
Python/C++
CPU
CPU
CPU
CPU
CPU
CPU
CPU
CPU
CUDA
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
Noeud 1
Noeud 2
... Noeud i
4xU NVIDIA Tesla S1070
Intel Quad Xeon - 2,26 GHz - NVIDIA Tesla S1070
4 GPUs (240 SPs - 4 GB - 933 GFLOPS)
12 GB de RAM
GNU/Linux SUSE
35
Summer School Gipsa Lab 2010
K-means - multi-CPU/GPU - résultats
Clusteur CPUs (Ranger)
4 coeurs / noeud
Nb de coeurs CPUs
1
32
64
128
256
512
1024
Gain de rapidité
x1
x 32
x 64
x 128
x 252
x 444
x 760
Temps
4125 s
129 s
64 s
32 s
16 s
9s
5s
Nb de CPUs/GPUs
1
2
4
8
16
Gain de rapidité
x 228
x 432
x 692
x 1275
x 1730
Temps
10,6 s
5,6 s
3,5 s
1,9 s
1,4 s
Ranger - Texas Advanced
Computing Center (Austin) :
• 3 936 noeuds
• 62 976 coeurs
Clusteur CPUs/GPUs
Clusteur CPUs/GPUs
2000,00
1500,00
1000,00
1000,00
500,00
500,00
0
0
1
2
4
8
16
36
Clusteur CPUs
1
32
64
128 256 512 1024
Summer School Gipsa Lab 2010
Conclusions
2 coeurs CPUs + 2 GPUs
CPU = 1 x 400 €
x18
GPU = 2 x 1200 €
Tot = 2,8 k€
512 coeurs CPUs
CPU = 128 x 400 €
Tot = 51,2 k€
facteur de gain de x500, Intel Xeon Quad E5520, Tesla C1060 4GB
GPU : parallélisation à faible coût dans un seul PC
prix 1/10 consommation 1/20
Pour une catégorie d’algorithme
37
Summer School Gipsa Lab 2010
Conclusions
Dans un projet :
• Le GPU ne peut résoudre tous les problèmes scientifiques
• Toujours une limitation par la communication (scalabilité)
• Refonte complète de l’algo (temps de développement)
• Attention à l’optimisation, recherche de l’ordre de grandeur
Gain
x1
x50
x60
x150
x200
Temps
2 j 18 min
80 min
66 min
26 min
20 min
Beaucoup de problèmes peuvent être implémentés avec
CUBLAS
38
Summer School Gipsa Lab 2010
Questions ?
39
Summer School Gipsa Lab 2010