GPU Computing : début d'une ère ou fin d'une époque? eric.mahe@massiverand.com



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

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

Introduction au calcul parallèle avec OpenCL

Architecture des ordinateurs

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

Initiation au HPC - Généralités

Quantification d incertitude et Tendances en HPC

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

MODULE I1. Plan. Introduction. Introduction. Historique. Historique avant R&T 1ère année. Sylvain MERCHEZ

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

Introduction à la programmation des GPUs

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

Rapport de stage Master 2

Architecture des calculateurs

CAHIER DES CHARGES D IMPLANTATION

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

TVTools Cloud Edition

Infrastructures Parallèles de Calcul

Marketing Update. Enabler / ENABLER aqua / Maestro II

Une bibliothèque de templates pour CUDA

Le langage C++ est un langage de programmation puissant, polyvalent, on serait presque tenté de dire universel, massivement utilisé dans l'industrie

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

Évaluation et implémentation des langages

INGÉNIEUR - DÉVELOPPEUR SENIOR EMBEDDED - C/C++ - MICROCONT RÔLEURS. 34 ans - 10 ans d'expérience

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

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

Elasticité logicielle pour optimiser l empreinte énergétique

Virtualisation sous Linux L'age de raison. Daniel Veillard

Windows Server Chapitre 1: Découvrir Windows Server 2008

SERVEUR CALLEO APPLICATION R269M

Etude d architecture de consolidation et virtualisation

Débogage de code* Mardi 13 décembre Romaric DAVID Université de Strasbourg - Direction Informatique Pôle HPC. hpc.unistra.

Programmation C. Apprendre à développer des programmes simples dans le langage C

Configuration système requise

Guide d installation JMap 5.0

LA RECONNAISSANCE VOCALE INTEGREE

FICHE PRODUIT 360 SPEECHMAGIC SDK

Déploiement d un serveur courriel dédié pour entreprise

Systèmes et traitement parallèles

Modélisation des interfaces matériel/logiciel

Installation et prise en main

Alexandre Buge Epitech 5 Promo Soutenance de stage du 01/03/2004 au 31/08/2004

SERVEUR LYNX CALLEO DATACENTER 2460

TAI049 Utiliser la virtualisation en assistance et en dépannage informatique TABLE DES MATIERES

Diagrammes de Package, de déploiement et de composants UML

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

Environnements de développement (intégrés)

CLIENTS LÉGERS. Remote Desktop Services Linux Terminal Server Project

Chapitre 2 : Abstraction et Virtualisation

Linux embarqué: une alternative à Windows CE?

Systèmes embarqués D.Rossier

Serveur Lynx CALLEO Application 2240S Fiches Technique

Tests de performance du matériel

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 :

Serveur Lynx CALLEO Application 2240 Fiches Technique

Adopter une approche unifiée en matière d`accès aux applications

Éléments de programmation et introduction à Java

Spécifications détaillées

LA MISSION D'AMD 2 L'HISTOIRE D'AMD 2014

LYCEE DE BRAS PANON MAPA MAI 2015

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

Relever les défis des véhicules autonomes

Qu est ce qu un un serveur?

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

HP 600PD TWR i G 4.0G 39 PC

Vulgarisation Java EE Java EE, c est quoi?

VIRTUALISATION : MYTHES & RÉALITÉS

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

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Limitations of the Playstation 3 for High Performance Cluster Computing

ACQUISITION DE MATERIEL INFORMATIQUE

Derrière toi Une machine virtuelle!

Infrastructure Management

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

Gestion de clusters de calcul avec Rocks

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

NatStar V8.00. Ce document présente la liste des nouvelles fonctionnalités de la 8.00, disponible à partir de septembre 2013.

Concept de machine virtuelle

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

Les environnements de calcul distribué

Remise à niveau d un programme JAVA du domaine public

Accès au Serveur de PAIE «SPV» par INTERNET Paramétrage du poste de travail «Windows»

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

Oracle Database SQL Developer Guide D'Installation Release 4.0 E

Introduction au langage C

Cloud Computing. La révolution industrielle informatique Alexis Savin

À propos de Parallels Desktop 10 pour Mac

1. Aménagements technologiques 2. Installation de Microsoft SQL Server 2012

Optimisation de logiciels de modélisation sur centre de calcul

Procédure d installation pour WinEUR PROCÉDURE D INSTALLATION POUR WINEUR. Copyright GIT SA 2015 Page 1/16

Catalogue des stages Ercom 2013

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

AutoForm plus R6 : Besoins systèmes

Installation LTE-SIM. Simulation du réseau 4G (LTE-SIM) en vue d optimiser les ressources spectrales de l opérateur.

Performance Computing 2012/13 GUIDE TECHNOLOGIQUE

Éléments d'architecture des ordinateurs

Virtual Box Mettez un PC dans votre... PC

Communications performantes par passage de message entre machines virtuelles co-hébergées

Transcription:

GPU Computing : début d'une ère ou fin d'une époque? eric.mahe@massiverand.com

Plan Génèse du projet OpenGPU Misères et grandeurs des GPUs Quelle place pour OpenCL? Les avancées de l'architecture Kepler Quelques remarques sur la consommation

Génèse du projet OpenGPU (1)

Génèse du projet OpenGPU (2)

Génèse du projet OpenGPU (3) Budget : 6M Durée : 2 ans 4 sous-projets : SP1 : organisation SP2 : outils SP3 : matériel SP4 : démonstrateurs

Misères et grandeurs des GPUs (1) Le GPU Computing : c'est (très) compliqué Compliqué à apprendre Compliqué à enseigner Compliqué à comprendre Compliqué à démarrer Compliqué à debugger Compliqué à optimiser

Misères et grandeurs des GPUs (2) Compliqué à apprendre : Grande diversité des développeurs : C, Fortran, C++, Java,... Penser parallèle n'est pas inné : for(int i = 0, ) C[i] = A[i] + B[i] C[threadIdx.x] = A[threadIdx.x] + B[threadIdx.x] ; C[blockIdx.x] = atomicadd(&c[0],val) ;

Misères et grandeurs des GPUs (4) Compliqué à comprendre : Des notions très proches du hardware : Warp, hiérarchie mémoire, PCI-E, cache L2 De nouvelles (ou très anciennes) obligations : Frontières de 128 bits, coalesence, padding, malloc/free De nouvelles notions : SIMD, grille de threads, barrière de synchronisation,...

Misères et grandeurs des GPUs (4) Compliqué à démarrer : Qui a essayé d'installer CUDA sur Linux? Blacklist du driver nouveau Recompilation du kernel Modification des paramètres Xconf 32 bits vs 64 bits Driver propriétaire obligatoire Sous Windows? Compilateur Microsoft obligatoire (pas de gcc) #include <cutil_inline.h>?????? Règles CUDA de compilation????????

Misères et grandeurs des GPUs (5) Compliqué à debugger : GPU + Driver propriétaire = boîte(s) noire(s) Pas de spécifications publiques Une abstraction fournie par CUDA Que fait vraiment le driver?? Outils de debug : Linux : gdb-cuda + DDD Windows? Parallele Nsight : patche CUDA 10 M de threads où est l'erreur? printf dans le kernel!! Unknown error at line 457?????

Misères et grandeurs des GPUs (6) Compliqué à optimiser : Accès mémoire : Coalesced read/write Loi de Brent : Minimum de calcul par thread Gestion de la mémoire partagée Un vrai casse-tête : conflit d'accès, 16 banques, pénalités Utilisation du cache L2 très efficace Vectorisation, unroll des boucles,... Exemple : réduction!!

Misères et grandeurs des GPUs (7) Mais, ça marche (très) bien: INRA (3 M de gènes): 16 processus / Sun = 3 ans 6 processus OpenMP / 12 Xeons = 18 jours 160 cœurs + 40 Tesla 2070 = 1 heure Numtech (solveur fluide compressible, 2048 x 1024) : CPU : 44 heures GPU : 1 heure

Misères et grandeurs des GPUs (8) Mais, ça marche (très) bien: IBISC (recherche de palindromes, 120 M de bases): CPU : 20 minutes GPU : 1 minute ESI (systèmes linéaires creux) : CPU : 700 minutes GPU : 350 minutes

Misères et grandeurs des GPUs (9) Mais, ça marche (très) bien: Apprentissage de la parallélisation Intégration de ce nouveau paradigme Repenser le code Modernisation et optimisation de la partie séquentielle Arrivée de nouvelles architectures GPU, IGP, openmp, MPI, OpenCL, CUDA, Nouvelles publications pour les laboratoires

Quelle place pour OpenCL? (1) OpenGPU = OpenCL Mais : CUDA plus mature OpenCL moins performant Très très verbeux Gestion des priorités Démonstration...

Quelle place pour OpenCL? (2) Intel SDK 1.5 pour Ivy Bridge : Prise en compte de l'igp Très bonne vectorisation du code CUDA vs OpenCL : ~ 1,5 fois plus rapide Portabilité sans optimisation envisageable

Les avancées de l'architecture Kepler (1) GK104 = GTX 680 Pour les joueurs uniquement GK110 = GPU Computing Disponible pour la fin de l'année 4 fois plus rapide que Fermi!! Plus de registres, grille plus grande, 4 scheduleurs, Doublement du cache L2!!

Les avancées de l'architecture Kepler (2)

Quelques remarques sur la consommation Exécution d'un kernel OpenCL sur un 3770 K Première exécution sur les 4 cœurs 22 secondes Deuxième exécution sur l'igp (HD 4000) 20 secondes Et la consommation?

Quelques remarques sur la consommation CPU = 83.38 Watts

Quelques remarques sur la consommation IGP = 53.75 Watts

Conclusion Fin d'une ère? Certainement! Penser uniquement séquentiel est has been Début d'une époque? Cartainement! La parallélisation est rentrée dans les crânes! De nouvelles directions : Map and Reduce, IGP, ARM, Kepler, OpenCL 1.2,...