Compute Unified Device Architecture CUDA

Ähnliche Dokumente
Grundlagen von CUDA, Sprachtypische Elemente

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg

Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern

Masterpraktikum Scientific Computing

Compute Unified Device Architecture (CUDA)

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer

GPGPU-Programmierung

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg

Ferienakademie Erik Muttersbach

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Einführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg

Yilmaz, Tolga MatNr: Mesaud, Elias MatNr:

GPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12

General Purpose Computation on GPUs

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler

Eine kurze Geschichte der Grafikkarten

Software Engineering für moderne parallele Plattformen 9. GPGPUs: Grafikkarten als Parallelrechner

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung

Parallele Programmierung mit GPUs

Programmierbeispiele und Implementierung. Name: Michel Steuwer

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

GPU-Programmierung: OpenCL

Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo

Programmierung von Graphikkarten

CUDA. Axel Jena, Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Axel Jena, Jürgen Pröll 1

CUDA. (Compute Unified Device Architecture) Thomas Trost. May 31 th 2016

Grafikkarten-Architektur

GPGPU mit NVIDIA CUDA

GPGPU Programming nvidia CUDA vs. AMD/ATI Stream Computing. Seminar HWS 08/09 by Erich Marth

Parallelisierungspotentiale mit CUDA-Streams 387

OpenCL. OpenCL. Boris Totev, Cornelius Knap

Software Engineering für moderne, parallele Plattformen. 9. GPGPUs: Grafikkarten als Parallelrechner. Dr. Victor Pankratius

Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)

technische universität dortmund Lehrstuhl für Hochfrequenztechnik Übertragungssysteme

OpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer

Multicore-Architekturen

Thema: Hardware-Shader

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke,

OpenMP. Viktor Styrbul

Stream Processing und High- Level GPGPU Sprachen

Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation

GPU Architektur CUDA - OpenCL

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück

Master Thesis Titel der Arbeit

Mehrprozessorarchitekturen

CUDA. 7. Vorlesung GPU Programmierung. Danke an Hendrik Lensch

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

OpenCL. Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian

Parallelisierung der Matrixmultiplikation

GPU-Computing. Michael Vetter

Evaluation. Einleitung. Implementierung Integration. Zusammenfassung Ausblick

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

Grundlagen der OO- Programmierung in C#

27. Januar 2016

Multi- und Many-Core

GPU-Computing im Rahmen der Vorlesung Hochleistungsrechnen

ANALYSE DER LATENZEN IM KOMMUNIKATIONSSTACK EINES PCIE-GEKOPPELTEN FPGA-BESCHLEUNIGERS. Sascha Kath

Cell Broadband Engine & CellSs: ein Programmiermodel für den Cell Prozessor

> High-Level Programmierung heterogener paralleler Systeme

Dynamisches Speichermanagement

FPGA Beschleuniger. Your Name. Armin Jeyrani Mamegani Your Organization (Line #2)

PGI Accelerator Model

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Parallele Programmiermodelle

Programmierung mit C Zeiger

Paralleles Rechnen. (Architektur verteilter Systeme) von Thomas Offermann Philipp Tommek Dominik Pich

Prinzipieller Aufbau der Architektur eines Multikern- Prozessors. Programmierung Standard-Mulitkern-Prozessoren mit OpenMP

CPU-Caches. Christian Duße. Seminar Effiziente Programmierung in C

Current and Emerging Architectures Multi-core Architectures and Programming

RO-Tutorien 15 und 16

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL

Rechnerarchitektur (RA)

GPGPU WITH OPENCL. Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried

GPGPU-Architekturen CUDA CUDA Beispiel OpenCL OpenCL Beispiel. CUDA & OpenCL. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg

Adaption und Implementierung eines 3D-PIV Algorithmus auf massiv paralleler Hardware

Effizientes Memory Debugging in C/C++

1 Maschinenunabhängige Optimierungen. Maschinenunabhängige Optimierungen Wintersemester 2008/09 1 / 17

Hochschule Darmstadt

OpenMP am Beispiel der Matrizenmultiplikation

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010

U4-1 Aufgabe 3: einfache malloc-implementierung

Parallel Computing in der industriellen Bildverarbeitung

Lösung der zweidimensionalen Wirbeltransportgleichung auf NVIDIA Grafikkarten - Bachelorarbeit -

Programmierung und Angewandte Mathematik

1 Einleitung. 2 Parallelisierbarkeit von. Architektur

Seminar GPU-Programmierung/Parallelverarbeitung

Multi-Core Architectures and Programming. Bilateral Grid Filter

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL

MESIF- (links) vs. MESI-Protokoll (rechts)

Grundlagen von C# - 1

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke,

2. Programmierung in C

Prozessor- und Rechnerarchitekturen (Master)

GPGPUs am Jülich Supercomputing Centre

Profiling in Python. Seminar: Effiziente Programmierung. Jan Pohlmann. November Jan Pohlmann Profiling in Python November / 32

Transkript:

Compute Unified Device Architecture 06. Februar 2012 1 / 13

Gliederung 2 / 13

: Compute Unified Device Architecture entwickelt von Nvidia Corporation spezifiziert Software- und Hardwareeigenschaften Ziel: Grafikkarte als allgemeiner Parallelrechner nutzen engl. GPGPU: general-purpose computation on graphics processor units Gründe für diese Entwicklung wesentlich größere theoretische Rechenleistung als CPU Grafikkarten bis zu 512 Kerne (Nvidia), 2048 Kerne (AMD) aktuelle CPUs 2-8 Kerne wesentlich größere Speicherbandbreite (über 250GB/s) Probleme unterschiedliche e komplexer als bei CPU-Programmierung 3 / 13

Unterschiede zum Hauptprozessor unterschiedliche Aufgabengebiete CPU sequenzielle Berechnungen anfangs ein Kern, nun bis zu acht Kernen Leistungssteigerung hauptsächlich durch Taktsteigerungen große Kontrolllogik und Caches für höhere sequenzielle Geschwindigkeit GPU anfangs nur für Bildberechung Manycore-Konzept Bildberechungen lassen sich gut parallelisieren Leistungssteigerung durch mehr, dafür einfachere Kerne SIMD-Prinzip: durch Parallelisierung wenig Kontrolllogik und Caches notwendig 4 / 13

Sprache: C C mit -spezifischen Schlüsselwörtern Nvidia C-Compiler: nvcc Trennung zwischen Device-Code (GPU) und Host-Code (CPU) Device-Code: nvcc Host-Code: normaler Compiler, z.b. GCC auch zur Laufzeit Unterscheidung zwischen Host- und Device-Code asynchrone Ausführung möglich 5 / 13

CPU und GPU besitzen jeweils eigenen Speicher Programmierer muss Speicher selbstständig verwalten Daten werden nicht automatisch kopiert direkter Zugriff auf den Hauptspeicher ist nicht möglich : 1. Programmlogik weiterhin auf Host 2. GPU-Speicher allokieren 3. Daten vom Host zum Device kopieren 4. Berechnungen auf GPU 5. Ergebnis vom Device zum Host kopieren 6. allokierten Speicher wieder freigeben 6 / 13

Funktionen, die auf GPU ausgeführt werden: Kernel Aufruf: KernelFunction<<<dimGrid, dimblock>>>(...); : N Threads in einem Kernel Schlüsselwort: global wichtig: void Kernel können keine Werte zurückliefern Rückgabe erfolgt über Zurückkopieren des Speicherbereichs 1 global void VecAdd ( float * A, float * B, float * C) { 2 int i = threadidx. x; 3 C[i] = A[i] + B[i]; 4 } 5 6 int main () { 7... 8 VecAdd <<<1, N >>>(A, B, C); 9... 10 } 7 / 13

: Daten aufgeteilen auf jedem dieser Datenteile gleiche Berechung durchführen unterstützt Strukturierung in Blöcke und Threads Kernel wird als Grid ausgeführt Grid besteht aus 2D-Blöcken Blöcke bestehen aus 3D-Threads Kernelaufruf: KernelFunction<<< dimgrid, dimblock>>>(...); dimgrid, dimblock vom Typ dim3 1 dim3 dimgrid (2, 2, 1); 2 dim3 dimblock (4, 2, 2); 3 KernelFunction < < < dimgrid, dimblock > > >(...) ; 8 / 13

Speicherverwaltung Grafikkarte besitzt eigenen lokalen Speicher schneller Zugriff hohe Bandbreite (über 250GB/s) manuelle Verwaltung notwendig -Befehle: cudamalloc(void **devptr, size_t size); cudamemcpy(void *dst, const void *src, size_t count, enum cudamemcpykind kind); cudamemcpyhosttodevice, cudamemcpydevicetohost, cudamemcpyhosttohost, cudamemcpydevicetodevice cudafree(void *devptr); nur Barrieren- syncthreads(); 9 / 13

Spezifikation des Funktionsumfangs der Grafikchips Unterteilung in major revision und minor revision major revision: Architektur des Chips Geforce 8800 GTX (G80) bis Geforce GTX 285 (GT200b): 1.x seit Geforce GTX 480 (GF100) Fermi-Architektur : 2.x minor revision: kleinere Architekturverbesserungen 1024 anstatt 512 Threads pro Block Operationen auf Gleitkommazahl mit doppelter Genauigkeit atomare Funktionen im Speicher 10 / 13

Entwicklungswerkzeuge und Bibliotheken Entwicklungswerkzeuge Toolkit aktuell Version 4.1 unterstützt Linux, Mac und Windows enthält nvcc, cuda-dgb, cuda-memcheck, Visual Profiler und Bibliotheken für häufig verwendete Funktionen Nvidia Parallel Nsight Integration in Microsoft Visual Studio 2008 oder 2010 debugging, profiling und tracing Bibliotheken große Anzahl an unterschiedlichen Bibliotheken cufft: numerische Algorithmen cublas: lineare Algebra Thrust: Erstellen und Kopieren von einfachen Datenstrukturen Algorithmen: z.b. Sortierung, Transformation, Reduktion 11 / 13

Ziel von : Grafikkarte als allgemeiner Parallelrechner Nutzung der potentiell wesentlich größeren Rechenleistung Problem: CPU und GPU haben unterschiedliche e manuelle Speicherverwaltung eingeschränkte Kernel, Grid, Block, Threads spezifizieren die Hardwareeigenschaften unterschiedliche Entwicklungswerkzeuge und Bibliotheken 12 / 13

Vielen Dank für Ihre Aufmerksamkeit! 13 / 13