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