Rechnerarchitektur (RA)

Größe: px
Ab Seite anzeigen:

Download "Rechnerarchitektur (RA)"

Transkript

1 12 Rechnerarchitektur (RA) Sommersemester 2015 Foliensatz 6: Grafikprozessoren und GPGPU-Programmierung Michael Engel Informatik 12 Tel.: /04/23 Diese Folien enthalten Grafiken mit Nutzungseinschränkungen. Das Kopieren der Grafiken ist im Allgemeinen nicht erlaubt.

2 3D Grafikpipeline (OpenGL) Erzeugung von Bildern üblicherweise Fließbandartig organisiert. Beispiel: OpenGL F Siehe Vorlesungen des LS7 zu den einzelnen Grafikoperationen 12, 2015 M. Wawro, Digital Medics,

3 Struktur früher Grafikbeschleuniger [Müller-Schloer, Schmitter: RISC-Workstation- Architekturen, Springer- Verlag,1991] Neuere Grafikbeschleuniger stärker programmierbar 12,

4 Beispiel: Abbildung einer Vektormultiplikation Grid Thread Block 0. Thread Block 15 SIMD Thread 0 SIMD Thread 15 SIMD Thread 0 SIMD Thread 15 A[ 0] = B[ 0] * C[ 0] A[ 1] = B[ 1] * C[ 1].. A[ 31] = B[ 31] * C[ 31] A[ 480] = B[ 480] * C[ 480] A[ 481] = B[ 481] * C[ 481].. A[ 511] = B[ 511] * C[ 511] A[7680] = B[7680] * C[7680] A[7681] = B[7681] * C[7681].. A[7711] = B[7711] * C[7711] A[8160] = B[8160] * C[8160] A[8161] = B[8161] * C[8161].. A[8191] = B[8191] * C[8191] Verteilung einer Multiplikation von Vektoren mit 8192 Elementen. Der thread block scheduler weist thread blocks multithreaded SIMD Prozessoren zu. Der Hardware thread scheduler wählt aus, welcher thread als nächstes ausgeführt wird. 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

5 Vereinfachtes Block Diagram eines Multithreaded SIMD-Prozessors thread scheduling kann unter 48 unabhängigen threads einen ausführbereiten auswählen Effiziente Speicherzugriffe entstehen erst durch Zusammenfassen von benachbarten Speicherzugriffen 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

6 Layout der Fermi GTX 480 GPU 16 Multithreaded SIMD-Prozessoren GDDR5 port PCI Express 2.0 x 16 GDDR5 ports Thread block scheduler GDDR5 port 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

7 Fermi Multithreaded SIMD Processor 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

8 Auswahl von ausgeführten threads durch den SIMD thread scheduler Beispiel einer Ausführung von threads: Annahme: durch scheduling innerhalb der multithreaded SIMD-Prozessoren lässt sich die Speicherlatenzzeit verstecken, ausreichend viele vorhandene threads vorausgesetzt. 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

9 Vergleich von Bezeichnungen Treffende Bezeichn. Außerhalb GPUs CUDA/Nvidia Bedeutung Vectorizable Loop Vectorizable Loop Grid Vektorisierbare Schleife Body of vectorizable loop Sequence of SIMD Lane Operations Thread of SIMD intructions Body of (strip-mined) vectorizable loop One iteration of a loop Thread of vector instructions Thread block CUDA Thread Warp Gruppe von threads SIMD instruction Vector instruction PTX instruction PTX Hardwarebef. Multithreaded SIMD processor (Multithreaded) vector processor Streaming multiprocessor Thread block scheduler Scalar processor Giga Thread Engine SIMD thread scheduler Thread scheduler in multithreaded CPU WARP scheduler SIMD Lane Vector Lane Thread processor 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

10 Beispiel Multiplikation zweier Vektoren der Länge 8192 Code, der alle Elemente erfasst, heißt grid SIMD-Befehl erfasst 32 Elemente (threads) (Werden bei obigem Prozessor auf 16 lanes ausgeführt) Ein thread block umfasst 512 Elemente Das Grid enthält mithin 16 Blöcke Durch den thread block scheduler wird jedem Block ein multithreaded SIMD Prozessor zugewiesen 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

11 Nvidia PTX GPU Befehle, Auswahl (1) Gruppe Befehl Bedeutung Kommentar Arithmetik type {.s32,.u32,.f32,.s64,.u64,.f64} Datentypen Spezialbefehle add.type d,a,b mad.type d,a,b,c min.type d,a,b d=a+b d=a*b+c d=(a<b)?a:b selp.type d,a,b d=p? a:b select with predicate type {.f32,.f64 (teilweise)} sqrt.type d,a rsqrt.type d,a sin.type d,a lg2.type d,a ex2 d,a d=sqrt(a) d=1/sqrt(a) d=sin(a) d=log 2 (a) d=2^a Datentypen Logik type={.pred,.b32,.b64} Datentypen and.type or.type shl.type d= a b d= a b d=a <<b 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

12 Nvidia PTX GPU Befehle, Auswahl (2) Gruppe Befehl Bedeutung Kommentar Speicher space {.global,.shared,.local,.const} Datentypen ld.space.type d[a+offset] d=mem[a+offset] st.space.type d[a+offset] d=mem[a+offset] tex.nd.dtyp,btyp d=text2d(a,b) atom.spc.op.type d=mem[a], Mem[a]=d op b Atomare Operation Kontrolle branch t if (p) goto t Bedingter Sprung call Funktionsaufruf ret Rückkehr vom Funktionsaufruf bar.sync Warte auf threads Barrier Synchronisation exit Beende thread PTX=Parallel Thread Execution PTX-ISA ist eine Abstraktion des Hardwarebefehlssatzes Übersetzung in Hardware-ISA erfolgt durch Software PTX benutzt virtuelle Register 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

13 Beispiel: DAXPY in PTX shl.s32 R8, blockidx, 9 ; Thread Block ID * Block size (512 or 2 9 ) add.s32 R8, R8, threadidx ; R8 = i = my CUDA thread ID ld.global.f64 RD0, [X+R8] ; RD0 = X[i] ld.global.f64 RD2, [Y+R8] ; RD2 = Y[i] mul.f64 RD0, RD0, RD4 ; Product in RD0 = RD0 * RD4 (scalar a) add.f64 RD0, RD0, RD2 ; Sum in RD0 = RD0 + RD2 (Y[i]) st.global.f64 [Y+R8], RD0 ; Y[i] = sum (X[i]*a + Y[i]) 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

14 Realisierung von IF-Statements GPUs benutzen Masken zur Realisierung von IF-Statements Masken: Einträge enthalten Masken für jede SIMD lane Legen fest, welche threads Ergebnisse abspeichern (alle threads werden ausgeführt) Pro thread-lane 1-bit predicate register, durch Programmierer angegeben. 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

15 Beispiel if (X[i]!= 0) X[i] = X[i] Y[i]; else X[i] = Z[i]; ld.global.f64 RD0, [X+R8] ; RD0 = X[i] setp.neq.s32 P1, RD0, #0 ; P1 is predicate register bra ELSE1, *Push ; Push old mask, set new mask bits ; if P1 false, go to ELSE1 ld.global.f64 RD2, [Y+R8] ; RD2 = Y[i] sub.f64 RD0, RD0, RD2 ; Difference in RD0 st.global.f64 [X+R8], RD0 ; X[i] = bra ENDIF1, *Comp ; complement mask bits ; if P1 true, go to ENDIF1 ELSE1: ld.global.f64 RD0, [Z+R8] ; RD0 = Z[i] st.global.f64 [X+R8], RD0 ; X[i] = RD0 ENDIF1: <next instruction>, *Pop ; pop to restore old mask 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

16 Verschiedene Speicher Treffende Bezeichnung Außerhalb GPUs CUDA/Nvidia Bedeutung GPU memory Main memory Global memory (Teilweise o. Cache) Private memory Thread or stack local storage (OS) Local memory Im Hauptspeicher (!), nur innerhalb eines threads nutzbar Local memory Local memory Shared Memory Schneller lokaler Speicher für einen SIMD-Prozessor, Zur Kommunikation innerhalb von blocks CPU memory Texture memory SIMD Lane registers Vector lane registers Thread processor registers Gecachter CPU- Hauptspeicher Durch CPU zum GPU-Speicher kopierbar, durch GPU zum CPU-Speicher kopierbar. 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

17 Nvidia GPU Speicherstrukturen 1. Private memory: privater Abschnitt im off-chip-dram- Speicher. Für Stack, private Variablen, ausgelagerte Register 2. Local Memory: von threads innerhalb eines multithreaded SIMD-Prozessors gemeinsam nutzbarer Speicher 3. GPU-Memory: Off-Chip- Speicher, der von allen thread- Blöcken und auch von der CPU genutzt werden kann. 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

18 Ähnlichkeiten zwischen Vektor- und Grafikprozessoren 8-16 SIMD Lanes 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

19 Nvidia GPU Architektur Ähnlichkeiten zu Vektormaschinen: Beide sind geeignet für datenparallele Anwendungen Beide enthalten gather/scatter-unterstützung Beide enthalten Maskenregister Beide haben große Registerfiles Unterschiede: Kein Skalarprozessor bei GPUs GPU benutzt Multithreading zum Verstecken von Speicherlatenz GPU hat viele funktionelle Einheiten, statt wenigen mit vielen Fließbandstufen 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

20 Vergleich Grafikprozessor/CPU mit dem Roofline-Modell 78 GF/sec Die höchste Rechenleistung bei Core i7 ist nur bei Verwendung aller 4 Cores und SSE- Befehlen mit gleicher Anzahl Multiplikationen und Additionen erreichbar Für die GTX 280 benötigt man kombinierte multiplyadd Instruktionen auf allen multithreaded SIMD-Prozessoren Die maximale DP FP Performance ist zum Vergleich in der unteren Zeile dargestellt 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

21 Zusammenfassung Stärkere Programmierbarkeit von Grafikprozessoren erlaubt deren Einsatz für allgemeines Rechnen, v.a. für Vektor-orientiertes Rechnen Einheit der Parallelausführung ist ein thread threads werden in Blöcke zusammengefasst Die Blöcke machen eine parallelisierbare Schleife aus thread Blöcke werden den multithreaded SIMD- Prozessoren zugewiesen Innerhalb der Prozessoren werden die auszuführenden threads dynamisch per Hardware ausgewählt Lokalität zwischen threads wg. Speicherzugriffen wichtig 12, 2015 Aus Hennessy/Patterson: Computer Architecture, 5. Aufl., Kap.4; Copyright 2012, Elsevier Inc. All rights reserved

22 12 GPGPU-Programmierung 2014/04/23 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt.

23 Motivation (1) General Purpose Computing on Graphics Processing Units (GPGPU) Wurde eingeführt um (bei Spielen) die CPU zu entlasten Physikalische Berechnungen Künstliche Intelligenz Medizinische Bildverarbeitung 12, & fr.wikipedia

24 Motivation (2) GPUs haben eine große Anzahl von parallelen Rechenkernen Gut für datenparallele Programme (30 in total ) (240 in total) Nvidia GeForce GTX Titan hat z.b Prozessoren Wie können diese effizient programmiert werden? 12, 2015 Nvidia Best Practice Guide

25 Motivation (3) Was sollte bzgl. GPGPU-Applikationen beachtet werden? Threads sollten möglichst unabhängig voneinander sein Zusätzlicher Kopier-Overhead für Daten GPU GPU CPU CPU 12,

26 Geschichte der GPGPU-Programmierung (1) Bis zirka Shader-Sprachen wurden zur Programmierung benutzt Vertex- und Fragment-Shader-Programme void main(void) { gl_fragcolor = vec4 (0.0, 1.0, 0.0, 1.0); } David Kirk/Nvidia and Wen-mei W. Hwu, 12, , University of Illinois

27 Geschichte der GPGPU-Programmierung (2) Ab 2004 Einführung von Sprachen zum Streamprocessing Z.B. BrookGPU von der Stanford University Nutzung von GPUs als Coprocessor / Beschleuniger Versteckt Komplexität kernel void add_vector(float in1<>, float in2<>, out float out<>) { out = in1 + in2; } float in1<100> = {1.0f, 2.0f,...}; float in2<100> = {2.0f, 3.0f,...}; float out<100>; add_vector(in1,in2,out); Vektoraddition in BrookGPU Code 12,

28 Geschichte der GPGPU-Programmierung (4) Ab 2007 Einführung von CUDA Compute Unified Device Architecture Framework für stream processing auf Nvidia Grafikkarten, propietär Ursprünglich nur für Datenparallelität konzipiert Ab 2008 Einführung von OpenCL Allgemeines Framework für stream processing auf Multi- und Manycore- Architekturen Für Daten- und Taskparallelität konzipiert Spezifikation durch die Khronos Group: AMD, Apple, ARM, Creative, Google, Intel, Texas Instruments, Samsung, Nvidia 12,

29 CUDA Adaptiert das stream processing-konzept Elementare Programmierkomponente Kernel Keine Rekursion Parameteranzahl ist nicht variabel Unterscheidung von Host- und GPU-Code void add_vector (int* in1, int* in2, int* out) { for ( int id = 0; id < N; id++ ) { out[id] = in1[id] + in2[id] ; } } Vektoraddition in C global void add_vector(int* in1, int* in2, int* out) { int id = (blockidx.x*blockdim.x)+threadidx.x; out[id] = in1[id] + in2[id]; } add_vector<<<n,1>>>( in1, in2, out ); Vektoraddition in Cuda 12,

30 CUDA Entwicklungsprozess Mehrstufig und kompliziert Programmierung von Code für einen Thread Spezifikation der Parallelität per Hand Einige statisch vorgegebene Größen müssen beachtet werden 12,

31 CUDA Kompilierung Mehrstufigen Verfahren für die Kompilierung von CUDA-Programmen GPU- und Host-Code werden getrennt kompiliert GPU-Binaries werden in Host- Code eingebettet Neuester Compiler von Nvidia basiert auf der LLVM Compiler Infrastruktur 12,

32 CUDA Elemente des Frameworks Thread Block Grid Instanz eines Kernels Gruppe von Threads Gesamtheit aller Blocks Host Kernel 1 Device Grid 1 Block (0, 0) Block (0, 1) Block (1, 0) Block (1, 1) Grid 2 Für Thread (2,1) in Block (1,1): threadidx.x: 2 threadidx.y: 1 blockidx.x: 1 blockidx.y: 1 blockdim.x: 4 blockdim.y: 2 griddim.x: 2 griddim.y: 2 Kernel 2 Block (1, 1) Thread (0,0) Thread (0,1) Thread (1,0) Thread (1,1) Thread (2,0) Thread (2,1) Thread (3,0) Thread (3,1) 12, 2015 Nvidia

33 CUDA Abbildungsbeispiel Ein Kernel benötigt z.b. folgende Ressourcen Grid size: 8x8 Blöcke Block size: 16x16 Threads (ergibt insgesamt 128x128 Threads) 1024 Bytes Shared Memory per Block (z.b. 1 Float Variable pro Thread) Beispiel Grafikkarte Max. 8 Blocks, 24 Warps (Warpgröße 32), 768 Threads Max. 16 Kilobytes Scratchpad-Speicher Auslastung der Grafikkarte 3 Blocks, 24 Warps, 768 Threads, 3072 Bytes Shared Memory (768/32) (3*16*16) (3*1024) 12,

34 CUDA - Speicherallokation cudamalloc() Allokiert globalen Speicher auf der Grafikkarte cudafree() Gibt allokierten Speicher auf der Grafikkarte frei Grid ( 0 (0, Block Shared Memory ( 0 (1, Block Shared Memory cudamemcpy() Kopiert in/aus/im globalen Speicher auf der Grafikkarte Registers ( 0 (0, Thread Registers ( 0 (1, Thread Registers ( 0 (0, Thread Registers ( 0 (1, Thread Host Global Memory 12, 2015 Nvidia

35 CUDA - Speichertransfers Kopieren in/aus/im globalen Speicher Vom Host zur Grafikkarte int*devmemx; int* hostmemx = malloc(1024*sizeof(int)); for(int i=0; i<1024; i++) { hostmemx[i] = rand() % 100; // Initialize with random numbers } cudamalloc((void**) &devmemx, 1024*sizeof(int)); cudamemcpy(devmemx, &hostmemx, 1024*sizeof(int), cudamemcpyhosttodevice); Von der Grafikkarte zum Host cudamemcpy(&hostmemx, devmemx, 1024*sizeof(int), cudamemcpydevicetohost); Auf der Grafikkarte cudamemcpy(devmemx, devmemy, 1024*sizeof(int), cudamemcpydevicetodevice); 12,

36 CUDA Speicherzugriff Globaler/Shared Memory-Speicherzugriff Zugriff auf globalen/shared Speicher ist nicht synchronisiert! Ergebnis von Schreib-/Leseoperationen auf gemeinsamen Speicher? Lösung: Atomare Operationen Vorsicht: Die Ausführungsreihenfolge ist immer noch undefiniert! global void add_up_vector (int* out) { *out+=5; } add_vector_gpu<<<1,5>>>(out); global void add_up_vector (int* out) { atomicadd(out,5); } add_vector_gpu<<<1,5>>>(out); Ergebnis? => out = {5,10,15,20,25}? Ergebnis? => out = 25 12,

37 CUDA Inline Assembly PTX-Code kann direkt im Kernel benutzt werden Code meist effizienter PTX-Instruktionen keine Hardwarebefehle global void kern(int* x, int* y) { int id = threadidx.x + ; if (id == 0) *x += 5; syncthreads(); if (id == 1) *y = *x; } global void kern(int* x, int* y) { int id = threadidx.x + blockdim.x * blockidx.x; if (id == 0) asm("ld.global.s32 %r9, [%0+0];" "add.s32 %r9, %r9, 5;" "st.global.s32 [%0+0], %r9;" : :"r"(x)); syncthreads(); if (id == 1) *y = *x; } 12,

38 CUDA Thread Divergenz (1) Ablauf der Threads Vorhersage der tatsächlichen Reihenfolge ist nicht möglich! Programmierer kann aber Synchronisationspunkte setzen global void update(int* x, int* y) { int id = threadidx.x + blockdim.x * blockidx.x; if (id == 5){ sharedx = *x; sharedx = 1; } syncthreads(); if (id == 0) *y = sharedx; } update <<<2,512>>>(in,out); Ergebnis? => *out = 1;? 12,

39 CUDA Thread Divergenz (2) Synchronisation über Blockgrenzen Keine globale Synchronisation innerhalb eines Kernels! Lösung: Kernel aufsplitten und nacheinander ausführen global void update(int* update_1(int* x, int* x, int* y) { y) { int id = threadidx.x + blockdim.x * blockidx.x; if (id == 5) *x = 1; } *x = 1; global syncthreads(); void update_2(int* x, int* y) { if int (id == = threadidx.x 0) + blockdim.x * blockidx.x; if (id == 0) *y = *x; } update_1 <<<2,512>>>(in,out); update_2 <<<2,512>>>(in,out); Ergebnis? => *out =?; 1; 12,

40 Open Compute Language - OpenCL 12,

41 OpenCL für heterogene Systeme OpenCL ist auf verschiedensten Plattformen zu finden ZiiLabs Tablets Samsung SnuCore 12, 2015 ZiiLabs & Samsung

42 CUDA vs. OpenCL Unterschied zum CUDA-Ansatz Taskparallelität kann modelliert werden OpenCL-Programme werden online kompiliert Unterstützung von heterogenen Systemen (GPUs, CPUs, Cell,...) Ausführung auf Nvidia-GPU Nur anderes Frontend + API OpenCL kann nicht alle CUDA Spezialbefehle nutzen 12, 2015 Nvidia

43 CUDA vs. OpenCL: Speichermodell CUDA Global memory Constant memory Shared memory Local memory OpenCL Global memory Constant memory Local memory Private memory 12, 2015 Nvidia & Patrick Cozzi, GPU Programming and Architecture, University of Pennsylvania

44 CUDA vs. OpenCL: Ausführungs/Progr.-modell CUDA Kernel Host program Thread Block Grid global void add_vector ( int* in1, int* in2, int* out) { int id = (blockidx.x*blockdim.x)+threadidx.x; out[id] = in1[id] + in2[id]; } Vektoraddition in Cuda OpenCL Kernel Host program Work item Work group NDRange (index space) kernel void add_vector ( global int in1, global int in2, global int out) { int id = get_global_id(0); out[id] = in1[id] + in2[id]; } Vektoraddition in OpenCL 12, 2015 Nvidia & Patrick Cozzi, GPU Programming and Architecture, University of Pennsylvania

45 OpenCL vs. CUDA: Task-Parallelität Einsortierung von OpenCL-Kernel in Command Queue Synchrone Ausführung Asynchrone Ausführung Kernel A Kernel B Kernel C Kernel D 12,

46 Lokalen Speicher effizient füllen (1) 64 work items in einer work group 8x8 Threads laden einen 10x10 großen lokalen Speicher 12,

47 Lokalen Speicher effizient füllen (2) Thread id 14 (x=6, y=1) 8x8 Threads laden einen 10x10 großen lokalen Speicher 12,

48 Lokalen Speicher effizient füllen (3) x8 Threads laden einen 10x10 großen lokalen Speicher 12,

49 Lokalen Speicher effizient füllen (4) x8 Threads laden einen 10x10 großen lokalen Speicher 12,

50 Lokalen Speicher effizient füllen (5) x8 Threads laden einen 10x10 großen lokalen Speicher 12,

51 Lokalen Speicher effizient füllen (6) x8 Threads laden einen 10x10 großen lokalen Speicher 12,

52 Lokalen Speicher effizient füllen (7) x8 Threads laden einen 10x10 großen lokalen Speicher 12,

53 Lokalen Speicher effizient füllen (8) Natürlichstes Zugriffsmuster , 2015 Zugriffsmuster mit den wenigsten Branches Effizientestes Zugriffsmuster (bei Nvidia GPU)

54 Beispiel: Addition von Vektorelementen Summiert eine Menge von Elementen eines Vektors Host-Anwendung in C/C++ 1. Anfrage einer cl_device_id für jedes Device, das einen Kernel ausführen soll add_numbers verwendet erstes GPU device der ersten platform (Nvidia, AMD): platform: erste platform der OpenCL runtime device structure: erstes Gerät der Platform Hier angefragt: CL_DEVICE_TYPE_GPU, also GPU (CPU auch möglich) 2. Erzeugen eines Kontextes für das angefragte device: 3. Einlesen des GPU-Codes für den compute kernel: 12,

55 Beispiel: Addition von Vektorelementen (2) 4. Übersetzen der OpenCL-Funktion für das allokierte device. Zusätzliche Parameter für Übersetzung für mehrere devices, Übersetzungsoptionen (z.b. Optimierung) und Callback-Funktionen: 5. Erzeugen eines Kernels aus der übersetzten Funktion: 6. Erzeugung der command queue für die Ausführung des Kernels (Optional: out-of-order kernel execution und/oder profiling, Setzen von Parametern): 7. Ausführen des Kernels auf dem device: clenqueuendrangekernel verteilt den Code auf Devices, legt die Anzahl der work items für die Ausführung des Kernels (global_size) und die Anzahl work items für jede work group (local_size) fest Kompletter Beispielcode verfügbar bei 12,

56 Beispiel: Addition von Vektorelementen Kernel Kernel: Acht work items für die Addition von 64 Zahlen Jeweils nach der Berechnung der Summe von 8 Zahlen werden Zwischenergebnisse summiert Adresse der Daten in globalem Speicher Kopieren der Daten in lokalen Speicher und Addition (wenn verfügbar, Summe als Vektoraddition) Speichern der Summe in lokalem Speicher Warten auf Beendigung aller parallelen Aufgaben Ein work item zur Summierung der Teilsummen Schreiben der Teilsumme in globalen Speicher für Zugriff aus Host-Anwendung Kompletter Beispielcode verfügbar bei 12,

57 Vorteile/Nachteile GPU Programmierung ist aufwändig Kleine Kernel in OpenCL-Code Große Mengen an C/C++ Host Code erforderlich Ca. 90% Overhead Bsp: Minimum/Maximum Berechnung eines Arrays In C++: 6 Zeilen In OpenCL/CUDA: 80 Zeilen OpenCL Code Zeilen C Host Code Dafür sehr schnell: 1.2 Millisekunden auf CPU Millisekunden auf GPU 12,

58 Zusammenfassung Grafikkarten können effizient zur Beschleunigung von parallelen Programmen eingesetzt werden Nvidia setzt auf CUDA und OpenCL GPGPU Programmierung ist zeitaufwendig OpenCL bietet Task- und Datenparallelität Eine offene Alternative zu CUDA Einen portablen Code für eine Vielzahl von Geräten 12,

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Die Sandy-Bridge Architektur

Die Sandy-Bridge Architektur Fakultät Informatik - Institut für Technische Informatik - Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Die Sandy-Bridge Architektur René Arnold Dresden, 12. Juli 2011 0. Gliederung 1.

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

Übersicht 1. Anzeigegeräte 2. Framebuffer 3. Grundlagen 3D Computergrafik 4. Polygongrafik, Z-Buffer 5. Texture-Mapping/Shading 6. GPU 7. Programmierbare Shader 1 LCD/TFT Technik Rotation der Licht-Polarisationsebene

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

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

Multicore Herausforderungen an das Software-Engineering. Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Multicore Herausforderungen an das Software-Engineering Prof. Dr.-Ing. Michael Uelschen Hochschule Osnabrück 15.09.2010 Inhalt _ Motivation _ Herausforderung 1: Hardware _ Herausforderung 2: Software-Partitionierung

Mehr

2. Der ParaNut-Prozessor "Parallel and more than just another CPU core"

2. Der ParaNut-Prozessor Parallel and more than just another CPU core 2. Der ParaNut-Prozessor "Parallel and more than just another CPU core" Neuer, konfigurierbarer Prozessor Parallelität auf Daten- (SIMD) und Thread-Ebene Hohe Skalierbarkeit mit einer Architektur neues

Mehr

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

CUDA. 7. Vorlesung GPU Programmierung. Danke an Hendrik Lensch CUDA 7. Vorlesung Thorsten Grosch Danke an Hendrik Lensch Parallele l Programmierung mit der GPU Bisher: GPU = OpenGL Pipeline mit Shadern Alles orientiert sich am Rendering Programme für Eckpunkte und

Mehr

TECHNISCHE HOCHSCHULE NÜRNBERG GEORG SIMON OHM Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl

Mehr

Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe

Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe Grafikprozessoren Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe 2D: Berechnung der Bildes aus einfachen Grafikprimitiven 3D: Bildaufbau aus räumlicher Beschreibung

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

GPU-Computing im Rahmen der Vorlesung Hochleistungsrechnen

GPU-Computing im Rahmen der Vorlesung Hochleistungsrechnen GPU-Computing im Rahmen der Vorlesung Hochleistungsrechnen Universität Hamburg Scientific Visualization and Parallel Processing Übersicht Hintergrund und Entwicklung von GPGPU Programmierumgebungen & Werkzeuge

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur ARM, x86 und ISA Prinzipien Übersicht Rudimente des ARM Assemblers Rudimente des Intel Assemblers ISA Prinzipien Grundlagen der Rechnerarchitektur Assembler 2 Rudimente

Mehr

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software

Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Computeranwendung in der Chemie Informatik für Chemiker(innen) 3. Software Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL3 Folie 1 Grundlagen Software steuert Computersysteme

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

I Grundlagen der parallelen Programmierung 1

I Grundlagen der parallelen Programmierung 1 vii I Grundlagen der parallelen Programmierung 1 1 Einführung...... 3 1.1 Paradigmenwechsel in der Softwareentwicklung..... 4 1.2 Anwendungsbereiche...... 5 1.3 Parallelität in der Hardware..... 5 1.3.1

Mehr

Technische Grundlagen der Informatik 2 SS Einleitung. R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt E-1

Technische Grundlagen der Informatik 2 SS Einleitung. R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt E-1 E-1 Technische Grundlagen der Informatik 2 SS 2009 Einleitung R. Hoffmann FG Rechnerarchitektur Technische Universität Darmstadt Lernziel E-2 Verstehen lernen, wie ein Rechner auf der Mikroarchitektur-Ebene

Mehr

GPU-Computing. Michael Vetter

GPU-Computing. Michael Vetter GPU-Computing Universität Hamburg Scientific Visualization and Parallel Processing @ Informatik Climate Visualization Laboratory @ Clisap/CEN Übersicht Hintergrund und Entwicklung von GPGPU Programmierumgebungen

Mehr

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

GPGPU 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

Mehr

OpenCL mit Aparapi. Seminararbeit. Studiengang: Scientific Programming. 1. Betreuer: Prof. Ulrich Stegelmann

OpenCL mit Aparapi. Seminararbeit. Studiengang: Scientific Programming. 1. Betreuer: Prof. Ulrich Stegelmann Seminararbeit Studiengang: Scientific Programming 1. Betreuer: Prof. Ulrich Stegelmann 2. Betreuer: Dipl.-Inform. Tobias Rötschke Vorgelegt von: Lukas Abels-Vehns 21.12.2011 SOPTIM AG Im Süsterfeld 5-7

Mehr

Eine Einführung in die Architektur moderner Graphikprozessoren

Eine Einführung in die Architektur moderner Graphikprozessoren Eine Einführung in die Architektur moderner Graphikprozessoren Seminarvortrag von Sven Schenk WS 2005/2006 Universität Mannheim, Lehrstuhl für Rechnerarchitektur Inhalt Historische Eckpunkte Einführung

Mehr

Wie groß ist die Page Table?

Wie groß ist die Page Table? Wie groß ist die Page Table? Im vorigen (typischen) Beispiel verwenden wir 20 Bits zum indizieren der Page Table. Typischerweise spendiert man 32 Bits pro Tabellen Zeile (im Vorigen Beispiel brauchten

Mehr

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

Mehr

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

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

Mehr

Viele Rechenaufgaben können auf verschiedene CPUs und/oder Maschinen aufgeteilt und verteilt werden, um die Leistung zu steigern

Viele Rechenaufgaben können auf verschiedene CPUs und/oder Maschinen aufgeteilt und verteilt werden, um die Leistung zu steigern 3.2 Heterogene Multi-Core-Architekturen: Cell BE Viele Rechenaufgaben können auf verschiedene CPUs und/oder Maschinen aufgeteilt und verteilt werden, um die Leistung zu steigern Herkömmliche CPUs und Techniken

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard Systeme I: Betriebssysteme Kapitel 4 Prozesse Wolfram Burgard Version 18.11.2015 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

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

Vorlesung Rechnerarchitektur. Einführung

Vorlesung Rechnerarchitektur. Einführung Vorlesung Rechnerarchitektur Einführung Themen der Vorlesung Die Vorlesung entwickelt an Hand von zwei Beispielen wichtige Prinzipien der Prozessorarchitektur und der Speicherarchitektur: MU0 Arm Speicher

Mehr

OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009

OpenMP - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009 - Threading- Spracherweiterung für C/C++ Matthias Klein, Michael Pötz Systemprogrammierung 15. Juni 2009 Grundlagen der Parallelen Programmierung Hardware Threads vs. Prozesse Kritische Abschnitte Lange

Mehr

Grundlagen der Parallelisierung

Grundlagen der Parallelisierung Grundlagen der Parallelisierung Philipp Kegel, Sergei Gorlatch AG Parallele und Verteilte Systeme Institut für Informatik Westfälische Wilhelms-Universität Münster 3. Juli 2009 Inhaltsverzeichnis 1 Einführung

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

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

Beispiele von Branch Delay Slot Schedules

Beispiele von Branch Delay Slot Schedules Beispiele von Branch Delay Slot Schedules Bildquelle: David A. Patterson und John L. Hennessy, Computer Organization and Design, Fourth Edition, 2012 Grundlagen der Rechnerarchitektur Prozessor 97 Weniger

Mehr

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011

Sicheres C Programmieren in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Sicheres C in Embedded Systemen ARM II (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies

Mehr

Games with Cellular Automata auf Parallelen Rechnerarchitekturen

Games with Cellular Automata auf Parallelen Rechnerarchitekturen Bachelor Games with Cellular Automata auf Parallelen en ( ) Dipl.-Inf. Marc Reichenbach Prof. Dietmar Fey Ziel des s Paralleles Rechnen Keine akademische Nische mehr Vielmehr Allgemeingut für den Beruf

Mehr

Vertiefungsrichtung Rechnerarchitektur

Vertiefungsrichtung Rechnerarchitektur srichtung () ( für ) Prof. Dietmar Fey Ziele der srichtung RA Vertiefen des Verständnis vom Aufbau, Funktionsweise von Rechnern und Prozessoren Modellierung und Entwurf von Rechnern und Prozessoren ()

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

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION

SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION SS08, LS12, Friedrich-Alexander-Universität Erlangen Florian Hänel, Frederic Pollmann HS Multicore Architectures and Programming GPU EVOLUTION (until Geforce 7 Series) 1 ÜBERSICHT Grafikpipeline Verlagerung

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

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung Version 21.12.2016 1 Inhalt Vorlesung Aufbau einfacher Rechner Überblick: Aufgabe, Historische Entwicklung, unterschiedliche Arten von Betriebssystemen

Mehr

Computational Engineering I

Computational Engineering I DEPARTMENT INFORMATIK Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg Martensstraße 3, 91058 Erlangen 25.01.2016 Probeklausur zu Computational Engineering

Mehr

Shangrila. One Instruction Set Computer

Shangrila. One Instruction Set Computer Shangrila One Instruction Set Computer Outline One Instruction Set Computer Die Idee Funktion Die Machine Shangrila VM Interfaces Tools Implementation Status & Zukunft OISC >> Die Idee CPU mit nur einer

Mehr

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1 Ein kleiner Einblick in die Welt der Supercomputer Christian Krohn 07.12.2010 1 Vorschub: FLOPS Entwicklung der Supercomputer Funktionsweisen von Supercomputern Zukunftsvisionen 2 Ein Top10 Supercomputer

Mehr

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

CUDA. (Compute Unified Device Architecture) Thomas Trost. May 31 th 2016 CUDA (Compute Unified Device Architecture) Thomas Trost May 31 th 2016 Introduction and Overview platform and API for parallel computing on GPUs by NVIDIA relatively straightforward general purpose use

Mehr

Technische Informatik II Rechnerarchitektur

Technische Informatik II Rechnerarchitektur Technische Informatik II Rechnerarchitektur 3.Unterprogramme in MMIX Matthias Dräger E-Mail: www: mdraeger@mi.fu-berlin.de www.matthias-draeger.info/lehre/sose2010ti2/ tinyurl.com/sose2010ti2 Zuletzt bearbeitet:

Mehr

Betriebssysteme Vorstellung

Betriebssysteme Vorstellung Am Anfang war die Betriebssysteme Vorstellung CPU Ringvorlesung SE/W WS 08/09 1 2 Monitor CPU Komponenten eines einfachen PCs Bus Holt Instruktion aus Speicher und führt ihn aus Befehlssatz Einfache Operationen

Mehr

Diplomarbeit Antrittsvortrag

Diplomarbeit Antrittsvortrag Diplomarbeit Antrittsvortrag Christian Müller Run-time byte code compilation, interpretation and optimization for Alice Betreuer: Guido Tack Verantwortlicher Prof.: Gert Smolka Die nächsten 15 Minuten...

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Einführung in die Programmierung mit C++

Einführung in die Programmierung mit C++ Seite 1 Einführung in die Programmierung mit C Teil IV - Weiterführende Themen 16. SIMD Programmierung Was bedeutet SIMD Seite SIMD Single-Instruction, Multiple-Data, also eine Instruktion, mehrere Daten

Mehr

Assembler - Einleitung

Assembler - Einleitung Assembler - Einleitung Dr.-Ing. Volkmar Sieh Department Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2008 Assembler - Einleitung 1/19 2008-04-01 Teil 1: Hochsprache

Mehr

WiMa-Praktikum 1. Woche 8

WiMa-Praktikum 1. Woche 8 WiMa-Praktikum 1 Universität Ulm, Sommersemester 2017 Woche 8 Lernziele In diesem Praktikum sollen Sie üben und lernen: Besonderheiten der For-Schleife in Matlab Wiederholung des Umgangs mit Matrizen und

Mehr

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

Paralleles Rechnen. (Architektur verteilter Systeme) von Thomas Offermann Philipp Tommek Dominik Pich Paralleles Rechnen (Architektur verteilter Systeme) von Thomas Offermann Philipp Tommek Dominik Pich Gliederung Motivation Anwendungsgebiete Warum paralleles Rechnen Flynn's Klassifikation Theorie: Parallel

Mehr

Multicore-Architekturen

Multicore-Architekturen Einführung Parallelität Technologien / Architekturen Chips Seminar Multicore-Programmierung am Lehrstuhl für Programmierung 30. April 2009 1 / 30 Einführung Parallelität Technologien / Architekturen Chips

Mehr

Technische Informatik 1 - HS 2016

Technische Informatik 1 - HS 2016 Institut für Technische Informatik und Kommunikationsnetze Prof. L. Thiele Technische Informatik 1 - HS 2016 Lösungsvorschläge für Übung 8 Datum: 8. 9. 12. 2016 1 Instruktionsparallelität VLIW Gegeben

Mehr

Technische Informatik 1

Technische Informatik 1 Technische Informatik 1 7 Prozesse und Threads Lothar Thiele Computer Engineering and Networks Laboratory Betriebssystem 7 2 7 3 Betriebssystem Anwendung Anwendung Anwendung Systemaufruf (syscall) Betriebssystem

Mehr

Projektseminar Parallele Programmierung

Projektseminar Parallele Programmierung HTW Dresden WS 2014/2015 Organisatorisches Praktikum, 4 SWS Do. 15:00-18:20 Uhr, Z136c, 2 Doppelstunden o.g. Termin ist als Treffpunkt zu verstehen Labore Z 136c / Z 355 sind Montag und Donnerstag 15:00-18:20

Mehr

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009

Einführung. Übungen zur Vorlesung Virtuelle Maschinen. Stefan Potyra. SoSe 2009 Einführung Übungen zur Vorlesung Virtuelle Maschinen Stefan Potyra Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SoSe 2009 Übungsaufgaben 1 Entwickeln

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

Smartphone Entwicklung mit Android und Java

Smartphone Entwicklung mit Android und Java Smartphone Entwicklung mit Android und Java predic8 GmbH Moltkestr. 40 53173 Bonn Tel: (0228)5552576-0 www.predic8.de info@predic8.de Was ist Android Offene Plattform für mobile Geräte Software Kompletter

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Maren Bennewitz Systeme I: Betriebssysteme Kapitel 4 Prozesse Maren Bennewitz Version 21.11.2012 1 Begrüßung Heute ist Tag der offenen Tür Willkommen allen Schülerinnen und Schülern! 2 Testat nach Weihnachten Mittwoch

Mehr

Echtzeit-Multitasking

Echtzeit-Multitasking Technische Informatik Klaus-Dieter Thies Echtzeit-Multitasking Memory Management und System Design im Protected Mode der x86/pentium-architektur. Shaker Verlag Aachen 2002 Die Deutsche Bibliothek - CIP-Einheitsaufnahme

Mehr

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015 Ziele der Übung Aufgabe 1 Aufbau und Aufruf von Funktionen in Assembler Codeanalyse

Mehr

GPU-Programmierung: OpenCL

GPU-Programmierung: OpenCL GPU-Programmierung: OpenCL Markus Hauschild Seminar: Multicore Programmierung Sommerstemester 2009 04.06.2009 1 Inhaltsverzeichnis 1 GPU-Programmierung 3 1.1 Entwicklung von Grafikkarten..................

Mehr

Rechnerorganisation und Rechnerentwurf

Rechnerorganisation und Rechnerentwurf De Gruyter Studium Rechnerorganisation und Rechnerentwurf Die Hardware/Software-Schnittstelle Bearbeitet von David Patterson, John LeRoy Hennessy 5., erweiterte Auflage 2016. Taschenbuch. XIX, 814 S. Softcover

Mehr

Automatisches Multi-GPU Scheduling in OpenCL

Automatisches Multi-GPU Scheduling in OpenCL Automatisches Multi-GPU Scheduling in OpenCL vorgelegt von Dipl.-Math. Wolfgang Welz Diplomarbeit am Fachgebiet Kommunikations- und Betriebssysteme Prof. Dr. Hans-Ulrich Heiß Institut für Telekommunikationssysteme

Mehr

GPGPU Architectures - Compiler Techniques and Applications SS 2012

GPGPU Architectures - Compiler Techniques and Applications SS 2012 Seminar on GPGPU Architectures - Compiler Techniques and Applications SS 2012 Embedded Systems Group Department of Computer Science University of Kaiserslautern Preface The widespread use of so-called

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

Echtzeitbetriebssysteme

Echtzeitbetriebssysteme Speicherverwaltung (Memory Management) Aufgaben der Memory-Management-Unit ist l der Speicherschutz und l die Adressumsetzung Wird durch Hardware unterstützt l Memory Management Unit (MMU) l MMU wird vom

Mehr

Convey, Hybrid-Core Computing

Convey, Hybrid-Core Computing Convey, Hybrid-Core Computing Vortrag im Rahmen des Seminars Ausgewählte Themen in Hardwareentwurf und Optik HWS 09 Universität Mannheim Markus Müller 1 Inhalt Hybrid-Core Computing? Convey HC-1 Überblick

Mehr

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04.

Institut für Informatik Prof. Dr. D. Hogrefe Dipl.-Inf. R. Soltwisch, Dipl.-Inform. M. Ebner, Prof. Dr. D. Hogrefe Informatik II - SS 04. Kontrollstrukturen Informatik II SS 2004 Teil 4: Assembler Programmierung Sprünge (bedingte und unbedingte) If-then-else, Case Loop (n Durchläufe) While (Abbruchbedingung) Institut für Informatik Prof.

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

Seminar GPU-Programmierung/Parallelverarbeitung

Seminar GPU-Programmierung/Parallelverarbeitung Seite iv Literaturverzeichnis 1) Bengel, G.; et al.: Masterkurs Parallele und Verteilte Systeme. Vieweg + Teubner, Wiesbaden, 2008. 2) Breshears, C.: The Art of Concurrency - A Thread Monkey's Guide to

Mehr

Moderne parallele Rechnerarchitekturen

Moderne parallele Rechnerarchitekturen Seminar im WS0708 Moderne parallele Rechnerarchitekturen Prof. Sergei Gorlatch Dipl.-Inf. Maraike Schellmann schellmann@uni-muenster.de Einsteinstr. 62, Raum 710, Tel. 83-32744 Dipl.-Inf. Philipp Kegel

Mehr