Architecture des GPU (GPU=Graphics Processing Unit) gael.guennebaud@inria.fr

Documents pareils
Initiation au HPC - Généralités

Architecture des ordinateurs

Architecture des calculateurs

Quantification d incertitude et Tendances en HPC

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

Eléments d architecture des machines parallèles et distribuées

Tout savoir sur le matériel informatique

Systèmes et traitement parallèles

Architecture des Ordinateurs. Partie II:

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Limitations of the Playstation 3 for High Performance Cluster Computing

Fonctionnement et performance des processeurs

Une bibliothèque de templates pour CUDA

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

Introduction au calcul parallèle avec OpenCL

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

Exécution des instructions machine

Parallélisme et Répartition

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

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 :

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

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Infrastructures Parallèles de Calcul

Équilibrage Dynamique de Charge pour des Calculs Parallèles sur Cluster Linux - Une Évaluation de l Environnement AMPI.

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

Introduction à CUDA.

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

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

Introduction à la programmation des GPUs

Mesure de performances. [Architecture des ordinateurs, Hennessy & Patterson, 1996]

Programmation parallèle et ordonnancement de tâches par vol de travail. Thierry Gautier MOAIS, INRIA, Grenoble

neotechpro catalogue neotechpro NeoTechPro International

High Performance by Exploiting Information Locality through Reverse Computing. Mouad Bahi

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

PACKZ System Requirements. Version: Version: Copyright 2015, PACKZ Software GmbH. 1

Les environnements de calcul distribué

<Insert Picture Here> Solaris pour la base de donnés Oracle

Architecture ordinateur. Organisation mémoire et Entrées/Sorties

libérez votre innovation avec l extreme computing CEA/Philippe Stroppa

Découvrez les Nouveautés Février 2010 du Catalogue PC Pack PRO

I00 Éléments d architecture

Déterminer le Nombre de licences pour V-locity 4

Architectures d implémentation de Click&DECiDE NSI

Une dérivation du paradigme de réécriture de multiensembles pour l'architecture de processeur graphique GPU

Une méthode de conception de systèmes sur puce

Guide Mémoire NETRAM

Structure de base d un ordinateur

Leçon 1 : Les principaux composants d un ordinateur

Chapitre 1. Infrastructures distribuées : cluster, grilles et cloud. Grid and Cloud Computing

Journée Utiliateurs Nouvelles du Pôle ID (Informatique) Pierre Neyron, LIG/CNRS

3 ème journée des utilisateurs de l archivage

Introduction à la Programmation Parallèle: MPI

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

THÈSE. Pour obtenir le grade de. Spécialité : Informatique. Arrêté ministériel : 7 août Présentée et soutenue publiquement par.

Rapport d activité. Mathieu Souchaud Juin 2007

Informatique Industrielle Année Architecture des ordinateurs Note de cours T.Dumartin

Structure et fonctionnement d'un ordinateur : hardware

CH.3 SYSTÈMES D'EXPLOITATION

Présentation de la Grille EGEE

Calcul scientifique précis et efficace sur le processeur CELL

Architecture des ordinateurs

Tests de performance du matériel

Guide d'installation d'esprit Version 2014 R2

Windows Server Chapitre 1: Découvrir Windows Server 2008

HP 600PD TWR i G 4.0G 39 PC

StruxureWare Power Monitoring v7.0. La nouvelle génération en matière de logiciel de gestion complète d énergie

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

Choix d'un serveur. Choix 1 : HP ProLiant DL380 G7 Base - Xeon E GHz

Intel Corporation Nicolas Biguet Business Development Manager Intel France

Sur un ordinateur portable ou un All-in-One tactile, la plupart des éléments mentionnés précédemment sont regroupés. 10) 11)

A1-1 - Aspects théoriques et algorithmiques du calcul réparti

Gestion de clusters de calcul avec Rocks

Protection de l Investissement Virtualisation, Efficacité énergétique

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

ELP 304 : Électronique Numérique. Cours 1 Introduction

Hétérogénéité pour atteindre une consommation énergétique proportionnelle dans les clouds

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

SIGAMM/CRIMSON COMMISSION UTILISATEUR du 05/12/2014

Performance web. Mesurer. Analyser. Optimiser. Benjamin Lampérier - Benoît Goyheneche. RMLL Beauvais. 8 Juillet 2015

Présentation du système informatique utilisé et éléments d architecture des ordinateurs

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

Calcul Réparti et Grid Computing

Chapitre 4 : Les mémoires

Séminaire RGE REIMS 17 février 2011

Matériel & Logiciels (Hardware & Software)

Centres informatiques

Rappels d architecture

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

BASE DE DONNÉES ORACLE 11G SUR LE SYSTÈME DE STOCKAGE PILLAR AXIOM. Livre blanc publié par Oracle Novembre 2007

Le calcul intensif chez PSA Peugeot Citroën. TERATEC 28 juin 2011

Cours d'architecture parallèle

GPA770 Microélectronique appliquée Exercices série A

Etude d architecture de consolidation et virtualisation

Happy birthday ZSet High performance computing dans ZSet

GCOS 7 sur microprocesseur standard Diane Daniel POIRSON 14 octobre 2004 Matériels 64 / DPS 7 / DPS 7000 Architecture & Evolution - Daniel POIRSON 1

Une nouvelle génération de serveur

Vers du matériel libre

Spécifications détaillées

Les participants repartiront de cette formation en ayant une vision claire de la stratégie et de l éventuelle mise en œuvre d un Big Data.

Transcription:

Architecture des GPU (GPU=Graphics Processing Unit) gael.guennebaud@inria.fr

Plan du cours 2 Motivations pour les GPUs single core multi-core many-core Architecture des GPUs CPU versus GPU Programmation des GPUs pour des applications non graphique briques de bases pour la programmation many-core CUDA

Motivations pour le GPU 3 Toujours plus de puissance... plus rapide : de x10 à x100 ou plus!! résoudre des problèmes plus gros plus de précisions rendre possible de nouvelles applications, nouveaux algorithmes etc. Puissance brute : top 5 des supercalculateurs : de 10000 à 55000 TFlops 1 GPU : ~5 TFlops == top 5 en 2001!

Domaines d'applications des GPU 4 Initialement Synthèse d'images Applications généralistes, exemples : Traitement d'images FFT Simulation par éléments finis système de particule Algèbre linéaire, optimisation Algorithmes de trie, de recherche... etc. Computational Geoscience Computational Medicine Computational Physics Computational Chemistry Computational Modeling Computational Biology!! vidéos!! Computational Finance Image Processing

Loi de Moore... 5 Le nombre de transistors qui peut être intégré facilement dans un microprocesseur double tout les deux ans

Motivations pour le multi-cores 6 Finesse de gravure (32nm en 2010, 22nm en 2012, 14nm en 2014, ) plus de transistors par circuit Leviers pour augmenter les performances avec un seul processeur : augmenter la fréquence? difficile, consommation++, chaleur++ augmenter la complexité des processeurs opérations spécialisées, logique (ex. prédiction de branchement), cache, etc. x2 logic x1.4 performance (Pollack's rule)!! vidéo!!

Motivations pour le multi-cores 7 Leviers pour augmenter les performances multiplier le nombre d'unités de calcul : parallélisme au niveau des instructions out-of-order execution pipelining difficile (beaucoup de logique) et limité parallélisme au niveau des données (SIMD) une seule instruction appliquée sur plusieurs registres unités vectorielles : SSE, AVX, NEON, Cell SPE, (GPU) efficace pour certaines applications, mais relativement difficile à exploiter et reste limité un seul proc. parallélisme au niveau des threads multi-core, many-core (>100)

Motivations pour le multi-cores 8 Plusieurs processeurs par circuits, plusieurs circuits par carte réels gains théoriques: 2 «petits» processeurs x1.8 perf 1 processeur 2 fois plus gros x1.4 perf consommation et dissipation de chaleur réduite N processeurs légèrement plus lents consomment autant qu'un seul rapide activation individuelle des processeurs accès mémoires plusieurs CPU peuvent accéder en même temps à la mémoire permet d'augmenter la bande passante même sans en réduire la latence simplicité plus simple de concevoir et fabriquer pleins de «petits» CPU simples, qu'un seul gros et complexe améliore également la robustesse et absence de pannes/bugs

Motivations pour le multi-cores 9 multi-core everywhere CPU, GPU, même dans les smart-phones :

mais... 10 Programmer est difficile Programmer parallèle est encore plus difficile Trouver le parallélisme : trouver des tâches pouvant être exécutées en même temps ( démo/exemple) Coordination entre les tâches (avoid races and deadlocks) éviter les attentes race condition (résultat différent en fonction de l'ordre d'exécution) correct behavior (critical section)

mais... 11 Programmer est difficile Programmer parallèle est encore plus difficile Trouver le parallélisme : trouver des tâches pouvant être exécutées en même temps ( démo/exemple) Coordination entre les tâches (avoid races and deadlocks) éviter les attentes Contrôler les surcouts limiter les échanges de données limiter les calculs supplémentaires Modèles simplifiées Google's «map-reduce» divide and conquer Nvidia's data parallelism big homogeneous array Erlang's fonctional programming side-effect free...

Rappels - Architecture des CPUs

Rappel CPU Hiérarchie mémoire 13 RAM (NUMA) x1000 bigger ; ~400 cycles Cache - L2 x100 bigger (900x900 floats) ; 40-100 cycles Cache - L1 x100 bigger (90x90 floats) ; 1-4 cycles regs small (8x8 floats) ; 1 cycle ALU

Rappels CPU Parallélisme 1/3 14 3 niveaux de parallélisme : multi/many-cores OpenMP (multi-threads, mémoire partagé) PC shared memory CPU1 CPU2... CPUn

Rappels CPU Parallélisme 2/3 15 3 niveaux de parallélisme : multi/many-cores OpenMP (multi-threads, mémoire partagé) SIMD Single Instruction Multiple Data (SSE, AVX, ) 4-3 -12-1 -6 * 5-2 -5 12 2 4 8 reg0 reg1 reg2

Rappels CPU SIMD 16 memory fastslower (aligned) (not aligned) don't be silly!

Rappels CPU SIMD 17 Array of Structure (AoS) struct Vec3 { float x, y, z; } ; Vec3 points[100] ; not SIMD friendly Structure of Arrays (SoA) struct Points { float x[100]; float y[100]; float z[100]; }; Points points; [démo]

18 Rappels CPU Parallélisme 3/3 3 niveaux de parallélisme : multi/many-cores OpenMP (multi-threads, mémoire partagé) SIMD Single Instruction Multiple Data (SSE, AVX, ) pipelining requière des instructions non dépendantes a = a * b; c = c * d; e = e * f; g = g * h; 1op = 4 mini ops = 4 cycles [démo] 4 ops in 7 cycles! time

Rappels CPU In-order / Out-of-order 19 In-order processors instruction fetch attendre que les opérandes soient prêtes exécuter l'instruction par l'unité respective Out-of-orders processors instruction fetch mettre l'instruction dans une file d'attente dès que les opérandes d'une des instructions de la file d'attente sont prêtes, exécuter l'instruction par l'unité respective réduit les temps où le processeur est en attente requière des instructions non dépendantes

Peak performance 20 Example : Intel i7 Quad CPU @ 2.6GHz (x86_64,avx,fma) pipelining/ooo 2 * (mul + add) / cycle (cas idéal) AVX x 8 ops simple précision à la fois multi-threading x 4 fréquence x 2.6G peak performance: 332.8 GFlops

CPU versus GPU 22 CPU : applications généraliste optimisé pour qu'un thread finisse le plus rapidement possible pipelining important gros caches logic complexe (prédiction de branchement, prefetching, out-oforder, hyper-threading) GPU calcul flottant optimisé pour qu'un groupe de threads finissent rapidement context-switching petit caches, beaucoup de registres logique réduite à la gestion des threads

CPU versus GPU Conséquence 24 GPU performant sur un certain type de calcul uniquement exploiter les deux au mieux!

Architecture d'un GPU Nvidia 25 Découpage hiérarchique : Graphics Processing Cluster Streaming multiprocessors regroupés par cluster Chaque SM peut exécuter un programme différent (MIMD)

Architecture d'un GPU Nvidia Streaming Multiprocessor composé de nombreuses unités de calculs many-core exécution synchronisée du même programme approche «scalaire» 1 thread par core Single Program Multiple Data (SPMD) Single Instruction Multiple Threads!! différent du SIMD des CPU!! accent sur les opérations + et * sur les float sqrt, div, pow, etc. beaucoup plus lent double (beaucoup) plus lent grand banc de registres limité les accès mémoire context-switching Streaming Multiprocessor 26

Conséquence du SPMD 27 N threads suivent le même chemin d'exécution durée d'exécution >= durée du thread le plus long attention aux branchements dynamiques, aux boucles Exemple : branchement dynamique en fonction d'un motif à bande de 1 à 800pixels :

Conséquence du SPMD 28 Architecture compromis entre le nombre de cores par SM et les unités de logique/contrôle Exemple for(i=0;i<k;++i) { if(data[i]!=0) { foo(i) ; // calculs complexes } } int i=0 ; while(i<k) { while(i<k && data[i]==0) ++i; if(i<k) { foo(i) ; // calculs complexes } } ( de meilleures solutions existe...)

Conséquence du SPMD 29 Exemple : traitement spécial aux silhouettes :

Accès mémoires cohérence 30 mémoire registres FAST thread 0 thread 1 thread 2 thread 3 thread 4 thread 5 thread 6 thread 7 mémoire registres FAST thread 0 thread 1 thread 2 thread 3 thread 4 thread 5 thread 6 thread 7

Accès mémoires cohérence 31 mémoire registres thread 0 thread 1 thread 2 thread 3 thread 4 thread 5 thread 6 thread 7 SLOW mémoire registres thread 0 thread 1 thread 2 thread 3 thread 4 thread 5 thread 6 thread 7 SLOW

Problème des accès mémoires 32 CPU ou GPU 1 accès mémoire qques centaines de cycles!! (1 cycle 1 opération flottante) Solutions CPU caches énormes, hiérarchiques, prefetching auto, etc. GPU (unités de «textures» avec mini-caches supposant des accès cohérents) stockage des résultats temporaires dans des registres masquage des temps de latence par mise en attente des threads

Masquage des temps d'attentes 33 Rappel : l'objectif est d'optimiser les temps de calculs pour un «groupe» de threads, pas pour un thread unique Idée : associer plusieurs paquets de threads à un SM un seul paquet est actif à la fois principe si le packet actif doit attendre des données alors context-switching : on met le paquet en attente on active un autre paquet lorsque les données sont arrivées échange nécessite beaucoup de registres!

Masquage des temps de latences 34