CUDA. 7. Vorlesung GPU Programmierung. Danke an Hendrik Lensch
|
|
- Thilo Winkler
- vor 7 Jahren
- Abrufe
Transkript
1 CUDA 7. Vorlesung Thorsten Grosch Danke an Hendrik Lensch
2 Parallele l Programmierung mit der GPU Bisher: GPU = OpenGL Pipeline mit Shadern Alles orientiert sich am Rendering Programme für Eckpunkte und Pixel Oft muß man um die Ecke denken Jetzt: t Die GPU ist ein schneller Parallelrechner l für beliebige bi Aufgaben Verteile die Aufgabe in Form von parallelen s an die GPU Die Programmierung gist dabei ähnlich zur Programmierung g der CPU CUDA OpenCL 2
3 Literatur Die Vorlesung ist an folgendem Buch orientiert: J. Sanders, E. Kandrot: CUDA by Example, NVIDIA Mehrfach vorhanden in Bibliothek Beispielprogramme verfügbar Gut zum Einstieg Fortgeschrittene Programmierung D. Kirk: CUDA Programming Guide Programmierung mit OpenCL ist ähnlich 3
4 Massiv Parallele l Berechnungen PCIe CPU (4 cores) GPU (480 cores) 4
5 Warum Parallele l Prozessoren GPU = günstiger Parallelrechner in jedem handelsüblichen PC 200 GFLOPS/Sek GFLOPS/Sek. 5
6 Warum Parallele l Prozessoren Speicherbandbreite 40 GB/Sek. 170 GB/Sek. 6
7 Amdahls Gesetz Serieller Teil α des Algorithmus,,paralleler Anteil 1-α Erwarteter Speedup (Beschleunigung) S bei P Prozessoren falls α=0 perfekt parallelisierbar Smax = P falls α=1 S = 1 S = α + 1 ( 1 α) / P 7
8 CUDA Programmiermodell
9 GF GeForce 8800 Host Input Assembler 16 highly threaded SM s, >128 FPU s, 367 GFLOPS, 768 MB DRAM, 86.4 GB/S Mem BW, 4GB/S BW to CPU Execution Manager Texture Texture Texture Texture Texture Texture Texture Texture Load/store Load/store Load/store Load/store Load/store Load/store Global Memory 9
10 Abkürzungen SPA (Device) SM SP Streaming Processor Array (variable across GeForce 8-series) Streaming Multiprocessor (8 SP for 8800, 15 SP for GTX480) Multi-threaded processor core Fundamental processing unit for CUDA thread block Streaming Processor Scalar ALU for a single CUDA thread 10
11 Streaming Processor Array Host Input Assembler Execution Manager SPA Texture Texture Texture Texture Texture Texture Texture Texture Load/store Load/store Load/store Load/store Load/store Load/store Global Memory 11
12 Streaming Multiprocessor Host Input Assembler Execution Manager SM Texture Texture Texture Texture Texture Texture Texture Texture Load/store Load/store Load/store Load/store Load/store Load/store Global Memory 12
13 Streaming Processor Host Input Assembler SP Execution Manager Texture Texture Texture Texture Texture Texture Texture Texture Load/store Load/store Load/store Load/store Load/store Load/store Global Memory 13
14 Programmiermodell Der Programmierer schreibt eine Kernel Funktion (in C) für die durchzuführende Aufgabe Kernel = (kleine) Funktion, die von allen s parallel ausgeführt wird Host Kernel 1 Kernel 2 Device Grid 1 Block (0, 0) Block (1, 0) Block (2, 0) Block Block Block (0, 1) (1, 1) (2, 1) Grid 2 Host = CPU Device = GPU Block (1, 1) (0, 0) (1, 0) (2, 0) (3, 0) (4, 0) (0, 1) (1, 1) (2, 1) (3, 1) (4, 1) (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) 14
15 Programmiermodell Host Device Aufteilung der s in einem 2-Level Gitter Kernel 1 Grid 1 Block (0, 0) Block (1, 0) Block (2, 0) Auf jd jedem innerhalb des Gitters läuft die gleiche Kernel Funktion Grid Gitter, aufgeteilt in Blöcke Block Aufgeteilt in s Kernel 2 Block (1, 1) (0, 0) (1, 0) Block Block Block (0, 1) (1, 1) (2, 1) Grid 2 (2, 0) (3, 0) (4, 0) (0, 1) (1, 1) (2, 1) (3, 1) (4, 1) Viele Probleme haben eine natürliche Blockstruktur (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) 15
16 Gid Grid und dblocks Die Kernel Funktion wird in einem Gitter (grid) von thread blocks ausgeführt Alle threads teilen sich dabei den gleichen Adressraum Host Kernel 1 Device Grid 1 Block (0, 0) Block (1, 0) Block (2, 0) Block Block Block (0, 1) (1, 1) (2, 1) s innerhalb eines Blocks können kooperieren: Synchronisation ist möglich Benutzung von sehr schnellem, gemeinsamem Speicher ist möglich Kernel 2 Block (1, 1) (0, 0) (1, 0) Grid 2 (2, 0) (3, 0) (4, 0) Zwei s aus (0, 1) (1, 1) (2, 1) (3, 1) verschiedenen Blöcken können nicht kooperieren (!) (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) (4, 1) 16
17 Blocks und s 17
18 Block und Id s und Blocks haben IDs Jeder kennt seine Position auf welche Daten muss ich zugreifen Block ID: 1D oder 2D ID: 1D, 2D, oder 3D Device Grid 1 Block Block Block (0, 0) (1, 0) (2, 0) Block Block Block (0, 1) (1, 1) (2, 1) Vereinfachter Speicherzugriff auf mehrdimensionale Daten, z.b. Bildverarbeitung Lösen von Differentialgleichungen Block (1, 1) (0, 0) (1, 0) (2, 0) (3, 0) (4, 0) (0, 1) (1, 1) (2, 1) (3, 1) (4, 1) (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) 18
19 Speichertypen Auf der GPU gibt es verschiedene Arten von Speicher die sich unterscheiden in Grösse und Geschwindigkeit Grid Block (0, 0) Block (1, 0) Shared Memory Shared Memory Registers Registers Registers Registers (0, 0) (1, 0) (0, 0) (1, 0) Bei der Implementierung sollten häufig benötigte Daten immer im schnellsten Speicher liegen Host Local Memory Global Memory Local Memory Local Memory Local Memory Die Geschwindigkeit einer GPU Implementierung hängt oft vom Speicherlayout ab Constant t Memory Texture Memory 19
20 Speichertypen Global Memory Read-write per-grid Mehrere Hundert MB Sehr langsam (600 clocks) g ( ) Texture Memory Read-only per-grid Mehrere Hundert MB Langsamer erster Speicherzugriff, aber mit filtering, clamping Constant Memory Read-only per-grid 64 KB Langsamer erster Speicherzugriff, aber mit Kann schneller als Global l Memory sein Shared! Memory Read-write per-block 16 KB per block Sehr schnell (4 clocks) Se sc e ( coc s) Local Memory Read-write per thread Sehr langsam (ähnlich zu Global Memory) Registers Read-write per thread Sehr schnell (1 clock) Die CPU kann lesen/schreiben in Global Memory Texture Memory Constant Memory 20
21 CUDA Programmiermodell Die GPU wird als Berechnungseinheit betrachtet: Coprozessor für die CPU (Host) Eigener Speicher (DRAM, device memory) Bearbeitet viele s parallel Alle (Daten-) parallelen Anteile der Anwendung werden auf der GPU ausgeführt in Form von Kernels auf vielen, parallelen s Unterschiede zwischen GPU und CPU s GPU threads sind extrem leichtgewichtig g Können schnell erzeugt werden GPU braucht e von s, um effizient zu arbeiten Multi-core CPU braucht nur wenige s 21
22 Die GPU ist gut für datenparallele Berechnungen Die gleiche Berechnung wird auf vielen Datenelementen parallel ausgeführt viel Floating-Point Arithmetik Viele Berechnungen pro Speicherzugriff Speicherzugriff immer noch der Flaschenhals 22
23 CUDA Compute Unified Device Architecture Hardware und Software Spezifikation für parallele Berechnungen Einfache Erweiterung für C Möglichkeit, Code auf der GPU auszuführen NVIDIA (seit GeForce 8800 Serie) 23
24 CUDA Application i Programming Interface Die CUDA API ist eine Erweiterung zu C/C++ Eigener Compiler: nvcc Compiliervorgang in zwei Schritten z.b. nvcc in Kombination mit gcc CUDA Files enthalten hl sowohl GPU als auch CPU Funktionen 24
25 Zusätze für Funktionen und dvariablen Funktionen device global host Funktion läuft auf GPU und wird von GPU aufgerufen Funktion läuft auf GPU und wird von CPU aufgerufen Kernel Funktion, Rückgabetyp void Funktion läuft auf CPU und wird von CPU aufgerufen Einschränkungen für GPU Funktionen keine Rekursion, keine statischen Variablen Variablen device constant shared Global Memory (per grid, GPU) Constant Memory (per Grid, GPU) Shared Memory (per Block, GPU) 25
26 Host Eingebaute Variablen griddim : Größe des Gitters (in Blocks) griddim.x = Breite, griddim.y = Höhe blockdim : Größe eines Blocks blockdim.x = Breite, blockdim.y = Höhe blockidx : Index des Blocks (vom aktuellen ) blockidx.x = x-position, blockidx.y = y-position threadidx : Index (Position des s innerhalb des Blocks) threadidx.x = x-position, threadidx.y = y-position Kernel 1 Kernel 2 Block (1, 1) (0, 0) Device (1, 0) Grid 1 Block Block Block (0, 0) (1, 0) (2, 0) Block Block Block (0, 1) (1, 1) (2, 1) Grid 2 (2, 0) (3, 0) (4, 0) (0, 1) (1, 1) (2, 1) (3, 1) (4, 1) griddim = (3,2) blockdim = (5,3) blockidx = (1,1) threadidx = (2,0) (0, 2) (1, 2) (2, 2) (3, 2) (4, 2) 26
27 GPU Einfaches CUDA Beispiel: i Addition i auf der GPU { global void add( int a, int b, int *c ) { *c = a + b; } Kernel = kleines Programm auf der GPU (pro ) int main( void ) { int c; int *dev_c; cudamalloc( (void**)&dev_c, sizeof(int) ); Speicher auf GPU reservieren (global) CPU } add<<<1,1>>>( 2, 7, dev_ c ); cudamemcpy( &c, dev_c, sizeof(int), cudamemcpydevicetohost ) ); printf( "2 + 7 = %d\n", c ); cudafree( dev_c ) ; return 0; Kernel aufrufen Ergebnis zur CPU kopieren 27
28 GPU Speicher reservieren cudamalloc( (void**)&devptr, size ); size Bytes werden auf der GPU reserviert (Global Memory) Die Anfangsadresse steht in devptr Vorsicht, das ist eine GPU Adresse (!) cudafree( devptr ) ; Speicher auf der GPU wieder freigeben 28
29 GPU CPU Datenübertragung cudamemcpy( ptr, devptr, size, cudamemcpydevicetohost ) ); Kopieren von size Bytes von der GPU (Device) zur CPU (Host) CPU Adresse: ptr GPU Adresse: devptr cudamemcpy( devptr, ptr, size, cudamemcpyhosttodevice ) ); Kopieren von size Bytes von der CPU (Host) zur GPU (Device) CPU Adresse: ptr GPU Adresse: devptr Achtung: Parameterreihenfolge vertauscht! Es gibt auch cudamemcpydevicetodevice 29
30 KernelAufruf f g global void kernel( ) { } kernel<<<gridsize,blocksize>>>( ); Die Kernel-Funktion kernel wird in einem 1D Grid der Größe gridsize mit blocksize s pro Block aufgerufen insgesamt werden gridsize * blocksize s gestartet Der Kernel läuft auf der GPU und wird von der CPU aufgerufen global 30
31 KernelAufruf fbeispiel i add<<<1,1>>>( 2, 7, dev_c ); Die Kernel-Funktion add wird mit den Parametern ( 2, 7, dev_c ) aufgerufen Die Größe von Grid/Block wird durch die Werte innerhalb von <<< >>> angegeben <<<M,N>>> entspricht einem 1D Grid mit M Blöcken mit je N s pro Block Im Beispiel wird also nur 1 (in einem Block) gestartet 31
32 1. Sinnvolles Beispiel i Parallelität ausnutzen, viele s gleichzeitigg z.b. 2 Arrays gegeben Komponentenweise Addition c[i] = a[i] + b[i] Jeder (i=1..n) berechnet eine Addition Im Programm ändert sich hfolgendes Der Kernel Aufruf erfolgt jetzt mit einem größeren Grid (N, 1) Der Speicher für die Arrays wird auf der GPU reserviert Der Kernel ermittelt über den Index den richtigen Wert 32
33 Addition i von zwei Arrays auf der GPU int main( void ) { int a[n], b[n], c[n]; int *dev_a, *dev_b, *dev_c; CPU // allocate the memory on the GPU cudamalloc( (void**)&dev_a, N * sizeof(int) ); cudamalloc( (void**)&dev_b, N * sizeof(int) ); cudamalloc( dmll ((void**)&dev_c, N* sizeof(int) t)) ); // fill the arrays 'a' and 'b' on the CPU // copy the arrays 'a' and 'b' to the GPU cudamemcpy( dev_a, a, N * sizeof(int), cudamemcpyhosttodevice ) ); cudamemcpy( dev_b, b, N * sizeof(int), cudamemcpyhosttodevice ) ); add<<<n,1>>>( dev_a, dev_b, dev_c ); 33
34 Addition i von zwei Arrays auf der GPU // copy the array 'c' back from the GPU to the CPU cudamemcpy( c, dev_c, N * sizeof(int), cudamemcpydevicetohost ) ); CPU } // free the memory allocated on the GPU cudafree( dev_a ); cudafree( dev_b ); cudafree( df dev_c ); return 0; 34
35 Addition i von zwei Arrays auf der GPU: Kernel GP PU g global void add( int *a, int *b, int *c ) { } int tid = blockidx.x; c[tid] = a[tid] + b[tid]; Durch hden Aufruf fadd<<<n,1>>> wird idein Gid Grid mit N x 1 Blöcken angelegt (1 pro Block) Daher wird über den Blockindex auf das Array zugegriffen 35
36 Addition i von zwei Arrays auf der GPU: Kernel Was würde sich ändern, wenn der Kernel mit add<<<1,n>>> aufgerufen wird? Es wird ein Grid mit einem Block angelegt, in dem einen Block laufen N s Im Kernel muß daher mit int tid = threadidx.x auf das Array zugegriffen werden An der Laufzeit ändert sich in diesem Fall nichts 36
37 Gid Grid-und dblockgröße für 2D-Fall Fllfestlegen Eigener Typ dim3 Beschreibt praktisch Integer Vektor mit 3 Komponenten Bei einem 2D Grid/Block wird hier die 3. Komponente automatisch auf 1 gesetzt dim3 gridsize(gridwidth, idwidth gridheight) i dim3 blocksize(blockwidth, blockheight) kernel<<<gridsize, blocksize>>> Das 2D Grid besteht aus gridwidth x gridheight Blöcken jeder Block besteht aus blockwidth x blockheight s 37
38 2D-Grid Gid Aufteilung Grid in Blocks An welcher xy-position befindet sich der aktuelle? int x = threadidx.x + blockidx.x * blockdim.x; int y = threadidx.y + blockidx.y * blockdim.y; 38
39 Bsp. Kernelfür Fraktal global void fractalkernel( float *imageptr, int ticks ) { int pixelx = threadidx.x + blockidx.x * blockdim.x; int pixely = threadidx.y + blockidx.y * blockdim.y; int offset = pixelx + pixely * blockdim.x * griddim.x; float cx = 0.41 * sin(0.001 * float(ticks)); float cy = 0.77 * cos( * float(ticks)); } float x = 2.0f * (pixelx / (float)dim) - 1.0f; float y = 2.0f * (pixely / (float)dim) - 1.0f; inti= 0; int max = 256; float dist = x*x + y*y; while ((i < max) && (dist < 4.0)) { float newx = x*x - y*y + cx; y = 2*x*y + cy; x = newx; dist = x*x + y*y; i++; } imageptr[offset] = pow(float(i) / float(max), 0.25f); 39
40 Bildanzeigei Für die Anzeige von einem Bild verwenden wir zunächst folgendes kernel<<<gridsize, blocksize>>>(devptr ); cudamemcpy( pixels, devptr, size, cudamemcpydevicetohost ); gldrawpixels( width, height,, pixels ); Da sich die Pixeldaten bereits auf der GPU befinden sind dies zwei unnötige Kopiervorgänge Effizientere Lösung später 40
41 Wer ist das? siehe Übung 41
42 Asynchrone Kommandos Viele CUDA Kommandos arbeiten asynchron d.h. das CPU Programm läuft weiter Dies sind z.b. Kernel Aufrufe Kommandos zum Kopieren von Speicher, die auf Async() enden Device Device Speicherkopie 42
43 Fhl Fehlerabfrage static void HandleError( cudaerror_t err, const char *file, int line ) { if (err!= cudasuccess) { printf( "%s in %s at line %d\n", cudageterrorstring( err ), file, line ); exit( EXIT_ FAILURE ); } } #define HANDLE_ ERROR( err ) (HandleError(( err, FILE, LINE )) Mit HANDLE_ERROR(function) wird ein vorkommender Fehler direkt angezeigt und abgebrochen Ist evtl. eine Bremse, aber sicherer Alternative: cutilsafecall( ) 43
44 Zi Zeitmessung cudaevent_t start, stop; cudaeventcreate( &start ); cudaeventcreate( &stop ); cudaeventrecord( start, 0 );. cudaeventrecord( stop, 0 ); cudaeventsynchronize( stop ); float elapsedtime; cudaeventelapsedtime( &elapsedtime, start, stop ); printf( "Time to generate: %3.1f ms\n", elapsedtime ); cudaeventdestroy( start ); cudaeventdestroy( stop ); 44
45 GPU Eigenschaften abfragen cudadeviceprop prop; int count; HANDLE_ERROR( cudagetdevicecount( &count ) ); for (int i=0; i< count; i++) { HANDLE_ERROR( cudagetdeviceproperties( &prop, i ) ); printf( " --- General Information for device %d ---\n", i ); } printf( "Name: %s\n", prop.name p ); printf( "Compute capability: %d.%d\n", prop.major, prop.minor ); printf( "Clock rate: %d\n", prop.clockrate ); Wieviele CUDA-fähige Grafikkarten sind in meinem Rechner und was können die? 45
46 CUDA Compiler Der CUDA Compiler nvcc benötigt einen C-Compiler Aufruf z.b.: nvcc ccbin CompilerDirectory L LibraryDirectory mycudaprogram.cu o mycudaprogram.exe CompilerDirectory ist z.b. bei Visual Studio (cl.exe) : C:\Program Files\Microsoft Visual Studio 9.0\VC\bin 46
47 Device Properties von Laptop --- General Information for device Name: GeForce 9600M GT Compute capability: 1.1 Clock rate: Device copy overlap: Enabled Kernel execution timeout : Enabled --- Memory Information for device Ttl Total global lblmem: Total constant Mem: Max mem pitch: Texture Alignment: MP Information for device Multiprocessor count: 4 Shared mem per mp: Registers per mp: 8192 s in warp: 32 Max threads per block: 512 Max thread dimensions: i (512, 512, 64) Max grid dimensions: (65535, 65535, 1) CUDA Version Gleichzeitig MemCopy und Kernel ausführen Max. Zeit für Kernel Anzahl Streaming Multiprocessors (SMP) Shared Memory pro SMP Anzahl Register pro SMP s im Gleichschritt Max. Gesamtanzahl (!) s pro Block Max. Größe der Achsen von einem Block 47
48 Installation von CUDA 1. CUDA Toolkit installieren Wir nutzen CUDA 3.2 (Download) 2. Treiber aktualisieren Treiber muss zur CUDA Version passen (Download) 3. CUDA in Visual Studio 2008 integrieren Build Rules (*.rules) von \ NVIDIA GPU Computing Toolkit\CUDA\v3.2\extras\visual_studio_integration\rules studio integration\rules nach \Microsoft Visual Studio 9.0\VC\VCProjectDefaults kopieren fertig CUDA in Visual Studio 2010 integrieren Wir haben es nicht getestet, aber hier schon mal ein Anfang 48
49 CUDA Debugging Device Emulation CUDA Kernel läuft auf CPU (langsam) Dafür z.b. printf() im Kernel möglich nvcc -G -g -deviceemu file.cu 49
50 Zusammenfassung CUDA Erste Schritte Programmiermodell, Grids und Blocks Kernel Funktionen Nächstes Mal Speichertypen Synchronisation 50
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
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:
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
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
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
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-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
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
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)
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
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
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:
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
MehrSoftware 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
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
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
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
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
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
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
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
MehrArchitektur und Programmierung von Grafik- und Koprozessoren
Architektur und Programmierung von Grafik- und Koprozessoren General Purpose Programmierung auf Grafikprozessoren Stefan Zellmann Lehrstuhl für Informatik, Universität zu Köln SS2018 Host Interface Ausführungszeit
MehrSoftware 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
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
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
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
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
MehrVolumenrendering mit CUDA
Volumenrendering mit CUDA Arbeitsgruppe Visualisierung und Computergrafik http://viscg.uni-muenster.de Überblick Volumenrendering allgemein Raycasting-Algorithmus Volumen-Raycasting mit CUDA Optimierung
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
MehrCuda 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
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
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,
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
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
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);
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 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
MehrParallelisierung mit Hilfe grafischer Prozessoren 318
Parallelisierung mit Hilfe grafischer Prozessoren 318 Schon sehr früh gab es diverse Grafik-Beschleuniger, die der normalen CPU Arbeit abnahmen. Die im März 2001 von Nvidia eingeführte GeForce 3 Series
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
MehrPGI 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
MehrGPGPU Programming nvidia CUDA vs. AMD/ATI Stream Computing. Seminar HWS 08/09 by Erich Marth
Computing 1 Inhalt Einführung nvidia CUDA AMD Stream Computing CUDA vs. Stream Computing - Warum, Vorteile, Motivation - Überblick, API - Details, Beispiele - Überblick, API - Details, Beispiele - wesentliche
MehrCUDA 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
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
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
MehrParallelisierung mit Hilfe grafischer Prozessoren 323
Parallelisierung mit Hilfe grafischer Prozessoren 323 Schon sehr früh gab es diverse Grafik-Beschleuniger, die der normalen CPU Arbeit abnahmen. Die im März 2001 von Nvidia eingeführte GeForce 3 Series
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
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.
MehrComputergrundlagen Moderne Rechnerarchitekturen
Computergrundlagen Moderne Rechnerarchitekturen Axel Arnold Institut für Computerphysik Universität Stuttgart Wintersemester 2010/11 Aufbau eines modernen Computers DDR3- Speicher Prozessor Prozessor PEG
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.
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
MehrParallel 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
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
MehrEnblend - Portierung auf die GPU
Multi-Core Architectures and Programming Enblend - Portierung auf die GPU Hardware/Software Co-Design September 25, 2009 1 Inhalt 1 Motivation 2 Enblend-Algorithmus 3 Beschleunigung mittels Cuda 4 Benchmark
MehrMaster-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
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
MehrComputergrundlagen 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
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
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
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
MehrComputergestütztes wissenschaftliches Rechnen SoSe 2004
Computergestütztes wissenschaftliches Rechnen SoSe 00 Alexander K. Hartmann, Universität Göttingen. Mai 00. Dynamisches Programmieren Fibonacci Zahlen: (n = ) fib(n) = (n = ) fib(n ) + fib(n ) (n > ) Z.B.
MehrWiederholung. Vorlesung GPU Programmierung Thorsten Grosch
Wiederholung Vorlesung Thorsten Grosch Klausur 2 Zeitstunden (26.7., 8:30 10:30 Uhr, G29/307) Keine Hilfsmittel Kein Bleistift / Rotstift verwenden 3 Aufgabentypen Wissensfragen zur Vorlesung (ca. 1/3)
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?
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
MehrOpenCL 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
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
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
MehrParallelisierung auf CUDA
Parallelisierung auf CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht RSA-Faktorisierung Image Flooding 2 RSA-Faktorisierung Erster Ansatz Implementierung des Pollard-Rho Algorithmus (sequentiell)
MehrInformatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1
Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss
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:
MehrOrganisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download
Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches
Mehr1 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
MehrOpenCL (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
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa Peter Zeller AG Softech FB Informatik TU Kaiserslautern Speichermanagement Wie viel Speicher braucht ein Programm? Wofür wird Speicher benötigt? Wie ist der Speicher
MehrVorlesung Programmieren
Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von
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
MehrBetriebssysteme. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.
Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware
MehrBetriebssysteme. Agenda. Tafelübung 4. Speicherverwaltung. Olaf Spinczyk.
Betriebssysteme Tafelübung 4. Speicherverwaltung http://ess.cs.tu-dortmund.de/de/teaching/ss217/bs/ Olaf Spinczyk olaf.spinczyk@tu-dortmund.de http://ess.cs.tu-dortmund.de/~os AG Eingebettete Systemsoftware
MehrDigital 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
MehrArrays (Felder/Vektoren)
Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff
MehrProgrammiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften
Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder
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
MehrParallelisierungspotentiale mit CUDA-Streams 387
CUDA-Streams 386 Bislang wurden überwiegend alle CUDA-Aktivitäten sequentiell durchgeführt, abgesehen davon, dass die Kernel-Funktionen parallelisiert abgearbeitet werden und der Aufruf eines Kernels asynchron
Mehr1 Fehler in Bibliotheksfunktionen. 1 Überblick. 2 Ziele der Aufgabe. Besprechung der 1. Aufgabe
U3 3. Übung U3 3. Übung U3-1 Fehlerbehandlung U3-1 Fehlerbehandlung Besprechung der 1. Aufgabe Fehlerbehandlung Infos zur Aufgabe 3: malloc-implementierung U3.1 Fehler können aus unterschiedlichsten Gründen
MehrDipl. Math. F. Braun Universitt Regensburg Rechenzentrum C:/Users/brf09510/svn/clib/trunk/c_lib/mathlib/complex/t/amdgus.tex 17.
Ein Illustration der Gesetze von Amdahl und Gustavson an einem Beispiel mit Cuda Dipl. Math. F. Braun Universitt Regensburg Rechenzentrum C:/Users/brf09510/svn/clib/trunk/c_lib/mathlib/complex/t/amdgus.tex
Mehreinlesen n > 0? Ausgabe Negative Zahl
1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen
MehrPhysikalische Simulationen mit. 9. Vorlesung GPU Programmierung Thorsten Grosch
Physikalische Simulationen mit CUDA 9. Vorlesung g Thorsten Grosch Übersicht Verschiedene physikalische Simulationen mit CUDA Deformationen Wärmeausbreitung Lichtausbreitung Können oft parallelisiert werden
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
MehrC++ Teil 7. Sven Groß. 30. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 13
C++ Teil 7 Sven Groß 30. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 7 30. Nov 2015 1 / 13 Themen der letzten Vorlesung Zeiger, Felder (Wdh.) dynamische Speicherverwaltung Sven Groß (IGPM, RWTH Aachen)
MehrDer Goopax Compiler GPU-Programmierung in C++ ZKI AK-Supercomputing, Münster, 27.03.2014, Ingo Josopait
Der Goopax Compiler GPU-Programmierung in C++ AMD R9 290X: 5.6 TFLOPS (SP MulAdd) Programmierung ~10000 Threads Entwicklungsumgebungen Entwicklungsumgebungen CUDA, OpenCL Compiler: kernel GPU Maschinencode
MehrParallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, 2013-05-08
Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-05-08 Aufräumen Ressourcen in umgekehrter Abhängigkeitsreihenfolge freigeben Objekte haben Reference-Count (RC), initial 1 clrelease
MehrHigh Performance Computing I WS 2015/2016
High Performance Computing I WS 2015/2016 Andreas F. Borchert und Michael Lehn Universität Ulm 8. Februar 2016 Parallelisierung mit Hilfe grafischer Prozessoren 2 Schon sehr früh gab es diverse Grafik-Beschleuniger,
MehrParallelisierung der Matrixmultiplikation
Ein Beispiel für parallele Algorithmen Ivo Hedtke hedtke@math.uni-jena.de www.minet.uni-jena.de/~hedtke/ ehem. Hiwi am Lehrstuhl für Wissenschaftliches Rechnen (Prof. Dr. Zumbusch) Institut für Angewandte
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
Mehr