GPU Architektur CUDA - OpenCL

Größe: px
Ab Seite anzeigen:

Download "GPU Architektur CUDA - OpenCL"

Transkript

1 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); //index 1 int k = get_global_id(1); //index 2 float val = 0; for( int l = 0; l < dim; l++ ) val += mat[dim*i+l] * mat[dim*l+k]; } out[dim*i+k] = val; GPU Architektur CUDA - OpenCL 1

2 Inhalt Motivation GPU Architektur CUDA und OpenCL Grundlegendes Prozessmodell Parallelisierung Speicherhierarchie (Inter-Thread) Synchronisation und Kommunikation Einschub: Inline PTX Assembler bei CUDA Vergleich zwischen CUDA und OpenCL (Codebeispiele) 3

3 Motivation CPU vs. GPU Anzahl Cores Core i7-3930k: 6 HD 7970: 2048 GTX 680: 1536 FLOPS (single-precision) Core i7-3930k: 307 GFLOPS HD 7970: 3789 GFLOPS GTX 680: 3090 GFLOPS Pentium 4 3,2 GHz: 6,4 GFLOPS Speicherbandbreite DDR3-2133: 17 GB/s HD 7970: 264 GB/s 4

4 Wenn GPUs so schnell sind Warum ersetzen wir nicht unsere CPU durch eine GPU? Fundamental andere Aufgabenfelder GPUs sind gut im Number Crunching aber nicht so flexibel wie CPUs GPUs sind immer noch aufgabenspezifische Hardware Algorithmen müssen sich parallelisieren lassen Bei sequentiellen Alg. ist die CPU (viel) besser CPUs implementieren Virtualisierung, Virtuellen Speicher, Branch-Prediction usw. GPUs kommen mit Branches nicht gut klar 5

5 GPU Architektur Eine GPU ist ein massiver Parallelrechner Aktuelle Modelle: Über 2000 Kerne Aber: Kerne im Gegensatz zur CPU nicht vollwertig Teilen sich viele Einheiten, wie z.b. Caches Ist auf Stream-Verarbeitung ausgelegt Ideal: großer Datenstrom auf dem einfache, lineare Berechnungen parallel ausgeführt werden 8

6 Gliederung einer GPU Die Hardware lässt sich grob in 4 Bereiche einteilen: Hauptspeicher Rechenkerne Auch Shadereinheiten genannt Caches Aufgabenspezifische Hardware 9

7 Hauptspeicher Rechenkerne Caches Aufgabenspez. Hardware Gliederung einer GPU - Hauptspeicher Aufbewahrungsort für die zur Berechnung benötigten Daten Große Kapazität (mehrere Gigabyte) Große Bandbreite (z.b. HD 7970: 264 GB/s) Aber: Große Zugriffslatenz (teils mehrere 100 Zyklen) Nicht geeignet als temporärer Zwischenspeicher 10

8 Hauptspeicher Rechenkerne Caches Aufgabenspez. Hardware Gliederung einer GPU - Rechenkerne Aus dem Kontext der Computergrafik auch Shadereinheiten genannt Einfache, skalare Gleitkommaprozessoren Werden zu Gruppen zusammengefasst Teilen sich innerhalb einer Gruppe z.b. Integer, Branching oder Textureinheiten, häufig auch Register Im Gegensatz zu CPU keinesfalls ein vollwertiger Kern 11

9 Hauptspeicher Rechenkerne Caches Aufgabenspez. Hardware Gliederung einer GPU - Caches Im Gegensatz zur CPU extrem klein (im Kilobyte-Bereich) Anzahl viel kleiner als bei einer CPU Häufig kein L3- sondern nur ein geteilter L2-Cache, Kerne innerhalb einer Gruppe teilen sich einen L1- Cache 12

10 Hauptspeicher Rechenkerne Caches Aufgabenspez. Hardware Gliederung einer GPU Aufgabenspezifische Hardware Nicht programmierbar Übernehmen allgemeine Managementaufgaben oder vorgeschriebene Schritte der Grafikpipeline Cache-Controller, Bus-Interfaces, Texturfilter, Rasterisierung, etc. Besonderheit: (Thread-) Scheduling ebenfalls in Hardware implementiert Sehr schnell 13

11 Wie kann eine GPU Programmiert werden? Vorstellung zweier Technologien 14

12 NVIDIA CUDA (Compute Unified Device Architecture) Proprietärer Standard von NVIDIA Speziell für GPUs entwickelt Läuft nur auf NVIDIA Hardware CUDA SDK für Windows, Linux, Mac OS X Sprache: C for CUDA C mit speziellen Erweiterungen (neue Schlüsselwörter und Datentypen) Ist häufig minimal schneller als der OpenCL-Gegenpart da spezialisiert auf NVIDIA Hardware GPU-Unterstützung: ab der G8x-Serie, inklusive der Linien GeForce, Quadro und Tesla 15

13 Ursprünglich von Apple entwickelt OpenCL (Open Computing Language) Offener Standard, wird heute von der Khronos Group verwaltet (die auch den OpenGL Standard verwaltet) OpenCL ist nur ein Standard In der Regel erstellen die Hardware-Hersteller die konkrete Implementierung für ihre Geräte Ist nicht beschränkt auf GPUs, läuft auf allem sofern eine standardkonforme Implementierung existiert Implementierungen von AMD, NVIDIA, Sony(Cell), Intel (x86) etc. AMD und NVIDIA liefern ihre Implementierung mit dem Grafikkartentreiber aus (Windows: OpenCL.dll) Sprache: OpenCL C C mit speziellen Erweiterungen (neue Schlüsselwörter und Datentypen) GPU-Unterstützung: AMD: ab DirectX 11 Grafikkarten (HD 5xxx, ATI FirePro Vx800) NVIDIA: Nvidia Tesla C/D/S, Nvidia GeForce GTS/GT/GTX, Nvidia Ion, Nvidia Quadro FX/NVX/Plex 16

14 Prozessmodell Das einfachste Prozessmodell umfasst vier Schritte: 1. Daten vom Hauptspeicher des Host-Rechners in den Hauptspeicher der Grafikkarte kopiert 2. Die CPU beauftragt GPU mit der Berechnung 3. Die GPU führt das Programm parallel in CUDA Threads / Work Items aus 4. Das Resultat wird zur Weiterverarbeitung bzw. Auswertung aus dem Hauptspeicher der Grafikkarte zurück in den Hauptspeicher des Host-Rechners übertragen 17

15 Parallelisierung unter OpenCL und CUDA Problem wird in Teilprobleme aufgeteilt (Work Item, CUDA Thread) Aufteilung kann in 1, 2 oder 3 Dimensionen erfolgen Für jedes Teilproblem wird das selbe Programm bzw. der selbe Code bzw. der selbe Kernel ausgeführt Jeder Kernel wird in einem eigenen Thread ausgeführt Threads (bzw. Kernel) werden auf die (Shader-)Cores der GPU aufgeteilt Teilprobleme werden zu Gruppen zusammengefasst (Work Group, CUDA Thread Block) Jede Kernel-Instanz (Thread) kann hat Zugriff auf die Problemgröße, Gruppengröße und ihre Position innerhalb des Problems und innerhalb der Gruppe Thread-Instanz weis so auf welchen Daten sie operieren soll 18

16 Aufteilung in Teilprobleme und Teilproblemgruppen 1-Dimensionale Aufteilung: Problem Größe: Gruppe mit der ID 0 Größe: 4 Thread/Kernel mit der ID 11 Bei CUDA ist die ID relativ zur Gruppe und nicht zum globalen Problem, ID wäre dann 3* *Bei CUDA kann die globale ID ausgerechnet werden: blockidx.x*blockdim.x + threadidx.x 19

17 Aufteilung in Teilprobleme und Teilproblemgruppen 2-Dimensionale Aufteilung: Problemgröße: 8x8 Gruppengröße: 4x4 0,0 1,0 2,0 3,0 4,0 5,0 6,0 7,0 0,1 1,1 2,1 3,1 4,1 5,1 6,1 7,1 0,2 1,2 2,2 3,2 4,2 5,2 6,2 7,2 0,3 1,3 2,3 3,3 4,3 5,3 6,3 7,3 0,4 1,4 2,4 3,4 4,4 5,4 6,4 7,4 0,5 1,5 2,5 3,5 4,5 5,5 6,5 7,5 Thread/Kernel mit der ID 7,2 (CUDA: 3,2) Gruppen-Ids: 0,0 1,0 0,1 1,1 0,6 1,6 2,6 3,6 4,6 5,6 6,6 7,6 0,7 1,7 2,7 3,7 4,7 5,7 6,7 7,7 3-Dimensionale Aufteilung analog 20

18 Speicherhierarchie OpenCL CUDA Beschreibung Zugriff Typ. Größe host global constant local private host global constant shared registers Speicher des Host- Programms, also der normale Arbeitsspeicher des PCs Hauptspeicher der Grafikkarte Kann nur von Host-Programm geschrieben werden, für Kernel read-only Kleiner, schneller Speicher welcher für jede Thread- Gruppe existiert Noch kleinerer, noch schnellerer Speicher welcher für jeden Thread existiert Nur Host- Programm Jede Kernel- Instanz/ jeder Thread Jede Kernel- Instanz/jeder Thread Nur jeweils eine Thread-Gruppe Nur einzelner Thread Zugriffszeiten: global: ca Zyklen, local/shared: ~5 Zyklen 2-16 GB 1-8 GB 64 kb kb 16 kb Geschwindigkeit Größe 21

19 Speicherhierarchie (2) Host host Device (Grafikkarte) PCIe: 8-16 GB/s (global: bis 260 GB/s) global und constant Work-Group / CUDA Thread Block local / shared Work-Group / CUDA Thread Block local / shared Work-item / CUDA-Thread Work-item / CUDA-Thread Work-item / CUDA-Thread Work-item / CUDA-Thread Work-item / CUDA-Thread Work-item / CUDA-Thread private / registers private / registers private / registers private / registers private / registers private / registers 22

20 Warum diese Unterteilung in Threadgruppen und warum diese komplizierte Speicherhierarchie? (Geometrisch) nah beieinander liegende Threads sollen auf Daten mit nah beieinanderliegenden Speicheradressen operieren So wird Nutzen aus den kleinen Caches gezogen Speicherhierarchie minimiert den Einfluss der großen Latenz des Hauptspeichers Kommunikation zwischen Threads ist (innerhalb einer Gruppe) ohne Umwege über den Hauptspeicher möglich 23

21 Synchronisation und Kommunikation zwischen Threads Kommunikation Synchronisation Threads der selben Gruppe local/shared Speicher oder (viel langsamer) globaler Speicher CUDA: synchthreads() threadfence() OpenCL: barrier(clk_local_mem_fence) barrier(clk_global_mem_fence) Threads unterschiedlicher Gruppen Ausschließlich über globalen Speicher Nur über Host-Programm Kommunikation zwischen Threads schwierig Synchronisation fast nur innerhalb einer Threadgruppe möglich nur memory-barriers, keine critical sections, mutexes o. Ä.! Falls möglich vermeiden! 24

22 Wie können GPUs Millionen Threads handhaben? Threads sind nicht vollwertig Eingeschränkte Synchronisation und Kommunikation Keine Critical Sections usw. Thread Verwaltung und Scheduling ist in dedizierter Hardware implementiert Kontextwechsel sind Hardware-Implementiert und daher sehr schnell Häufig Kontextwechsel bei (GPU-)Speicher-Anfragen: Thread wird schlafen gelegt bis die Daten da sind Ein anderer Thread kann in der Zeit den Prozessor nutzen 25

23 Einschub: Inline PTX Assembler bei CUDA PTX (Parallel Thread Execution) Assembly ist CUDA s interne Assemblersprache Compiler (nvcc) erstellt PTX-Assembly Lässt sich durch Inline PTX-Assembly auch in CUDA C nutzen Syntax: asm("template-string" : "constraint"(output) : "constraint"(input)); Template-String enthält PTX-Befehl und Platzhalter für die Ein- bzw. Ausgabeparameter Constraints enthalten (im wesentlichen Größen-) Beschränkungen der Ein- bzw. Ausgabeparameter Gleichheitszeichen vor dem Constraint kennzeichnet geschriebene Parameter Durch Kommas abgetrennt können mehrere Ein- bzw. Ausgaben definiert werden Platzhalter für Ein- und Ausgaben können mehrfach verwendet werden Beispiel: int i; int j = 5; int k = 5; asm("add.s32 %0, %1, %2;" : "=r"(i) : "r"(j), "r"(k)); //i is now 10 26

24 CUDA: Inline PTX-Assembler (Forts.) Längeres Beispiel mit mehrfacher Nutzung der Platzhalter device int cube(int x) //calculate x^3 { int y; asm(".reg.u32 t1;" // temporal register t1 "mul.lo.u32 t1, %1, %1;" // t1 = x * x "mul.lo.u32 %0, t1, %1;" // y = t1 * x : "=r"(y) : "r"(x) ); // output : y, input : x return y; } Anweisungszeilen werden mittels der normalen C/C++ String-Syntax aneinander gereiht Demonstratives Beispiel return x*x*x; währe einfacher gewesen und erzeugt vermutlich besseren Code 27

25 Vergleich zwischen OpenCL und CUDA CUDA ist beschränkt auf GPGPU-Anwendungen auf Hardware von NVIDIA + Dokumentation, Tools und Framework greifen nahtlos ineinander + Gute Optimierungsmöglichkeiten, da Hardwarenah (z.b. Inline PTX) + Neue Möglichkeiten der Hardware zeitnah verwendbar (häufig neue CUDA-Version vor Veröffentlichung der zugehörigen Hardware) Abhängigkeit OpenCL ist ein offener und viel universeller einsetzbarer Standard für Berechnungen auf Parallelrechnern + Universalität + Unabhängigkeit ± Abstraktion der Hardware Performance geringer Lange Versionsintervalle Herstellereigene Erweiterungen sind zwar zeitnah verfügbar, aber Unabhängigkeit geht verloren 28

26 Vergleich der Performance zw. OpenCL und CUDA Messergebnisse basierend auf dem Paper A Performance Comparison of CUDA and OpenCL von K. Karimi, N. Dickson und F. Hamze Autoren nutzen eine wissenschaftliche Applikation (AQUA), welche ein Quanten-Spin-System simuliert Die existierende CUDA-Implementierung wurde nach OpenCL portiert Kernel: semi-automatische Generierung Host-Code: größtenteils neu geschrieben Unterschiedliche Laufzeiten resultieren im Wesentlichen aus dem zugrunde liegenden Framework Gemessen wurden: Laufzeit der Kernel (d.h. rein zur Berechnung benötigte Zeit) Zeit für Speichertransfers Laufzeit der GPU-Anwendung (d.h. im Wesentlichen die Summe der gerade genannten Punkte) Gesamtlaufzeit inklusive Setup, Erkennung der GPU, Kompilierung der Kernel, etc. 29

27 Vergleich der Performance zw. OpenCL und CUDA Von OpenCL zusätzlich benötigte Zeit in Prozent Zeit OpenCL Zeit CUDA 1 Qubits (Problemgröße) Kernellaufzeit Datentransfer GPU-Laufzeit Gesamtlaufzeit 8 13,8 22,2 13,7 45, ,9 53,3 22,7 38, , ,4 26, , ,7 50, ,6 37,7 62,5 67, ,8 36,7 17,9 21, ,7 36,3 12,7 15,7 Durchschnitt 27,5 40,5 27,4 37,9 30

28 Vergleich der Performance zw. OpenCL und CUDA Messungen nur bedingt aussagekräftig Nur eine spezielle Anwendung Veraltete CUDA-Version (2.3, Juli 2009) Veraltete Hardware (NVIDIA GTX 260) Heutiger Unterschied könnte anders Ausfallen (in beide Richtungen) Trotzdem: Eindeutiger Trend erkennbar OpenCL wird vermutlich immer etwas langsamer sein als CUDA 31

29 Danke für Ihre Aufmerksamkeit! Fragen? 33

30 Beispielprogramm: Matrix-Quadrierung einer quadratischen Matrix Normaler C-Code nach Schulmethode (mit 1-Dimensionalem Array implementiert): void matsq( int dim, const float *mat, float *out ) { for(int i = 0; i < dim; i++) { for(int k = 0; k < dim; k++) { float val = 0; for(int l = 0; l < dim; l++) val += mat[dim*i+l] * mat[dim*l+k]; out[dim*i+k] = val; } } } 2-Dimensionales Problem Äußere Schleifen iterieren über alle Einträge der Ergebnis-Matrix und berechnen das Element der Stelle i,k Berechnung des Eintrags i,k ist unabhängig von anderen Elementen der Zielmatrix Berechnung der Einträge kann massiv parallel erfolgen Kernel schreiben der genau einen Eintrag der Zielmatrix berechnet, und für alle Einträge der Zielmatrix einmal ausgeführt wird 34

31 Aufteilung der Matrix-Quadrierung Jeder Thread berechnet genau einen Eintrag der Ergebnis-Matrix 2-Dimensionales Problem Problemgröße: n, n bei einer n n Matrix Threads werden zu 2-Dimensionalen Gruppen hinzugefügt Aufteilung prinzipiell willkürlich, keine Anforderungen an lokalen Speicher, Synchronisation usw. Aber: Gruppen können nicht beliebig groß sein, es gibt eine Maximalausdehnung auf jeder Achse und eine maximale Gesamtanzahl an Threads Beispiel: 8x8 = 64 Threads pro Gruppe 35

32 Wie sieht der Kernel aus? OpenCL C: C for CUDA: kernel void matsq( global const float *mat, global float *out ) { int dim = get_global_size(0); //Matrix dimension int i = get_global_id(0); //index 1 int k = get_global_id(1); //index 2 float val = 0; for( int l = 0; l < dim; l++ ) val += mat[dim*i+l] * mat[dim*l+k]; global void matsq( const float *mat, float *out ) { int dim = griddim.x * blockdim.x; int i = blockidx.x * blockdim.x + threadidx.x; int k = blockidx.y * blockdim.x + threadidx.y; float val = 0; for( int l = 0; l < dim; l++ ) val += mat[dim*i+l] * mat[dim*l+k]; } out[dim*i+k] = val; } out[dim*i+k] = val; Keine äußeren for-schleifen mehr, da der Kernel von OpenCL bzw. CUDA für jeden Eintrag der Matrix ausgeführt wird. Vor der Ausführung muss im Host-Programm die Dimension und die Größe des Problems bzw. der Matrix festgelegt werden. 36

33 Wie sieht das Host-Programm aus? (C/C++, OpenCL) Initialisierung: 37

34 Wie sieht das Host-Programm aus? Initialisierung (2): (C/C++, OpenCL) 38

35 Wie sieht das Host-Programm aus? (C/C++, OpenCL) Ausführung und Aufräumen 39

36 Matrix-Quadrierung Vorführung Sourcecode: redpuma.funpic.de/opencl-helloworld.zip 40

37 Weitere Optimierungen Bisheriger Kernel ist naiv Mögliche Optimierungen: Benutzung des local/shared Speichers Benutzung von float8, float16 usw. Benutzung der Texture-Caches Beispielhaft optimierter Kernel ist ca. 6 mal schneller als naive Lösung Optimierter Kernel ist im Sourcecode enthalten, siehe matsq.cl 41

38 GPU-Aufbau (Beispiel: HD 7970) Compute Unit (CU) Raster-Back-Ends bestehend aus mehreren ROPs (Raster Operation Processor) 16 kb Instruction Cache 32 kb Scalar Data Cache (768 kb) Bild: Advanced Micro Devices, Inc. (AMD) 3 GB Main Memory 42

39 GPU-Aufbau (Beispiel: HD7970) Bilder: Advanced Micro Devices, Inc. (AMD) 43

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

OpenCL. 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

Mehr

Compute Unified Device Architecture CUDA

Compute 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:

Mehr

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

CUDA. 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

Mehr

GPGPU-Programmierung

GPGPU-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

Mehr

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Rheinisch-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

Mehr

OpenCL. OpenCL. Boris Totev, Cornelius Knap

OpenCL. 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

Mehr

Proseminar. GPU-Computing Cuda vs. OpenCL. SS 2013 Alexander Stepanov

Proseminar. 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

Mehr

RST-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 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

Mehr

Yilmaz, Tolga MatNr: Mesaud, Elias MatNr:

Yilmaz, 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

Mehr

General Purpose Computation on GPUs

General 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

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik 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

Mehr

Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)

Physikalische 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

Mehr

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

Gliederung. 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

Mehr

Grafikkarten-Architektur

Grafikkarten-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

Mehr

GPU-Programmierung: OpenCL

GPU-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

Mehr

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

Praxiseinheit: 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.

Mehr

Programmierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: michel.steuwer@wwu.de

Programmierbeispiele 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

Mehr

Parallel Computing in der industriellen Bildverarbeitung

Parallel 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

Mehr

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

GPGPU 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,

Mehr

Masterpraktikum Scientific Computing

Masterpraktikum 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

Mehr

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

GPGPU-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

Mehr

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

Einfü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

Mehr

Masterpraktikum Scientific Computing

Masterpraktikum 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)

Mehr

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

GPGPU-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

Mehr

Grundlagen von CUDA, Sprachtypische Elemente

Grundlagen 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

Mehr

Interaktive 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) Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL) Verteidigung der Belegarbeit Andreas Stahl Zielstellung Globales Beleuchtungsverfahren für die

Mehr

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

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

Mehr

LEISTUNGSVERGLEICH 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 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

Mehr

Multicore-Architekturen

Multicore-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

Mehr

Eine kurze Geschichte der Grafikkarten

Eine 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

Mehr

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

Untersuchung 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

Mehr

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

GPGPU-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

Mehr

Programmierung von Graphikkarten

Programmierung 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

Mehr

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. 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:

Mehr

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

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-05-29 Kapitel Parallelität [1]: Parallel Programming (Rauber, Rünger, 2007) [2]: Algorithms Sequential & Parallel A Unified Approach

Mehr

OpenCL Implementierung von OpenCV Funktionen

OpenCL Implementierung von OpenCV Funktionen Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen julian.mueller@e-technik.stud.uni-erlangen.de Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL

Mehr

Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern

Automatische 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

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche

Mehr

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

OpenCL. 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?

Mehr

CUDA. 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. 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

Mehr

Optimierungen der Lattice Boltzmann Methode auf x86-64 basierten Architekturen

Optimierungen 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

Mehr

OpenCL. 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. 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

Mehr

Neue Dual-CPU Server mit Intel Xeon Scalable Performance (Codename Purley/Skylake-SP)

Neue Dual-CPU Server mit Intel Xeon Scalable Performance (Codename Purley/Skylake-SP) Neue Dual-CPU Server mit Intel Xeon Scalable Performance (Codename Purley/Skylake-SP) @wefinet Werner Fischer, Thomas-Krenn.AG Webinar, 17. Oktober 2017 Intel Xeon Scalable Performance _ Das ist NEU: Neue

Mehr

Beispielvortrag: HPCG auf Intel Haswell-EP

Beispielvortrag: 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

Mehr

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

FPGA 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

Mehr

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Christian Siegl 1, Hannes G. Hofmann 1, Benjamin Keck 1, Marcus Prümmer 1, Joachim Hornegger 1,2 1 Lehrstuhl für Mustererkennung,

Mehr

Thema: Hardware-Shader

Thema: 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

Mehr

Cell and Larrabee Microarchitecture

Cell 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

Mehr

PGI Accelerator Model

PGI Accelerator Model PGI Accelerator Model Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig Hardware-Software-Co-Design Universität Erlangen-Nürnberg Philip Höhlein, Nils Werner 1 Übersicht Motivation

Mehr

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten

PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten Masterarbeit @ PRIP-Preis Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten Michael Rauter Pattern Recognition and Image Processing Group Institute of Computer Aided

Mehr

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

Parallele 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

Mehr

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Christian Siegl 1, Hannes G. Hofmann 1, Benjamin Keck 1, Marcus Prümmer 1, Joachim Hornegger 1,2 1 Lehrstuhl für Mustererkennung,

Mehr

> High-Level Programmierung heterogener paralleler Systeme

> 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

Mehr

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

Motivation (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

Mehr

Parallele Programmierung mit GPUs

Parallele 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

Mehr

GPGPU mit NVIDIA CUDA

GPGPU 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

Mehr

Stream Processing und High- Level GPGPU Sprachen

Stream 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:

Mehr

Zum 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 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

Mehr

OpenCL (Cell B. E., PS3) Multicore Architectures and Programming

OpenCL (Cell B. E., PS3) Multicore Architectures and Programming OpenCL (Cell B. E., PS3) Multicore Architectures and Programming Apelt, Nicolas Zoellner, Christian Hardware-Software-Co-Design Universität Erlangen-Nürnberg Apelt, Nicolas Zoellner, Christian 1 Übersicht

Mehr

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Parallel Architekturen Flynn'sche Klassifizierung: SISD: single Instruction, single Data Klassisches von-neumann sequentielles

Mehr

Multi- und Many-Core

Multi- und Many-Core Multi- und Many-Core Benjamin Warnke Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2016-12-15 Benjamin

Mehr

Multicore und mobile, stromsparende Anwendungen ein Widerspruch? Hubert Hafner Product Marketing

Multicore und mobile, stromsparende Anwendungen ein Widerspruch? Hubert Hafner Product Marketing Multicore und mobile, stromsparende Anwendungen ein Widerspruch? Hubert Hafner Product Marketing Winterthur, September 2010 Agenda Über Kontron Anforderungen der mobilen Welt Aktuellen Atom -Techniken

Mehr

Architektur von Parallelrechnern 50

Architektur von Parallelrechnern 50 Architektur von Parallelrechnern 50 Rechenintensive parallele Anwendungen können nicht sinnvoll ohne Kenntnis der zugrundeliegenden Architektur erstellt werden. Deswegen ist die Wahl einer geeigneten Architektur

Mehr

Raytracing 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 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

Mehr

CPU, GPU und FPGA. CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017

CPU, 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

Mehr

GPUs. Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg

GPUs. Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg GPUs Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Vorgelegt von: Johannes Coym E-Mail-Adresse: 4coym@informatik.uni-hamburg.de

Mehr

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

Cell 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

Mehr

2 Rechnerarchitekturen

2 Rechnerarchitekturen 2 Rechnerarchitekturen Rechnerarchitekturen Flynns Klassifikation Flynnsche Klassifikation (Flynn sche Taxonomie) 1966 entwickelt, einfaches Modell, bis heute genutzt Beschränkung der Beschreibung auf

Mehr

Seminar Multicore-Programmierung

Seminar Multicore-Programmierung Multicore- und GPGPU-Architekturen Fakultät für Informatik und Mathematik Universität Passau 04. November 2010 APUs / 1 / 39 Inhaltsverzeichnis I APUs / APUs / 2 / 39 Inhaltsverzeichnis II APUs / 3 / 39

Mehr

1 Einleitung. 2 Parallelisierbarkeit von. Architektur

1 Einleitung. 2 Parallelisierbarkeit von. Architektur Beschleunigung von Aufgaben der parallelen Bildverarbeitung durch Benutzung von NVIDIA-Grafikkarten mit der Compute Unified Device Architecture (CUDA) Roman Glebov roman@glebov.de Abstract Diese Arbeit

Mehr

Mehrprozessorarchitekturen

Mehrprozessorarchitekturen Mehrprozessorarchitekturen (SMP, UMA/NUMA, Cluster) Arian Bär 12.07.2004 12.07.2004 Arian Bär 1 Gliederung 1. Einleitung 2. Symmetrische Multiprozessoren (SMP) Allgemeines Architektur 3. Speicherarchitekturen

Mehr

Prozessor- und Rechnerarchitekturen (Master)

Prozessor- 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

Mehr

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

Software Engineering für moderne, parallele Plattformen. 9. GPGPUs: Grafikkarten als Parallelrechner. Dr. Victor Pankratius 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

Mehr

Cache-Kohärenz und -Konsistenz. Betreuer: Prof. Brüning Veton Kajtazi Mat.-Nr.: Universität Heidelberg

Cache-Kohärenz und -Konsistenz. Betreuer: Prof. Brüning Veton Kajtazi Mat.-Nr.: Universität Heidelberg Cache-Kohärenz und -Konsistenz Betreuer: Prof. Brüning Veton Kajtazi Mat.-Nr.: 3220501 Universität Heidelberg Inhaltsverzeichnis Wozu Caches? Unterschied Kohärenz und Konsistenz MESI-Protokoll Fazit 2

Mehr

Digital Image Interpolation with CUDA

Digital Image Interpolation with CUDA Digital Image Interpolation with CUDA Matthias Schwarz & Martin Rustler Hardware-Software-Co-Design Universität Erlangen-Nürnberg matthias.schwarz@e-technik.stud.uni-erlangen.de martin.rustler@e-technik.stud.uni-erlangen.de

Mehr

M5000 einfach ablösen durch T4/T5 LDoms und Solaris Zonen

M5000 einfach ablösen durch T4/T5 LDoms und Solaris Zonen M5000 einfach ablösen durch T4/T5 LDoms und Solaris Zonen Marcel Hofstetter JomaSoft GmbH St. Gallen / Schweiz Schlüsselworte M5000, T4, T5, LDoms, Oracle Solaris 11, Solaris Zonen, VDCF Einleitung Die

Mehr

Computergrundlagen Moderne Rechnerarchitekturen

Computergrundlagen Moderne Rechnerarchitekturen Aufbau eines modernen Computers Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart DDR3- Speicher Prozessor Prozessor PEG Graphikkarte(n) weitere

Mehr

CUDA by Example. Paralleles Rechnen auf der Grafikkarte. Leipzig, Paul Jähne SethosII

CUDA by Example. Paralleles Rechnen auf der Grafikkarte. Leipzig, Paul Jähne SethosII CUDA by Example Paralleles Rechnen auf der Grafikkarte Leipzig, 31.03.2017 Paul Jähne SethosII 1 Warum? 2 Aufbau CPU geringe Latenz große Zwischenspeicher besser für serielle Ausführung GPU hohe Rechenleistung

Mehr

Cache-Speicher. Design Digitaler Systeme. Prof. Dr.-Ing. Rainer Bermbach

Cache-Speicher. Design Digitaler Systeme. Prof. Dr.-Ing. Rainer Bermbach Cache-Speicher Design Digitaler Systeme Prof. Dr.-Ing. Rainer Bermbach Übersicht Cache-Speicher Warum Cache-Speicher? Cache-Strukturen Aufbau und Organisation von Caches Cache-Architekturen Cache-Strategien

Mehr

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

CPU-Caches. Christian Duße. Seminar Effiziente Programmierung in C CPU-Caches Christian Duße Seminar Effiziente Programmierung in C Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

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

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010 PhysX Evaluation Softwarepraktikum Computergraphik Daniel Brock, Robert Kreuzer, Simon Kufner 5. Juli 2010 Daniel Brock, Robert Kreuzer, Simon Kufner () PhysX Evaluation 5. Juli 2010 1 / 17 1 Aufgabenstellung

Mehr

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P SoSe 2014 Konzepte und Methoden der Systemsoftware Universität Paderborn Fachgebiet Rechnernetze Präsenzübung 3(Musterlösung) 2014-05-05 bis 2014-05-09 Aufgabe 1: Polling vs Interrupts (a) Erläutern Sie

Mehr

Hochleistungsrechnen auf dem PC

Hochleistungsrechnen auf dem PC Hochleistungsrechnen auf dem PC Steffen Börm Christian-Albrechts-Universität zu Kiel Ringvorlesung Informatik, 26. Juni 2014 S. Börm (CAU Kiel) Hochleistungsrechnen auf dem PC 26. Juni 2014 1 / 33 Übersicht

Mehr

Architektur moderner GPUs. W. Sczygiol - M. Lötsch

Architektur 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

Mehr

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

Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation Christoph Winter Fakultät für Informatik und Mathematik Ostbayerische Technische Hochschule Regensburg 93049 Regensburg

Mehr

Grundlagen der Spieleprogrammierung

Grundlagen 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,

Mehr

Multi-Core Architectures and Programming. Bilateral Grid Filter

Multi-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

Mehr

Ein Unternehmen der Firmengruppe:

Ein Unternehmen der Firmengruppe: Ein Unternehmen der Firmengruppe: IT unter einem Dach Mit diesem Leitgedanken haben sich unsere Unternehmen zusammengeschlossen, um ihren Kunden ganzheitliche IT-Lösungen anbieten zu können. Die Unternehmensgruppe

Mehr

OpenMP. Viktor Styrbul

OpenMP. Viktor Styrbul OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was

Mehr

Systeme 1: Architektur

Systeme 1: Architektur slide 1 Vorlesung Systeme 1: Architektur Prof. Dr. Ulrich Ultes-Nitsche Forschungsgruppe Departement für Informatik Universität Freiburg slide 2 Prüfung 18. Februar 2004 8h00-11h40 13h00-18h20 20 Minuten

Mehr

Hochleistungsrechnen in Darmstadt: Der Lichtenberg- Hochleistungsrechner. Dr. Andreas Wolf. Gruppenleiter Hochleistungsrechnen Hochschulrechenzentrum

Hochleistungsrechnen 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

Mehr

Master-Thread führt Programm aus, bis durch die Direktive

Master-Thread führt Programm aus, bis durch die Direktive OpenMP seit 1998 Standard (www.openmp.org) für die Shared-Memory Programmierung; (Prä-)Compiler für viele Systeme kommerziell oder frei (z.b. Omni von phase.hpcc.jp/omni) verfügbar Idee: automatische Generierung

Mehr

Clearspeed. Matthias Kunst.

Clearspeed. 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

Mehr

2.6 Graphikprozessoren

2.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.

Mehr

Ferienakademie Erik Muttersbach

Ferienakademie 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

Mehr

Elektrohandel. Dirk ter Meer. Gutes muss nicht Teuer sein!!

Elektrohandel. Dirk ter Meer. Gutes muss nicht Teuer sein!! Kingston HyperX 4GB 1600MHZ DDR3 O-ECC Kingston 4GB 1600MHz DDR3 Kit, HyperX. Memory: DDR3, 240-pin DIMM, PC/server, 1 x 4096, DIMM Hersteller : Kingston HyperX Herstellerartikelnr. : KHX1600C9D3/4G EA

Mehr

Compute Unified Device Architecture (CUDA)

Compute 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

Mehr

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D. Blatt Nr. 07 Übung zur Vorlesung Einsatz und Realisierung von Datenbanksystemen im SoSe16 Moritz Kaufmann

Mehr

Cuda Speicherhierarchie

Cuda Speicherhierarchie Cuda Speicherhierarchie Threads eines Blocks können über Shared Memory kommunizieren Der Shared Memory ist klein aber sehr schnell Alle Threads können nur über Global Memory kommunizieren Der Global Memory

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 6 Cache-freundliche Programmierung (1) Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät Quadratische Matrizen Musterlösung

Mehr