Software Engineering für moderne, parallele Plattformen. 9. GPGPUs: Grafikkarten als Parallelrechner. Dr. Victor Pankratius
|
|
- Meta Jaeger
- vor 7 Jahren
- Abrufe
Transkript
1 Software Engineering für moderne, parallele Plattformen 9. GPGPUs: Grafikkarten als Parallelrechner Dr. Victor Pankratius Dr. Victor Pankratius, Dipl.Inform. Frank Otto IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH)
2 Agenda GPGPU - Erläuterung Motivation Performanzaspekte Beispiele: NVidia GeForce Das CUDA-Programmiermodell Organisation und modell Ausgewählte Sprachkonstrukte (V 2, Fokus auf allgemeine Programmierung, keine Grafik) Ausblick 2
3 GPGPU Was ist das? GPGPU engl. Abkürzung für General purpose computation on Graphics Processor Units (GPUs) Idee: Nutzung von Grafikkarten als allgemeine Parallelrechner 3
4 Motivation Performanz bei Gleitkommaberechnungen Peak GFLOP/s GT200 GT400 GT400: GeForce GT480 GT200: GeForce GTX 280 G92: GeForce 9800 GTX G80: GeForce 8800 GTX G71: GeForce 7900 GTX G70: GeForce 7800 GTX NV40: GeForce 6800 Ultra NV35: GeForce FX 5950 Ultra NV30: GeForce FX G80 G80 Ultra G NV30 NV35 NV40 G70 G71 3GHz Intel Core2 Duo 3.2GHz Harpertown 0 Quelle: NVidia, Juni 2010 Jan Jun Apr Jun Mar Nov Mai 2007 Jun 2008 Jan
5 Gründe für Gleitkomma-Performanz Spezialisierung GPU vs. CPU Kontroll- Logik ALU ALU ALU ALU CPU geeignet für allgemeine Anwendungen Cache DRAM GPU gut geeignet für spezielle Anwendungen mit großen Datenmengen, Datenparallelität, SIMD- Arbeitsweise daher weniger komplexe Kontrollflusslogik nötig mit großem Verhältnis Latenzzeiten bei Zugriff auf Hauptspeicher werden durch viele Berechnungen, weniger durch Cache-Effekte amortisiert DRAM 5
6 Beispiel - Nvidia GeForce 8 Graphics Processing Unit (GPU) Prozessor, je nach Modell ~ MHz, 32-Bit FPU,1024 ~16 KB ~86,4 GB/s 128 Prozessoren insgesamt, jeder mit 96 Fäden in Hardware Insgesamt HW-Fäden! DRAM- auf Grafikkarte insg: ~ MB Neuere Entwicklung: GTX280 mit: 240 Prozessoren, 1GB RAM 6 6
7 Beispiel - Nvidia GeForce 400 Serie Graphics Processing Unit (GPU) GeForce GTX 465, 470, 480 Seit März/Mai 2010 auf dem Markt Kerne Grafik-Taktfrequenz MHz Prozessor-Taktfrequenz MHz Taktfrequenz MHz Standard-konfiguration MB GDDR Bit schnittstelle Bandbreite 102,6-177,4 GB/s Quelle: 7
8 Wieso hat man bis jetzt nicht Grafikkarten als Parallelrechner benutzt? Programmiermodelle waren traditionell speziell auf Grafikverarbeitung ausgerichtet Eingeschränkter Befehlssatz Hardware-Nähe bei Programmierung Allgemeine Programmierung der Grafikkarte eher Ausnahmefall Verbesserungen in den letzten Jahren bei Grafikkarten Mehr parallel arbeitende Einheiten Mehr höhere Bandbreite bei Hauptspeicherzugriff Neue Trends: Programmiermodelle werden erweitert und verallgemeinert Standard-PCs haben leistungsfähige Grafikkarten 8
9 CUDA: Compute Unified Device Architecture Von NVidia entwickelt Beinhaltet allgemeines Programmiermodell für Grafikkarten Momentan realisiert als Erweiterung der Programmiersprache C durch zusätzliche Sprachkonstrukte Grafikkarte wird als Co-Prozessor für datenparallele Verarbeitung verwendet Entwickler schreibt Programm, das datenparallele Teile auf der Grafikkarte (GPU) und den Rest auf dem Prozessor (CPU) ausgeführt Sprachkonstrukte kennzeichnen entsprechende Teile Integrierter CPU+GPU Quelltext Nvidia C Compiler GPU Assembly CUDA Treiber GPU CPU Quelltext Standard C Compiler CPU 9
10 Unterschiede zw. Fäden auf GPU vs. CPU Fäden auf GPU leichtgewichtig, wenig Mehraufwand bei Erstellung GPU braucht eine große Zahl von Fäden (tausende!), um effizient zu arbeiten Empfehlung für GeForce 8: Etwa 5000 (!) Fäden Multicore-CPUs im Vergleich dazu nur wenige Fäden Datenparallele Teile eines Programms werden auf der GPU als sog. Kernroutinen (engl. Kernels ) ausgeführt 10
11 Organisation von Fäden (1) Wirtsrechner (Host) Kern 1 GPU Gitter 1 Block (0, 0) Block (1, 0) Block (2, 0) Ein Kern wird mit Hilfe eines Gitters aus -Blöcken ausgeführt Dimensionen und Größe der Blöcke gleich Kern 2 Block (1, 1) (0, 0) (0, 1) (0, 2) (1, 0) (1, 1) (1, 2) Block (0, 1) Gitter 2 (2, 0) (2, 1) (2, 2) Block (1, 1) (3, 0) (3, 1) (3, 2) (4, 0) (4, 1) (4, 2) Block (2, 1) Ein -Block besteht aus einer (limitierten) Anzahl mehrerer Fäden, die miteinander kooperieren können Datenaustausch durch Zugriff auf schnellen gemeinsamen Fäden innerhalb eines Blocks können ihre Zugriffe synchronisieren Fäden aus verschiedenen Blöcken können nicht miteinander kooperieren 11
12 Organisation von Fäden (2) Wirtsrechner (Host) Kern 1 GPU Gitter 1 Block (0, 0) Block (0, 1) Block (1, 0) Block (1, 1) Block (2, 0) Block (2, 1) Fäden und Blöcke haben IDs Zur Vereinfachung der Adressierung: Zählung in verschiedenen Dimensionen möglich Block: 1D, 2D Gitter 2 : 1D, 2D, 3D Kern 2 Beispiel GeForce 8800 Block (1, 1) Max. Fäden/Block: 512 (0, 0) (1, 0) (2, 0) (3, 0) (4, 0) Max. Länge einer Dimension: (0, 1) (1, 1) (2, 1) (3, 1) (4, 1) (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) 12
13 modell (1) Gitter Block (0, 0) Gemeinsamer (0, 0) (1, 0) Lokaler Globaler mit konstanten Daten (Initialisierung durch Host) Textur- Lokaler Block (1, 0) Gemeinsamer (0, 0) (1, 0) Lokaler Lokaler Wirtsrechner (Host) Logische Sicht: Jeder kann folgende Zugriffe durchführen : Lesen+schreiben Lokaler : Lesen+schreiben Gemeinsamer im Block: Lesen+schreiben Globaler im Gitter: Lesen+schreiben mit konstanten Daten im Gitter: Nur lesen Textur- im Gitter: Nur lesen Wirtsrechner kann auf globalen, konstanten und Textur- lesend und schreibend zugreifen Dadurch Kommunikation zw. Wirtsrechner und GPU 13
14 modell (2) Gitter Block (0, 0) Gemeinsamer (0, 0) (1, 0) Lokaler Globaler Lokaler mit konstanten Daten (Initialisierung durch Host) Block (1, 0) Gemeinsamer (0, 0) (1, 0) Lokaler Lokaler Wirtsrechner (Host) cudamalloc() Alloziert im globalen bereich Benötigt zwei Parameter: cudafree() Adresse eines Zeigers zu Anfang der allozierten Daten Größe der Daten Gibt wieder frei Benötigt Zeiger Textur- 14
15 modell (3) Gitter Block (0, 0) Gemeinsamer (0, 0) (1, 0) Lokaler Globaler Lokaler mit konstanten Daten (Initialisierung durch Host) Block (1, 0) Gemeinsamer (0, 0) (1, 0) Lokaler Lokaler Wirtsrechner (Host) cudamemcpy() -Datentransfer Benötigt vier Parameter Zeiger auf Quelle, Ziel Anzahl zu kopierender Bytes Art des Transfers Host nach Host Host nach GPU GPU nach Host GPU nach GPU In CUDA 1.0 asynchron Textur- 15
16 modell (4) Physische Sicht Globaler, für konstante Daten und Textur- sind lediglich Regionen im RAM- der Grafikkarte Grafikkarte Prozessorgruppe N Prozessorgruppe 2 Prozessorgruppe 1 Gemeinsamer Prozessor 1 Prozessor 2 Prozessor M Instruktionseinheit Cache für konstante Daten Textur- Cache 16 RAM- auf Grafikkarte - Gobaler (hat keinen Cache!) - mit konstanten Daten - Texturspeicher
17 Spracherweiterungen (1) - Variablen Erweiterungen für Variablendeklarationen Ablageort device local int localvar; Lokaler device shared int sharedvar; Gemeinsamer device int globvar; Globaler device constant int constvar; auf GPU mit konstanten Daten Block Gitter Gitter Sichtbarkeit Lebensdauer Block Applikation Applikation Zeiger sind nur auf globalen erlaubt. 17
18 Spracherweiterungen (2) - Funktionen Erweiterungen für Funktionsdeklarationen Nur ausführbar auf Nur aufrufbar auf device float gpufunction() GPU GPU global void kernelfunction() GPU Wirtsrechner host float hostfunction() Wirtsrechner Wirtsrechner device und global-funktionen unterstützen keine Rekursion Deklaration statischer Variablen innerhalb der Funktion Variable Anzahl an Argumenten 18
19 Spracherweiterungen (3) Eine Funktion, die auf der GPU ausgeführt werden soll, erhält eine Ausführungskonfiguration global void kernelfunktion(params); //Aufruf kernelfunktion<<<gitterdim, BlockDim, BytesSharedMem>>>(params) Anzahl Blöcke im Gitter Anzahl Fäden in einem Block Die Konfigurationsparameter der Ausführungskonfiguration werden vor den Funktionsparametern evaluiert. Alle Parameter werden der GPU über den gemeinsamen übergeben. Größe des gemeinsamen s, der dynamisch pro Block alloziert werden soll 19
20 Spracherweiterungen (4) Atomare Operationen atomicadd(), Sub, Min, Max, Inc, Dec atomicand(), Or, Xor atomicexch(), atomiccas() //nur für globalen Synchronisation void synchthreads(); Ist Barriere, die (nur) für alle Fäden in einem Block gilt Sonst keine weiteren Synchronisationskonstrukte 20
21 Spracherweiterungen (5) Abfrage von IDs threadidx Variable enthält den Index eines s innerhalb eines Blocks blockidx Variable enthält Index eines Blocks innerhalb eines Gitters blockdim Abfrage der Dimensionen eines Blocks (z.b. blockdim.x) 21
22 Beispiel: Vektoraddition (1/2) Ausführung auf GPU //Berechne elementweise C = A + B //jeder führt Addition aus //Aufruf von Wirtsrechner, Ausführung auf GPU global void vecadd(float* A, float* B, float* C) { int i = threadidx.x + blockdim.x * blockidx.x; Index eines s #Fäden/Block Index eines Blocks C[i] = A[i] + B[i]; 22 }
23 Beispiel: Vektoraddition (2/2) int main() {... //alloziere & initialisiere für A, B auf Host float *h_a=...; *h_b=...; Ausführung auf Wirtsrechner (Host) //alloziere für A, B, C auf GPU float *d_a, *d_b, *d, C; cudamalloc( (void**) &d_a, N*sizeof(float)); cudamalloc( (void**) &d_b, N*sizeof(float)); cudamalloc( (void**) &d_c, N*sizeof(float)); //kopiere Inhalte von Host auf GPU cudamemcpy( d_a, h_a, N*sizeof(float), cudamemcpyhosttodevice) ); cudamemcpy( d_b, h_b, N*sizeof(float), cudamemcpyhosttodevice) ); 23 } //Vektoraddition für Vektorlänge N, mit N/256 Blöcken //und mit je 256 Fäden pro Block vecadd<<<n/256, 256>>>(d_A, d_b, d_c);
24 Anmerkungen CUDA-Konzept im Hinblick auf allgemeine Programmierung an vielen Stellen noch verbesserbar bzw. erweiterbar (z.b. bessere Transparenz der zugriffe, Parallelisierungskonstrukte auf höherer Abstraktionsebene, ) Vorgehen bei Fehlersuche CUDA-Übersetzer in Emulationsmodus versetzen Hardware + Fäden werden komplett auf CPU (sequenziell) emuliert Nutzung von Konsolenausgabe, setzen von Haltepunkten, usw. dann möglich FPUs halten sich bei Gleitkommaberechnungen nicht an den gängigen IEEE 754-Standard Numerische Ergebnisse können abweichen 24
25 CUDA 3.0 Einige Neuerungen und Verbesserungen Unterstützung von C++ Template- und Klassenvererbung Verbessert Programmierbarkeit / Produktivität API für Direct3D und OpenGL Verbesserung des Debuggers cuda-gdb Performanz: Bis zu Faktor 100 schneller Hardware-Unterstützung für Debugging in Anwendungen, welche die CUDA Driver API verwenden CUDA Memory Checker (neu) u.a. Erkennung von Out of Bounds Fehlern Unterstützung von OpenCL Mehr Informationen: 25
26 OpenCL Open Computing Language first open, royalty-free standard for general-purpose parallel programming of heterogeneous systems Teilmenge von ISO C99 mit einigen Erweiterungen Standard: Khronos Group Ziel: Effizienter und portabler Code für heterogene Architekturen, die gemischt aus Multikern-CPUs, GPUs, Cell oder z.b. DSP bestehen. Start: Juni 2008; aktuell: V. 1.1 (Juni 2010) IEEE 754 konform In Mac OS Snow Leopard bereits enthalten Kernroutinen (Kerlnel) -Konzept ähnlich zu CUDA 26
27 OpenCL Vergleich zu CUDA Konzepte ähnlich (z.b. Kernel-Konzept, vgl. Vektoraddition-Bsp.) modell Quelle: Synchronisation: Mit Barrieren, nur innerhalb einer workgroup 27
28 Ausblick Weitere Co-Prozessor-Ansätze Beispiel: Clearspeed Advance e720 Erweiterungskarte für PC ~96 GFLOPS 2GB RAM Bandbreiten: 192 GB/s zum internen, 8GB/s zum Rechner-Hauptspeicher Bit Genauigkeit Konform zu IEEE-Gleitkomma-Standard 28
Software Engineering für moderne parallele Plattformen 9. GPGPUs: Grafikkarten als Parallelrechner
Software Engineering für moderne parallele Plattformen 9. GPGPUs: Grafikkarten als Parallelrechner Dipl.-Inform. Korbinian Molitorisz M. Sc. Luis Manuel Carril Rodriguez KIT Universität des Landes Baden-Württemberg
MehrCUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg
CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche
MehrOpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer
OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell
MehrGrundlagen von CUDA, Sprachtypische Elemente
Grundlagen von CUDA, Sprachtypische Elemente Stefan Maskanitz 03.07.2009 CUDA Grundlagen 1 Übersicht 1. Einleitung 2. Spracheigenschaften a. s, Blocks und Grids b. Speicherorganistion c. Fehlerbehandlung
MehrCompute Unified Device Architecture CUDA
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:
MehrGPGPU-Programmierung
12 GPGPU-Programmierung 2013/04/25 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation (1) General Purpose Computing on
MehrMasterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Prof. Dr. Michael Bader Technische Universität München, Germany Outline Organisatorisches Entwicklung
MehrGPGPU-Programmierung
12 GPGPU-Programmierung 2014/04/29 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation (1) General Purpose Computing on
MehrPraxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern Institut für Betriebssysteme und Rechnerverbund TU Braunschweig 25.10., 26.10.
MehrGPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg
Einführung CUDA Friedrich-Alexander-Universität Erlangen-Nürnberg PrakParRA, 18.11.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
MehrEinführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg
GPU-Versuch andreas.schaefer@cs.fau.de Friedrich-Alexander-Universität Erlangen-Nürnberg Praktikum Parallele Rechnerarchitekturen SS2014 Outline 1 Einführung 2 Outlook 1 Einführung 2 Eine kurze Geschichte
MehrMasterpraktikum Scientific Computing
Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Technische Universität München, Germany Outline Entwicklung General Purpose GPU Programming (GPGPU)
MehrOpenCL. OpenCL. Boris Totev, Cornelius Knap
OpenCL OpenCL 1 OpenCL Gliederung Entstehungsgeschichte von OpenCL Was, warum und überhaupt wieso OpenCL CUDA, OpenGL und OpenCL GPUs OpenCL Objekte Work-Units OpenCL Adressbereiche OpenCL API Codebeispiel
MehrEine kurze Geschichte der Grafikkarten
3.1 Einführung Eine kurze Geschichte der Grafikkarten ursprünglich: Graphics Card steuert Monitor an Mitte 80er: Grafikkarten mit 2D-Beschleunigung angelehnt an Arcade- und Home-Computer frühe 90er: erste
MehrGPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12
12 GPGPU-Programming Constantin Timm Informatik 12 TU Dortmund 2012/04/09 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation
MehrGrafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: s.albers@wwu.de 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
MehrRST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck
RST-Labor WS06/07 GPGPU General Purpose Computation On Graphics Processing Units (Grafikkarten-Programmierung) Von: Marc Blunck Ablauf Einführung GPGPU Die GPU GPU Architektur Die Programmierung Programme
MehrGPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler
Friedrich-Alexander-Universität Erlangen-Nürnberg 05.10.2010 Outline 1 GPGPU-Architekturen 2 CUDA Programmiermodell 3 Beispielprogramm 4 Organiosatorisches Outlook 1 GPGPU-Architekturen 2 CUDA Programmiermodell
MehrGPU-Programmierung: OpenCL
Seminar: Multicore Programmierung Sommerstemester 2009 04.06.2009 Inhaltsverzeichnis 1 GPU-Programmierung von Grafikkarten von GPU-Computing 2 Architektur Spracheigenschaften Vergleich mit CUDA Beispiel
MehrGeneral Purpose Computation on GPUs
General Purpose Computation on GPUs Matthias Schneider, Robert Grimm Universität Erlangen-Nürnberg {matthias.schneider, robert.grimm}@informatik.stud.uni-erlangen.de M. Schneider, R. Grimm 1 Übersicht
MehrRheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit
Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer
Mehrtechnische universität dortmund Lehrstuhl für Hochfrequenztechnik Übertragungssysteme
Lehrstuhl für Hochfrequenztechnik GPU-beschleunigte numerische Simulation faseroptischer Übertragungssysteme, Marius Helf, Peter Krummrich Übersicht Motivation Split-Step p Fourier Methode Ansätze für
MehrCUDA. 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 Axel Jena, Jürgen Pröll Multi-Core Architectures and Programming Axel Jena, Jürgen Pröll 1 Warum Tesla? Traditionelle Graphikkarten Getrennte Prozessoren für Vertex- / Pixelberechnungen - Nachteil:
MehrCUDA Workshop. Ausblick. Daniel Tenbrinck
CUDA Workshop Ausblick Daniel Tenbrinck Computer Vision and Pattern Recognition Group Institut für Informatik Westfälische Wilhelms-Universität Münster 03.Juli 2009 Folie: 1 / 10 Daniel Tenbrinck CUDA
MehrProgrammierung von Graphikkarten
Programmierung von Graphikkarten Stefan Lang Interdisziplinäres Zentrum für Wissenschaftliches Rechnen Universität Heidelberg INF 368, Raum 532 D-69120 Heidelberg phone: 06221/54-8264 email: Stefan.Lang@iwr.uni-heidelberg.de
MehrYilmaz, Tolga MatNr: Mesaud, Elias MatNr:
Yilmaz, Tolga MatNr: 157317 Mesaud, Elias MatNr: 151386 1. Aufbau und Funktionsweise einer Grafikkarte 2. CPU vs. GPU 3. Software 4. Beispielprogramme Kompilierung und Vorführung 5. Wo wird Cuda heutzutage
MehrPhysikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)
Fakultätsname XYZ Fachrichtung XYZ Institutsname XYZ, Professur XYZ Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs) im Rahmen des Proseminars Technische Informatik Juni
MehrProseminar. GPU-Computing Cuda vs. OpenCL. SS 2013 Alexander Stepanov
Proseminar GPU-Computing Cuda vs. OpenCL SS 2013 Alexander Stepanov Inhaltsverzeichnis 1. Einführung: Warum GPU Computing? CPU vs. GPU GPU Architektur 2. CUDA Architektur Beispiel Matrix Multiplikation
MehrOpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
MehrMulticore-Architekturen
Universität Erlangen- Nürnberg Technische Universität München Universität Stuttgart Multicore-Architekturen Vortrag im Rahmen der Ferienakademie 2009 Kurs 1: Programmierkonzepte für Multi-Core Rechner
MehrProgrammierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de
> Programmierbeispiele und Implementierung Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de 2 > Übersicht > Matrix Vektor Multiplikation > Mandelbrotmenge / Apfelmännchen berechnen > Kantendetektion
MehrGPGPU mit NVIDIA CUDA
01.07.12 GPGPU mit NVIDIA CUDA General-Purpose on Formatvorlagecomputing des Graphics Processing durch Units Untertitelmasters mit KlickenCompute bearbeiten NVIDIA Unified Device Architecture Gliederung
MehrFerienakademie Erik Muttersbach
Ferienakademie 2009 - Erik Muttersbach 1. Einführung 2. Kernels, Threads, Blocks 3. CUDA Execution Model 4. Software Stack 5. Die CUDA Runtime API 6. Speichertypen/ Zugriff 7. Profiling und Optimierung
MehrLEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610
LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 Dominik Weinrich dominik.weinrich@tu-dresden.de Dresden, 30.11.2017 Gliederung Motivation Aufbau und Hardware
MehrGliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo
Gliederung Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo Was ist CUDA? Nvidia CUDA ist eine von NvidiaGPGPU-Technologie, die es Programmierern erlaubt, Programmteile
MehrGPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1
GPGPU Basiskonzepte von Marc Kirchhoff 29.05.2006 GPGPU Basiskonzepte 1 Inhalt Warum GPGPU Streams, Kernels und Prozessoren Datenstrukturen Algorithmen 29.05.2006 GPGPU Basiskonzepte 2 Warum GPGPU? Performance
MehrZum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE
Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE 754 Standard festgelegt. Es stehen sogenannte einfach
MehrSoftware Engineering für moderne, parallele Plattformen
Software Engineering für moderne, parallele Plattformen b. Ergänzungen zur Performanz Dr. Victor Pankratius Dr. Victor Pankratius IPD Lehrstuhl für Programmiersysteme-Tichy KIT die Kooperation von Forschungszentrum
MehrUntersuchung und Vorstellung moderner Grafikchiparchitekturen
Fakultät Informatik, Institut für Technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Untersuchung und Vorstellung moderner Grafikchiparchitekturen Hauptseminar Technische
MehrGPU Architektur CUDA - OpenCL
GPU Architektur und Programmiermöglichkeiten für GPGPU-Anwendungen kernel void matsq( global const float *mat, global float *out ) { int dim = get_global_size(0); //Matrix dimension int i = get_global_id(0);
MehrMotivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung
CUDA und Python Christian Wilms Integriertes Seminar Projekt Bildverarbeitung Universität Hamburg WiSe 2013/14 12. Dezember 2013 Christian CUDA und Python 1 Gliederung 1 Motivation 2 (GP)GPU 3 CUDA 4 Zusammenfassung
MehrComputergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-25 Kapitel XV: Parallele Algorithmen mit OpenCL 15.1 Parallele Programmierung Quellen: V.a. Wikipedia. Leistungsdaten unter Vorbehalt. Bitte
MehrParallel Computing in der industriellen Bildverarbeitung
SOLUTIONS FOR MACHINE VISION Parallel Computing in der industriellen Bildverarbeitung Dipl.-Inform. Alexander Piaseczki Research and Development Sirius Advanced Cybernetics GmbH Tools & Solutions für die
MehrParallele Programmierung mit GPUs
Parallele Programmierung mit GPUs Jutta Fitzek Vortrag im Rahmen des Moduls Parallele Programmierung, WS12/13, h_da Agenda GPUs: Historie GPU Programmierung Konzepte Codebeispiel Generelle Tipps & Tricks
MehrCell and Larrabee Microarchitecture
Cell and Larrabee Microarchitecture Benjamin Grund Dominik Wolfert Universität Erlangen-Nürnberg 1 Übersicht Einleitung Herkömmliche Prozessorarchitekturen Motivation für Entwicklung neuer Architekturen
MehrRefactoring the UrQMD Model for Many- Core Architectures
Refactoring the UrQMD Model for Many- Core Architectures Mathias Radtke Semiar: Softwaretechnologie (WS 2013/2014 Goethe-Universität Frankfurt Agenda: 1. UrQMD 2. CPU Vs. GPU 3. Von FORTRAN zu C++/OpenCL
Mehr> High-Level Programmierung heterogener paralleler Systeme
> High-Level Programmierung heterogener paralleler Systeme Projektseminar im SoSe 2012 Prof. Sergei Gorlatch, Michel Steuwer, Tim Humernbrum AG Parallele und Verteilte Systeme, Westfälische Wilhelms-Universität
MehrCompute Unified Device Architecture (CUDA)
Compute Unified Device Architecture (CUDA) Thomas Koller 12. Februar 2012 Zusammenfassung Diese Ausarbeitung beschäftigt sich mit der Programmierung von Grafikkarten mittels CUDA. Bei bestimmten Berechnungen
MehrGPGPU WITH OPENCL. Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried
GPGPU WITH OPENCL Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried INFRASTRUCTURE Enqueue interactive job srun --gres --pty bash Graphics cards available for tesla_k20,
MehrOpenCL. Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian
OpenCL Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian Hardware-Software-Co-Design Universität Erlangen-Nürnberg Apelt, Nicolas / Zöllner, Christian 1 Was ist OpenCL?
MehrArchitektur moderner GPUs. W. Sczygiol - M. Lötsch
Architektur moderner GPUs W. Sczygiol - M. Lötsch Überblick Chipentwicklung Aktuelle Designs Nvidia: NV40 (ATI: R420) Vertex-Shader Pixel-Shader Shader-Programmierung ROP - Antialiasing Ausblick Referenzen
MehrStream Processing und High- Level GPGPU Sprachen
Stream Processing und High- Level GPGPU Sprachen Seminar Programmierung von Grafikkarten Jens Breitbart Problem 5000% 4000% 3000% 2000% Rechenleistung: +71% pro Jahr Bandbreite: +25% pro Jahr Zugriffszeit:
MehrProzessor- und Rechnerarchitekturen (Master)
Prozessor- und Rechnerarchitekturen (Master) Themen am 28.06.17: Semesterrückblick, Terminplanung Ihrer Vorträge ProRecArc17_V10 Ulrich Schaarschmidt HS Düsseldorf, SS 2017 V1 (5.4.): Termine + mögliche
MehrANALYSE DER LATENZEN IM KOMMUNIKATIONSSTACK EINES PCIE-GEKOPPELTEN FPGA-BESCHLEUNIGERS. Sascha Kath
ANALYSE DER LATENZEN IM KOMMUNIKATIONSSTACK EINES PCIE-GEKOPPELTEN FPGA-BESCHLEUNIGERS Sascha Kath Dresden, Gliederung 1. Motivation & Zielstellung 2. Systembeschreibung 3. Implementierung und Messungen
MehrUniversität Karlsruhe (TH)
Universität Karlsruhe (TH) Forschungsuniversität gegründet 5 Software Engineering für moderne, parallele Plattformen b. Ergänzungen zur Performanz Dr. Victor Pankratius Agenda Das Roofline Model [Williams
MehrCPU, GPU und FPGA. CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017
CPU, GPU und FPGA, Bianca Forkel 21. November 2017 CPU, GPU und FPGA Inhalt CPU: Central Processing Unit GPU: Graphical Processing Unit FPGA: Field Programmable Gate Array 2 CPU Central Processing Unit
MehrMulti-Core Architectures and Programming. Bilateral Grid Filter
Multi-Core Architectures and Programming Bilateral Grid Filter - Parallelisierung mit CUDA - C. Kugler und E. Sert Inhalt Motivation Bilateral Filter (Exkurs) Bilateral Grid Filter Portierung auf Grafikkarte
MehrInteraktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL)
Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL) Verteidigung der Belegarbeit Andreas Stahl Zielstellung Globales Beleuchtungsverfahren für die
MehrVerteidigung der Bachelorarbeit, Willi Mentzel
Verteidigung der Bachelorarbeit, Willi Mentzel Motivation U.S. Energy Consumption Breakdown 3x Durchschnittliche Leistungsaufnahme 114 Millionen kw Hohes Optimierungspotential 2 Ziele für Energieoptimierung
MehrFPGA Beschleuniger. Your Name. Armin Jeyrani Mamegani Your Organization (Line #2)
FPGA Beschleuniger 15.12.2008 Armin Jeyrani Mamegani Your Name HAW Hamburg Your Title Department Your Organization Informatik (Line #1) Your Organization (Line #2) Einleitung Wiederholung aus AW1: Handy
MehrGrundlagen der Spieleprogrammierung
Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 8: Hardware Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch (Raytracing,
MehrParalleler Cuckoo-Filter. Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21.
Paralleler Cuckoo-Filter Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. November 2017 1 Paralleler Cuckoo-Filter Cuckoo-Hashtabelle Serieller Cuckoo-Filter
Mehr2.6 Graphikprozessoren
12 2.6 Graphikprozessoren Peter Marwedel Informatik 12 TU Dortmund 2012/04/16 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt.
Mehr2.6 Graphikprozessoren
12 2.6 Graphikprozessoren Peter Marwedel Informatik 12 TU Dortmund 2014 年 04 月 24 日 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt.
MehrGliederung. Problemstellung Motivation Multi-Agenten Simulation GPU Programmierung Stand der Technik Abgrenzung
Philipp Kayser Gliederung Problemstellung Motivation Multi-Agenten Simulation GPU Programmierung Stand der Technik Abgrenzung Multi-Agenten Simulation (MAS) simuliert durch eine Vielzahl von Agenten Die
MehrComputational Engineering I
DEPARTMENT INFORMATIK Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Martensstraße 3, 91058 Erlangen 25.01.2016 Probeklausur zu Computational Engineering
MehrParallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke,
Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 203-04-24 Was bisher geschah Host Device Platform Führt aus Führt aus Device Context Applikation Java, C++, Kernel (OpenCL C) Memory
MehrGerät Preis* CPU, VGA, HD, RAM Ausstattung
1 PC Ultra 559.- CPU: Intel Core Duo ab 3,0 GHz RAM: 8 GB HD: 128 GB SSD + 1 TB HDD VGA: GeForce GTX 750 2GB GDDR5 robuster Verarbeitung. Neben starken verfügt der PC Ultra über eine hochwertige Grafikkarte
MehrCell Broadband Engine & CellSs: ein Programmiermodel für den Cell Prozessor
Cell Broadband Engine & CellSs: ein Programmiermodel für den Cell Prozessor Hardware-Software-Co-Design Universität Erlangen-Nürnberg mark.duchon@mb.stud.uni-erlangen.de Ziegler_Matthias@web.de andreas.fall@googlemail.com
MehrOEM Hardware Nr. : PCI\VEN_10DE&DEV_05E2&SUBSYS_ &REV_A1
SiSoftware Sandra Grafikkarte Display : \\.\DISPLAY1 VGA-kompatibel : Nein Windowsgerätename : NVIDIA GeForce GTX 260 OEM Hardware Nr. : PCI\VEN_10DE&DEV_05E2&SUBSYS_00000000&REV_A1 OEM Gerätename : nvidia
MehrThema: Hardware-Shader
Seminar Grafikprogrammierung Thema: Hardware-Shader Christian Bauer 03.07.08 Überblick Entwicklung Die Shader im Detail Programmierung GPGPU Zusammenfassung & Ausblick 1/19 Entwicklung (1) Früher: Berechnung
MehrMESIF- (links) vs. MESI-Protokoll (rechts)
2.3 Beispiele für Multikern-Architekturen 2.3.1 Intel-Nehalem-Architektur MESIF- (links) vs. MESI-Protokoll (rechts) Annahme: Prozessor links unten und rechts oben haben Kopie MESIF : Nur Prozessor, dessen
MehrAutomatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern
Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern Bachelorarbeit Moritz Lüdecke 8. Juli 2014 INSTITUT FÜR TECHNISCHE INFORMATIK - LEHRSTUHL FÜR RECHNERARCHITEKTUR UND PARALLELVERARBEITUNG
MehrCUDA. 7. Vorlesung GPU Programmierung. Danke an Hendrik Lensch
CUDA 7. Vorlesung Thorsten Grosch Danke an Hendrik Lensch Parallele l Programmierung mit der GPU Bisher: GPU = OpenGL Pipeline mit Shadern Alles orientiert sich am Rendering Programme für Eckpunkte und
MehrVertiefungsrichtung Rechnerarchitektur
srichtung () ( für ) Prof. Dietmar Fey Ziele der srichtung RA Vertiefen des Verständnis vom Aufbau, Funktionsweise von Rechnern und Prozessoren Modellierung und Entwurf von Rechnern und Prozessoren ()
MehrPrinzipieller Aufbau der Architektur eines Multikern- Prozessors. Programmierung Standard-Mulitkern-Prozessoren mit OpenMP
3.1 Einführung Multi-Core-Architekturen Motivation Multikern-Prozessoren Prinzipieller Aufbau der Architektur eines Multikern- Prozessors Programmierung Standard-Mulitkern-Prozessoren mit OpenMP Programmierung
MehrBeispielvortrag: HPCG auf Intel Haswell-EP
Beispielvortrag: HPCG auf Intel Haswell-EP Johannes Hofmann 1 Seminarvortrag Architekturen von Multi- und Vielkern-Prozessoren Erlangen, 19.4.2016 1 Computer Architecture, University Erlangen-Nuremberg
MehrParallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke,
Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-04-17 Kapitel I OpenCL Einführung Allgemeines Open Compute Language: API für einheitliche parallele Programmierung heterogener
MehrCUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1
CUDA Jürgen Pröll Multi-Core Architectures and Programming Jürgen Pröll 1 Image-Resize: sequentiell resize() mit bilinearer Interpolation leicht zu parallelisieren, da einzelne Punkte voneinander unabhängig
MehrClearspeed. Matthias Kunst.
Clearspeed Matthias Kunst MatthiasKunst@gmx.de 1 Inhalt Einführung Struktur und Leistung Komponenten CSX600 Prozessorarchitektur Anwendungsbereich und Systemintegration Ausblick und Fazit 2 Einleitung
MehrEine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation
Eine kurze Einführung in Rechnerarchitektur und Programmierung von Hochleistungsrechnern als zentrales Werkzeug in der Simulation Dr. Jan Eitzinger Regionales Rechenzentrum (RRZE) der Universität Erlangen-Nürnberg
MehrOptimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen
Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen J. Treibig, S. Hausmann, U. Ruede 15.09.05 / ASIM 2005 - Erlangen Gliederung 1 Einleitung Motivation Grundlagen 2 Optimierungen
MehrSeminar: Multi-Core Architectures and Programming
Seminar: Multi-Core Architectures and Programming Parallelisierung des Viola-Jones Algorithmus auf Tilera Hardware-Software-Co-Design Universität Erlangen-Nürnberg 1 Übersicht Einleitung Erste Versuche
MehrGPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni
GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni 1 Ablauf GPU Programm Vertex und Fragment Shader 2 3 4 5 Image Processing 6 Ablauf GPU Programm Ablauf GPU Programm Vertex und Fragment
MehrWorld of Warcraft. Mindestvoraussetzungen
World of Warcraft Betriebssystem Windows XP / Windows Vista / Windows 7 Windows 7 / Windows 8 64-bit mit Windows 8 mit aktuellstem Servicepack aktuellstem Servicepack Prozessor Intel Core 2 Duo E6600 oder
MehrSoftwaretechnik 1 Übung 5
Universität Karlsruhe (TH) Forschungsuniversität gegründet 1825 Softwaretechnik 1 Übung 5 2.7.29 Aufgabe 1a) Zeichnen Sie die komplette Vererbungshierarchie der Klasse BufferedOutputStream als UML- Klassendiagramm.
MehrRechnerarchitektur (RA)
12 Rechnerarchitektur (RA) Sommersemester 2015 Foliensatz 6: Grafikprozessoren und GPGPU-Programmierung Michael Engel Informatik 12 michael.engel@tu-.. http://ls12-www.cs.tu-.de/daes/ Tel.: 0231 755 6121
MehrEin kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1
Ein kleiner Einblick in die Welt der Supercomputer Christian Krohn 07.12.2010 1 Vorschub: FLOPS Entwicklung der Supercomputer Funktionsweisen von Supercomputern Zukunftsvisionen 2 Ein Top10 Supercomputer
MehrRaytracing in GA mittels OpenACC. Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt
Raytracing in GA mittels OpenACC Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt michael.burger@sc.tu-darmstadt.de 05.11.12 FB Computer Science Scientific Computing Michael Burger 1 / 33 Agenda
MehrSS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION
SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION (until Geforce 7 Series) 1 ÜBERSICHT Grafikpipeline Verlagerung
MehrBereit für Multicore?
Bereit für Multicore? Prof. Dr. Walter F. Tichy IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) AMD Opteron 12 cores ~1.8
MehrSpezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe
Grafikprozessoren Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe 2D: Berechnung der Bildes aus einfachen Grafikprimitiven 3D: Bildaufbau aus räumlicher Beschreibung
MehrBetriebssysteme I WS 2017/18. Prof. Dr. Dirk Müller. 05a 64-/32-Bit-Architekturen
Betriebssysteme I 05a 64-/32-Bit-Architekturen Prof. Dr. Dirk Müller Begriff Eine n-bit-architektur ist eine Prozessorarchitektur mit einer Wortbreite von n Bit. meist Zweierpotenzen: 8-, 16-, 32-, 64-Bit-Architekturen
MehrHochleistungsrechnen in Darmstadt: Der Lichtenberg- Hochleistungsrechner. Dr. Andreas Wolf. Gruppenleiter Hochleistungsrechnen Hochschulrechenzentrum
Hochleistungsrechnen in Darmstadt: Der Lichtenberg- Hochleistungsrechner Dr. Andreas Wolf Gruppenleiter Hochleistungsrechnen Hochschulrechenzentrum Überblick Randbedingungen der HPC Beschaffung an der
MehrProdukte und Preise TERRA MOBILE
Produkte und Preise TERRA Art# CH1220459 CH1220564 CH1220550 CH1220574 CH1220539 Bezeichnung TERRA 1451 TERRA 1460 TERRA 1515 TERRA 1515 TERRA 1530 Intel Core i3-5020u Processor (3M Cache, 2.20 GHz) Intel
MehrViele Rechenaufgaben können auf verschiedene CPUs und/oder Maschinen aufgeteilt und verteilt werden, um die Leistung zu steigern
3.2 Heterogene Multi-Core-Architekturen: Cell BE Viele Rechenaufgaben können auf verschiedene CPUs und/oder Maschinen aufgeteilt und verteilt werden, um die Leistung zu steigern Herkömmliche CPUs und Techniken
Mehr