De Parallelle Revolutie van GPU's en CPU's George van Venrooij Organic Vectory BV Bits&Chips Embedded Systemen 18 November 2011 Eindhoven
Een nieuw speelveld Desktop PC anno 2005 2 GHz CPU (1 core, 6 GFLOP/s) 256-512 MB RAM Fixed-function GPU Desktop PC vandaag 2.5 GHz CPU (4 cores, 200 GFLOP/s) 4 GB RAM 1 GHz GPGPU (338 cores, 1200 GFLOP/s) ipad 2 1 GHz CPU (2 cores, 170 MFLOP/s) 512 MB RAM 200 MHz GPU (2 cores, 8 pipelines, 14 GFLOP/s)
De desktop-super-computer Supercomputer Veel rekenkracht Veel geheugen Gedistribueerd Software performance schaalt mee met de hardware performance!
De Revolutie Aanpassingen in het volledige software ontwikkel traject Doel: Schaalbare performance van software die de curve van Moore's wet (weer) gaat volgen
Data-Explosie Grootte van het data universum in Mei 2011: 1.2 zettabytes
Rekenintensievere Processen Spraakherkenning Computer Vision 3D Analyse Simulaties Navigatie... etcetera
Parallel = de nieuwe standaard? DirectCompute
Noise Mapping op GPU's
Complexiteit per update Standaard Reken Methode 2 (SRM-2) Geluidsoverlast in woongebieden 3 x 3 km stadscentrum (Rotterdam) 300x300 grid cellen met bodemgegevens Maximale pad lengte: 1 km 10.493 gevels (in 1x1 km gebied) 1.924 weg segmenten (in 3x3 km gebied) 71.615 gebouwen & obstakels (in 3x3 km gebied) Single-threaded rekentijd: 87 minuten
Doelstelling: interactiviteit
Project Traject Analyse Platform keuze Hardware Software Design Implementatie Bibliotheken Ontwikkeltools Algoritme ontwerp Testen & Oplevering
Analyse Parallelle paden Onafhankelijk te berekenen GPGPU-geschikt!
Platform Keuze Windows PC NVidia CUDA VS 2008 Geen OpenCL NVidia GTX 280 240 cores, 1 GB RAM
CUDA OpenCL nvidia-hardware Generiek GPU's CPU's, GPU's & meer Volwassener (v4.0) Jonger (v1.1) Veel bibliotheken & resources Toolchain integratie is eenvoudig Kernel taal bevat C++ features Visual Studio Debugger op source-niveau Kleine, maar snel groeiende community Toolchain integratie vergt wat denkwerk Kernel taal gebaseerd op C99 met extensies Debugger als aparte applicatie
Design Dataflow Diagram
GPU-Programma Flow GPU Input Data Kernel 1 Input Data Start Kernels Tussen resultaat Kernel 2 Eind resultaat Eind resultaat CPU
Libraries: Thrust Geen diepe kennis van CUDA nodig Makkelijk om mee te beginnen Goede prototyping omgeving Veel algorithmen beschikbaar: Zoeken Reducties Sorteren Sommaties Transformaties
Zoek de 10 verschillen
Overlap Bepaling Sweep & Prune algoritme Geen malloc() in een kernel (CUDA 2.3) Versie 1: tellen malloc() (host-code) opslaan Versie 2: opslaan tot buffer vol is hervatten met nieuw buffer
Geheugen-gebruik lawine Brondata < 6 MB Resultaat < 1 MB Tussenresultaten > 60 GB 8.8 miljoen directe paden 49.9 miljoen reflectie paden
Hardware Threading Model Cores Hardware threads 8800 GTX 128 16 x 768 GTX 285 240 30 x 1024 = 30720 GTX 480 480 15 x 1536 = 23040 GTX 580 512 16 x 1536 = 24576 = 12288
Depth-first proces graaf 1 Proces Stappen 2 9 3 6 10 13 4 7 11 14 5 8 12 15
Development & Debugging CUDA Toolkit/nvcc Niet bijster snel (lees: erg traag) Niet 100% compatible met C++ standaard Makkelijk in te passen in workflow Visual Profiler Gedetailleerd overzicht van de GPU Combinatie met Thrust werkt minder lekker NSight Debugger Heel handig (als het werkt) Nog niet echt af
Beren op de weg Geen debugger (begin 2010) Driver stabiliteit Windows time-outs Systeem lock-ups Custom debugging
Resultaat Type Cores CPU 1 CPU Tijd (s) vs 1 core vs 16 cores 5246 1.0-16 328 15.9 1.0 GPU 240 67 78.2 4.8 GPU 480 34 154.2 9.6
Parallel Design Ga uit van de toekomst: N cores (N > 8) Integreer in een framework wat taakverdeling beheert Conversie van maximum gebruik (alle cores op 100%) naar minimum idle-time (geen core op 0%) Ontwerp software met behulp van component-gebaseerde taken Voordelen van deze approach Designen in componenten wordt gemeengoed Makkelijker testen Meer hergebruik Minder kennis nodig voor implementatie Kortere doorlooptijd per unit
OpenCL Parallel Framework Taak/dependency gebaseerd executie model Mogelijkheid om verschillende (soorten) devices aan te spreken Native function optie maakt integratie met bestaande code eenvoudig Beschikbaar voor GPU's, CPU's, CELL en mobiele/embedded platformen
Parallel Design voor GPU's Zoek naar data-parallellisme Voldoende rekenwerk per element Niet alle algoritmen lenen zich voor parallel gebruik Her-ontwerp sequentiele algoritmen GPU Kernels: Geheugen access patronen hebben veel impact Maak gebruik van on-chip geheugen waar mogelijk Vermijd divergerende code (condities) Gebruik standaard functies (hardware acceleratie)
Parallel Design Retro-actief
Parallel Design Pro-actief
Bedankt voor jullie aandacht! Zijn er nog vragen?
Afbeeldingen (1) Achtergronden: GPU, 2011 NVidia Corporation, http://www.gputechconf.com/page/home.html slide 2 Een nieuw speelveld : Beige PC: http://www.itnews.com.au/news/156771,intel-and-the-death-of-the-beige-box-pc.aspx Gaming PC: 2011 Dell, http://www.pclaunches.com/computers/alienware_area51_and_area51_alx_desktops_for_gaming.php ipad 2: 2011 Apple Corporation, http://www.playerzblog.com/5-best-ipad-2-games.html slide 3 De desktop super-computer : W.O.P.R.: 1983 MGM Studios Inc., http://media.screened.com/uploads/0/562/275564-wargames wopr.jpg K Computer: 2011 ITP Digital Ltd., http://www.itp.net/mobile/585186-japan-has-worlds-top-supercomputer Tesla Personal Supercomputer: 2011 NVidia Corporation, http://blog.loaz.com/media/blogs/timwang/first-personal-supercomputer-tesla-nvidia.jpg slide 4 De Revolutie : CPU Trends, 2009 Herb Sutter, http://www.gotw.ca/publications/concurrency-ddj.htm slide 5 Data-Explosie : Data Universe & Causes, 2009 EMC Corporation, http://www.techrepublic.com/blog/hiner/its-new-holy-grail-break-out-of-the-70-maintenance-loop/4283 slide 6 Rekenintensievere Processen : Speech Recognition: 1999 Oregon Graduate Institute of Science and Technology, http://www.cslu.ogi.edu/tutordemos/nnet_recog/recog.html 3D Analyse: 2011 Pitney Bowes Software Inc., http://www.pbinsight.com/products/location-intelligence/applications/mapping-analytical/mapinfo-professional/ Computer Vision: http://withfriendship.com/user/sathvi/computer-vision.php Flight Simulator 4: 1989 Microsoft Corporation, http://en.wikipedia.org/wiki/file:microsoft_flight_simulator_4_screenshot.png inavi: 2011 Thinkwaresys, http://www.navigadget.com/?s=inavi slide 7 Parallel = de nieuwe standaard : OpenCL Logo: 2009 Apple Corporation, http://www.geeks3d.com/public/common/opencl_logo.jpg OpenMP Logo: 2011 OpenMP Architecture Review Board, http://www2.imm.dtu.dk/~bd/scicomp/openmp_lg_transparent.gif CUDA Logo: 2011 NVidia Corporation Intel TBB: 2011 Intel Corporation slide 8 Noise Mapping op GPU's : Urban Strategy, 2010 TNO Bouw & Ondergrond, Milieu en Leefomgeving slide 10 Doelstelling: Interactiviteit : Urban Strategy, 2010 TNO Bouw & Ondergrond, Milieu en Leefomgeving
Afbeeldingen (2) slide 12 Analyse : Geluidspaden (boven), p. 46, Bijlage III, Behorende bij hoofdstuk 3 Weg van het Reken- en meetvoorschrift geluidhinder 2006 Geluidspaden (onder), p. 9, Bijlage 3 behorende bij artikel 8 van de Regeling omgevingslawaai slide 13 Platform Keuze : Windows logo: 2011 Microsoft Corporation NVidia CUDA logo: 2011 NVidia Corporation GeForce GTX 285: 2009 NVidia Corporation slide 15 Design Dataflow Diagram : Dataflow diagram: 2011 Organic Vectory B.V. slide 16 GPU-Programma Flow : GPU program flow: 2011 Organic Vectory B.V. slide 17 Libraries: Thrust : Thrust logo: http://code.google.com/p/thrust/ slide 19 Overlap Bepaling : Sweep & Prune: Copyright 2009, Václav Šmilauer, https://www.yade-dem.org/doc/formulation.html slide 21 Depth-first proces graaf : Proces Graaf: 2011 Organic Vectory B.V. slide 24 Beren op de weg : Beren op de weg: http://www.d66wijchen.nl/in-het-land-der-blinden/1922/ slide 25 Resultaat : Noise Map: 2011 Organic Vectory B.V. slide 27 OpenCL Parallel Framework : OpenCL Devices: 2010 Advanced Micro Device Inc., http://developer.amd.com/documentation/articles/pages/opencl-and-the-amd-app-sdk.aspx slide 29 Parallel Design Retro-actief : Gewone tractor: Diederik vd Krol, http://www.16kmclub.nl/ledenfotos/ledenfotos.htm High-speed tractor: http://www.impactlab.net/2010/07/03/top-10-photos-of-the-week-135/ slide 30 Parallel Design Pro-actief : F1 Wireframe: 2011 adriantnt, http://www.jpgwallpaper.com/wallpapers/cars_wallpapers/ferrari_f1_blueprint_46.html Ferrari F1: http://web.me.com/riffer87/jameys_sit_1./blog/entries/2008/9/2_a_passion_for_red.html