Calcul scientifique haute performance sur GPUs.



Documents pareils
Rencontre sur la thématique du Calcul Haute Performance - 13 juin Better Match, Faster Innovation

Initiation au HPC - Généralités

Contrôle Non Destructif : Implantation d'algorithmes sur GPU et multi-coeurs. Gilles Rougeron CEA/LIST Département Imagerie Simulation et Contrôle

T. Gasc 1,2,3, F. De Vuyst 1, R. Motte 3, M. Peybernes 4, R. Poncet 5

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Introduction à CUDA.

Projet IGGI. Infrastructure pour Grappe, Grille et Intranet. Fabrice Dupros. CASCIMODOT - Novembre Systèmes et Technologies de l Information

Une bibliothèque de templates pour CUDA

Limitations of the Playstation 3 for High Performance Cluster Computing

Architecture des ordinateurs

M2-Images. Rendu Temps Réel - OpenGL 4 et compute shaders. J.C. Iehl. December 18, 2013

Info0804. Cours 6. Optimisation combinatoire : Applications et compléments

Quantification d incertitude et Tendances en HPC

Aspects théoriques et algorithmiques du calcul réparti L agglomération

CORBA haute performance

Tout ce que vous avez toujours voulu savoir sur SAP HANA. Sans avoir jamais osé le demander

BILAN du projet PEPS 1 EOLIN (Eolien LMI INSA)

Architecture des calculateurs

Retour d expérience, portage de code Promes dans le cadre de l appel à projets CAPS-GENCI

Introduction à la Programmation Parallèle: MPI

Synthèse d'images I. Venceslas BIRI IGM Université de Marne La

Segmentation d'images à l'aide d'agents sociaux : applications GPU

. Plan du cours. . Architecture: Fermi ( ), Kepler (12-?)

Génération de code binaire pour application multimedia : une approche au vol

Rapport d activité. Mathieu Souchaud Juin 2007

Rapport de stage Master 2

Contribution à la conception à base de composants logiciels d applications scientifiques parallèles.

Vers du matériel libre

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Happy birthday ZSet High performance computing dans ZSet

Figure 3.1- Lancement du Gambit

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Maarch Framework 3 - Maarch. Tests de charge. Professional Services. 11, bd du Sud Est Nanterre

Résolution de systèmes linéaires par des méthodes directes

Chapitre V : La gestion de la mémoire. Hiérarchie de mémoires Objectifs Méthodes d'allocation Simulation de mémoire virtuelle Le mapping

État de l art des simulations multi-agents sur GPU

Linux embarqué: une alternative à Windows CE?

Manuel de validation Fascicule v4.25 : Thermique transitoire des structures volumiques

IRL : Simulation distribuée pour les systèmes embarqués

Windows Server Chapitre 1: Découvrir Windows Server 2008

EX4C Systèmes d exploitation. Séance 14 Structure des stockages de masse

La Forge INRIA : bilan et perspectives. Hervé MATHIEU - 11 mai 2010

I. Programmation I. 1 Ecrire un programme en Scilab traduisant l organigramme montré ci-après (on pourra utiliser les annexes):

Potentiels de la technologie FPGA dans la conception des systèmes. Avantages des FPGAs pour la conception de systèmes optimisés

Big Data et Graphes : Quelques pistes de recherche

Calcul multi GPU et optimisation combinatoire

Rapport 2014 et demande pour Portage de Méso-NH sur Machines Massivement Parallèles du GENCI Projet 2015 : GENCI GEN1605 & CALMIP-P0121

ÉdIteur officiel et fournisseur de ServIceS professionnels du LogIcIeL open Source ScILab

Cours 13. RAID et SAN. 2004, Marc-André Léger

Exemple d application en CFD : Coefficient de traînée d un cylindre

Les environnements de calcul distribué

TRAVAUX DE RECHERCHE DANS LE

Gestion de mémoire secondaire F. Boyer, Laboratoire Sardes

physicien diplômé EPFZ originaire de France présentée acceptée sur proposition Thèse no. 7178

Présentation du module Base de données spatio-temporelles

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Completed Projects / Projets terminés

BIG Data et R: opportunités et perspectives

Efficient Object Versioning for Object- Oriented Languages From Model to Language Integration

Systèmes et traitement parallèles

Approche par groupe de gènes pour les données longitudinales d expression génique avec une application dans un essai vaccinal contre le VIH

UNIVERSITÉ D ORLÉANS ÉCOLE DOCTORALE MIPTIS MATHÉMATIQUES, INFORMATIQUE, PHYSIQUE THÉORIQUE ET INGÉNIEURIE DES SYSTÈMES. THÈSE présentée par :

Runtime. Gestion de la réactivité des communications réseau. François Trahay Runtime, LaBRI sous la direction d'alexandre Denis Université Bordeaux I

SIMULATION DU PROCÉDÉ DE FABRICATION DIRECTE DE PIÈCES THERMOPLASTIQUES PAR FUSION LASER DE POUDRE

Programmation parallèle et distribuée

Simulations de systèmes quantiques fortement corrélés:

Stephan Hadinger, Sr. Mgr Solutions Architecture, AWS. Salon du Big Data 11 mars 2015

SensOrLabs. a protocol validation platform for the IoT. Dominique Barthel, Quentin Lampin IMT/OLPS/BIZZ/MIS Apr 7th 2014, ST, CEA, LIG

//////////////////////////////////////////////////////////////////// Administration bases de données

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

"Modélisation interactive d'un genou humain"

Le data center moderne virtualisé

Big Data et Graphes : Quelques pistes de recherche

Détection d'intrusions en environnement haute performance

LABO 5 ET 6 TRAITEMENT DE SIGNAL SOUS SIMULINK

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

HPC by OVH.COM. Le bon calcul pour l innovation OVH.COM

Systèmes Multi-Agents et GPGPU : état des lieux et directions pour l avenir

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Etude d Algorithmes Parallèles de Data Mining

Modélisation des interfaces matériel/logiciel

transformer en avantage compétitif en temps réel vos données Your business technologists. Powering progress

ANALYSE NUMERIQUE ET OPTIMISATION. Une introduction à la modélisation mathématique et à la simulation numérique

SDLV120 - Absorption d'une onde de compression dans un barreau élastique

FORUM NTIC BIG DATA, OPEN DATA Big Data: les challenges, les défis

RIE LE RENDU THEO. 2 e trim ÉTAPE DE FINITION BOÎTE DE DIALOGUE. remarques

Les mésocentres HPC àportée de clic des utilisateurs industriels

WEA Un Gérant d'objets Persistants pour des environnements distribués

Concept de machine virtuelle

Métriques de performance pour les algorithmes et programmes parallèles

Disponibilité et fiabilité des services et des systèmes

Introduction au calcul parallèle avec OpenCL

Introduction à la programmation des GPUs

Parallélisme et Répartition

Formation à la C F D Computational Fluid Dynamics. Formation à la CFD, Ph Parnaudeau

AdBackup Entreprise. Solution de sauvegarde pour Moyennes et Grandes Entreprises. Société Oodrive

Les technologies du Big Data

Relever les défis des véhicules autonomes

HAUTE DISPONIBILITÉ DE MACHINE VIRTUELLE AVEC HYPER-V 2012 R2 PARTIE CONFIGURATION OPENVPN SUR PFSENSE

Partie 7 : Gestion de la mémoire

Transcription:

Calcul scientifique haute performance sur GPUs. David Michéa(1), Dimitri Komatitsch(2,3), Gordon Erlebacher(4) and Dominik Göddeke(5) Portage de SPECFEM3D (SEM) sous CUDA + MPI Portage CUDA du code différences finies ONDES3D (1) BRGM, Orléans, France (2) University of Pau, CNRS and INRIA Magique3D, Pau, France (3) Institut universitaire de France, Paris, France (4) Florida State University, USA (5) TU Dortmund, Germany

SPECFEM3D Dimitri Komatitsch Jeroen Tromp David Michéa Min Chen Vala Hjörleifsdóttir Sue Kientz Qinya Liu Alessia Maggi Brian Savage Bernhard Schuberth Leif Strand Carl Tape Jesus Labarta But : modéliser la propagation d ondes sismiques dans la terre entière ou dans des régions densément peuplées à la suite de grands tremblements de terre SPECFEM3D est open source (GNU GPL v2) Le code Fortran original sans CUDA a été principalement développé par Dimitri Komatitsch and Jeroen Tromp à l université de Harvard, Caltech et Princeton (USA) et à l université de Pau (France) depuis 1996 Il a été optimisé avec le Barcelona Supercomputing Center, Espagne (Jesus Labarta et al.) et David Michéa de l INRIA (HPC-Europa program, 2007)

Spectral-Element Method Developed in Computational Fluid Dynamics (Patera 1984) Introduced for 3D elastodynamics by Komatitsch et al., Chaljub et al. Large curved spectral finite-elements with high-degree polynomial interpolation: accuracy of a pseudospectral method, flexibility of a finiteelement method Mesh honors the main discontinuities (velocity, density) and topography Very efficient on parallel computers, no linear system to invert (diagonal mass matrix) Curved 27-node elements are mapped to unit cube provides efficient way of capturing curvature of sphere, and accuracy for surface waves High-degree pseudospectral finite elements: Number of integration Gauss Lobatto Legendre (NGLL) points = 5 to 9 usually

Maillage : une sphère cubique Gnomonic mapping (Sadourny 1972) Ronchi et al. (1996), Chaljub (2000) Analytical mapping from six faces of cube to unit sphere

Structure du code A chaque itération de la boucle en temps, trois principaux types d opérations sont effectuées : Mise à jour (sans dépendances) de tableaux globaux composés de points uniques du maillage Calculs purements locaux du produit de matrices de dérivations prédéfinies avec une copie locale des vecteurs déplacements le long de plans de coupes dans les 3 directions (i, j & k) d un élément spectral 3D Mise à jour (sans dépendances) d autres tableaux globaux composés de points uniques du maillage

Numérotation locale vs numérotation globale En 3D et pour NGLL=5, pour un maillage hexahédrique régulier, il y a : 125 points d intégration dans chaque élément 27 appartiennent uniquement à cet élément 98 appartiennent à plusieurs éléments Problème : on doit sommer les contributions locales dans les tableaux globaux

Coloriage du maillage Problème : s assurer que les contributions de deux noeuds locaux n impactent jamais le même point global à partir de différentes warps. Utilisation du coloriage : supprimer les dépendances entre les points du maillage dans un même kernel

Parallélisation avec MPI Ancien schéma de communication (MPI bloquant) Mise à jour effectuées directement dans les tableaux Tous les éléments sont calculés avant l envoi des messages Nouveau schéma de communication (MPI non bloquant) Mise à jour effectuées d abord dans les buffers Les messages sont envoyés après le calcul des éléments externes A B A B C D C D Coût des communications pour la version CPU ~ 5%, Sur la version TESLA GPU, avec un speed-up de 15, le coût des communications ~44% > Nécessité d utiliser des communications MPI asynchrones. > Les communications MPI sont bien recouvertes par le calcul sur GPU.

Schema des 2 versions sans MPI (v2 : out of GPU core)

Schema avec MPI

Coalescence des accès en mémoire globale Dans les kernels 1 & 3, Tous les accès sont parfaitement coalescés Dans le kernel 2, Tous les accès aux tableaux locaux sont parfaitement coalescés (125 pts alignés sur 128 floats) Par contre, Lors de l accès aux tableaux globaux dans le kernel 2, l indirection nécessaire pour gérer la topologie non structurée du maillage (ie local global) entraîne des accès non-coalescés inévitables.

Optimisation du code CPU : défauts de cache V4.0 => Il est crucial de réutiliser les points communs en les gardant dans le cache V4.0 V3.6

Résultats - Accélération Mesh size GTX 280 8800 GTX Version 1 Version 1 Version 2 Time / element Speedup Time / element Speedup Time / element Speedup Transfer time 65 MB 0.94 µs 21.5 1.5 µs 13.5 4.2 µs 4.6 68% 405 MB 0.79 µs 24.8 1.3 µs 15 3.7 µs 5.3 68% 633 MB 0.77 µs 25.3 1.3 µs 15 3.7 µs 5.3 67% Le speedup final pour le code CUDA + MPI est de 25x Les performances se dégradent pour les trop petits modèles, le nb d éléments dans chaque couleur doit être > 1024

Validation

Portage sous CUDA du code différences finies ONDES3D ONDES3D est un programme qui simule la propagation d ondes sismiques dans un milieu élastique hétérogène. Il utilise la méthode des différences finies du 4eme ordre. Il a été écrit par Hideo Aoschi & Arianne Ducellier du BRGM. Il implémente les couches absorbantes C-PML de D.Komatitsch and R.Martin (Geophysics, 2007)

Structure du code <initializations/> <time loop> <update source momentum/> CPU <memcpy H->D (few data)/> <compute velocity vector from stress tensor/> <compute stress tensor from velocity vector/> <memcpy D->H (few data)/> <record seismograms/> CPU </time loop> GPU GPU Toutes les structures de données sont hébergées sur le GPU, à l exception des sismogrammes.

Stencil différences finies du 4eme ordre Méthode des différences finies : un méthode simple mais une implémentation délicate sur GPU > Le stencil de calcul conduit à une forte redondance de lecture > Nécessité d utiliser massivement la mémoire partagée

Topologie du bloc de points (1 thread par point) > Pour un bloc de points à calculer, besoin de connaître les valeurs d un «halo» de points autour > Il faut réduire le ratio halo_points / block_points pour réduire la redondance de lecture > Approche intuitive : des blocs 3D qui minimisent ce ratio > Problème : pas assez de mémoire partagée pour avoir des blocs 3D assez gros pour avoir un bon ratio.

Algorithme à fenêtre coulissante Utilisation de l approche de P. Micikevicius de NVIDIA (2009) : un algorithme à fenêtre coulissante > Utiliser un pavage 2D au lieu des blocs 3D et boucler sur l axe Z. > En 2D, il y a assez de mémoire partagée pour avoir des pavés suffisamment gros pour obtenir un bon ratio entre les points calculés et les points du halo. > Les données suivant l axe Z sont décalées en registres à chaque itération suivant un mécanisme de pipeline => à part pour les halos, les données d un point ne sont chargés qu une fois depuis la mémoire globale à chaque itération (en temps).

bloc 2D On utilise un thread par point dans le plan xy et on le pave avec des blocs de 16x8 threads. Pour un bloc : 4*16+4*8+16*8 données chargées par 16*8 threads => 1.75 accès en mémoire globale / thread pour chaque itération

Schema de fonctionnement des kernels

coalescence des accès mémoire (globale) Pour notre carte NVIDIA 8800 GTX, D après le CUDA Programming Guide, l accès en mémoire globale par tous les threads d une half-warp est coalescé en une transaction mémoire s il satisfait ces 3 conditions : Les threads doivent accéder des mots de 32 bits, résultant en une transaction mémoire de 64 octets. Ces 16 mots doivent se trouver dans le même segment de taille égale à la taille de la transaction mémoire Les threads doivent accéder ces mots séquentiellement. => Le profiler CUDA nous donne gst_uncoalesced = 0. Les lectures ne sont pas coalescées pour les halos, ni pour les C-PMLs qui sont accédées via une indirection pour ne pas gâcher de mémoire.

Speedup Speedup : de 40x à 50x Le speedup dépend de : > l épaisseur des C-PMLs: si l épaisseur des C-PML n est pas multiple de 16 (blockdim.x), les threads d une half-warp divergent dans les C-PMLs. > Dimensions du modèle Si la largeur du modèle n est pas multiple de 16 (blockdim.x), certains threads sont inactifs et les threads d une half-warp divergent pour les C-PMLs situées à droite.

Scaling Le scaling suivant Z est quasi linéaire. Malgré les accès coalescés, le scaling suivant X (en terme de nb de blocs) n est pas régulier. Ceci est probablement dû à des exigences hardware non documentées.

Validation

Conclusions & perspectives > Portage réussi de codes FD & SEM sur grappe de GPUs > Les résultats sont satisfaisant en terme d accélération > Les principales limitations ont été les ressources internes de la carte (registres + shmem), particulièrement si nous voulons ajouter d autres paramètres comme de l atténuation (l occupancy pour ONDES3D est de 0.166, principale limite : le nombre limité de registres) > Nous avons réalisé un premier prototype de couplage calcul-visualisation interactif qui nous permet de visualiser la simulation tournant sur notre grappe de GPU en temps réel sur notre banc de réalité virtuelle et d interagir avec celle-ci. > Nous n avons pas encore testé nos codes sur la nouvelle architecture FERMI de NVIDIA à voir > Si le BRGM devait s investir durablement dans le GPGPU, le prochain projet se fera en utilisant le standard OpenCL.