Lille, France – 02/12/2009 Journées CIGIL Utilisation de GPUs et du Cell pour des calculs de neutronique : performances et précision Jérôme Dubois, Serge Petiton, Christophe Calvin CEA Saclay – DEN/DANS/DM2S/SERMA/LLPR University of Lille 1 – LIFL/MAP 02/12/09
Outline Motivations Caractéristiques principales Méthodes de Krylov: Arnoldi et ERAM Précision pour une itération d’Arnoldi Performances et impact de la precision pour ERAM : Arnoldi itéré 02/12/09
Motivations Champs d’application : simulation de coeur de réacteur, neutronique Objectif : MINOS détermine le k-effective ratio + autres données Data : Matrices creuses et larges jeux de données (Goctets) Intensité des calculs : transposition de matrice + résolution de système Speed-ups : 15x avec Tesla, 5x with Quadro GPU 02/12/09
Caractéristiques principales(1) Meilleure performance crête : ~1-10x (vs Nehalem 8 cores) Meilleure bande passante mémoire : ~1-20x 02/12/09
Caractéristiques principales(2) Norme IEEE admise Processeur Cell : 8 SPEs non complètement IEEE en SP : No multiple rounding modes Exception handled by saturation (NaN, inf, ...) 8 SPEs complètement IEEE en DP GPU : Proche de la norme IEEE Mais pas complètement en SP & DP : FMAD result truncated IEEE exceptions handled differently 02/12/09
Algorithme de la méthode d’Arnoldi Input : ANxN, v0 Output : VNxm, Hm+1xm, λ1, ..., λm, R1, ..., Rm> Calculer m produits matrice vecteur, + opérations BLAS 1 pour obtenir : V* A V = H Avec H Hessenberg et V orthogonale Calculer les valeurs propres intéressantes dans H Projeter les vecteurs propres associés de l’espace de H dans l’espace de A Estimation de l’erreur 02/12/09
Principe de la méthode ERAM Contrainte : la taille de V est N x m Solution : Faire itérer la méthode d’Arnoldi dans un plus petit sous-espace Explicitly Restarted Arnoldi Method (ERAM) Algorithme : Tant que error > tolerance Faire une itération d’Arnoldi Si nécessaire, redémarrer la méthode avec un nouveau vecteur initial construit avec une combinaison des vecteurs de Ritz calculés dans Arnoldi 02/12/09
Méthode d’Arnoldi Orthogonolisation et calcul de vp dominante (Hilbert matrix) 02/12/09
Précision atteinte pour l’orthogonalisation Arnoldi CGS : orthogonal basis 02/12/09
Précision atteinte pour l’orthogonalisation Arnoldi CGS with reorthogonalization : orthogonal basis 02/12/09
Influence sur la valeur propre dominante calculée Une itération de la méthode d’Arnoldi sur une matrice d’Hilbert d’ordre 10240 avec une taille de sous-espace de 8 : GPU proche du CPU Le Cell est 500-600x moins précis que le GPU en SP En DP, le Cell et le CPU calculent le même résultat. Celui du GPU diffère de 4.10-15 02/12/09
ERAM Méthode d’Arnoldi itérée (Hilbert & DingDong matrices) 02/12/09
Impact sur le nombre d’itérations, SP (cas facile) ERAM : Hilbert matrix, SP, tolerance ε= 10-8. Tests on a Quadro GPU. 02/12/09
Impact sur le temps de calcul, SP (cas facile) ERAM : Hilbert matrix in SP, ε= 10-8. Speed-up = 8x with Quadro GPU 02/12/09
Impact sur le nombre d’itérations, DP (cas facile) Same number of iterations between CPU and GPU (Tesla) in DP Mean speed-up of 17x between CPU and Tesla GPU, with an error of 3.10-15 02/12/09
Impact sur le nombre d’itérations (cas sensible) ERAM : DingDong matrix, SP , stop at ε= 10-8. Tests on Tesla GPU. 02/12/09
Impact sur le temps de calcul, SP (cas sensible) ERAM : DingDong matrix, SP, ε= 10-8. Mean speed-up = 16x on Tesla 02/12/09
Impact sur la précision, SP (cas sensible) ERAM : DingDong matrix, SP, ε= 10-8. 02/12/09
Conclusion Le GPU et le Cell peuvent améliorer la performance : Cell : 10x, SP ou DP GPU : 10-20x, SP ou DP Proche du speed-up obtenu avec le solveur Minos Impact sur le résultat: SP : Erreur de 10-6 à 10-5 for GPU, 10-4 à 10-3 pour le Cell en SP Le nombre d’itérations varie fortement avec un cas sensible DP : Résultat du Cell et du CPU identique GPU est proche du CPU avec une erreur de 10-15 02/12/09
Evolutions futures Nouveau modèle de GPU GT300/Fermi : Mémoire ECC (Error-Correcting Code) Respect complet de la norme IEEE-2008 Adressage mémoire 64 bits, cartes de 6Go prévues, ->1To! Ajout de caches L1 et L2 Support natif du C++ Puissance en DP multipliée par 8x : ~125 GFLOPs -> ~1TFLOPs Puissance SP multipliée par 2x : ~1TFLOPs -> 2TFLOPs 02/12/09
Merci pour votre attention ! Utilisation de GPUs et du Cell pour des calculs de neutronique : performances and precision Merci pour votre attention ! 02/12/09