Ferienakademie Erik Muttersbach
|
|
- Anton Baumann
- vor 6 Jahren
- Abrufe
Transkript
1 Ferienakademie Erik Muttersbach
2 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 8. OpenCL 2
3 Grafikhardware, GPGPU, Brook 3
4 Typische Anwendung einer GPU: datenparallele Probleme (Pixel, Polygone ) hohe arithmetische Dichte wenig Flussteuerung SIMD Aktuelle Techdemo von NVIDIA zu DirectX 10 4
5 Die GPU besitzt wesentlich mehr Transistoren die der Datenverarbeitung dienen. 5
6 6
7 Erste Ansätze seit 1990 Grafikkarte fast nicht programmierbar Sehr starke Bindung an die Hardwareunterstütze Funktionen Brook C with Streams : Programmiermodell Stream: Menge von Datentypen die parallel verarbeitet werden können Brook+: Implementierung von AMD 7
8 Plattform zur Programmierung von NVIDIA GPUs GPU als Koprozessor zur CPU Erweitert Standard C um Sprachelemente 8
9 9
10 Kernel = der parallele Teil eines CUDA Programms Threads = Kernelinstanzen die auf der Hardware parallel ausgeführt werden (Anzahl: 5000+) 10
11 Threads sind 1-, 2-, oder 3- dimensional in Blocks angeordnet Blocks sind 2-dimensional in einem Grid angeordnet alle Threads eines Grids führen den gleichen Kernelcode aus 11
12 Threads eines Blocks können sich über Shared Memory synchronisieren und kommunizieren Shared Memory: klein, sehr schnell Alle Threads können nur über Global Memory kommunizieren: Global Memory: Gerätespeicher, groß, langsam, Zugriff für alle Threads und Host 12
13 13
14 14
15 Blocks werden Multiprozessoren zugeordnet Ale Threads eines Blocks werden auf dem gleichen Multiprozessor ausgeführt. Threads eines Blocks werden vom Prozessor in Warps (32 Threads) aufgeteilt Wenn keine konditionalen Codepfade vorhanden sind, werden die Threads eines Warps parallel abgearbeitet. Warps können hardware-unterstützt ihren Status wechseln (aktiv, inaktiv) 15
16 GPU Threads(SIMT) existieren in der Hardware Eigene Register, Program Counter, Stack und lokaler Speicher. SIMT Threads können hardwaregestützt den Status wechseln (aktiv/inaktiv) Latenz beim Speicherzugriff wird verdeckt divergente Codepfade werden berücksichtigt 16
17 17
18 18
19 19
20 Abstraktionsebene zwischen Anwendung und GPU: Architekturunabhängigkeit der Anwendung Zugriff auf GPU vereinfacht CUDA Libraries: CUFFT: Fast-Fourier-Transformation CUBLAS: Funktionen der Linearen Algebra 20
21 21
22 22
23 Allokation von globalem Speicher vom Host aus: cudaerror_t cudamalloc( void** devptr, size_t count ); vom Kernel aus: device int data[2]; Allokation von Shared Memory vom Kernel aus: shared int data[2]; Speicherfreigabe cudaerror_t cudafree(void* devptr); Speichertransfer zwischen GPU und Host: cudaerror_t cudamemcpy( void* dst, const void* src, size_t count, enum cudamemcpykind kind) 23
24 int main(void) { float *a_h, *b_h; float *a_d; int N = 1000; size_t size = N*sizeof(float); // pointers to host memory // pointer to device memory // allocate arrays on host a_h = (float *)malloc(size); b_h = (float *)malloc(size); // allocate array on device cudamalloc((void **)&a_d, size); // initialize data // copy data from host to device cudamemcpy(a_d, a_h, size, cudamemcpyhosttodevice); // do computations... // retrieve result from device and store it in b_h cudamemcpy(b_h, a_d, size, cudamemcpydevicetohost); } // cleanup free(a_h); free(b_h); cudafree(a_d); 24
25 Function Type Qualifiers: Ausgeführt auf Aufgerufen von device Device Device global Device Host host Host Host Besonderheiten device und global unterstützen keine Rekursion, keine statischen Variablen, keine variable Anzahl Parameter host und global kann zusammen verwendet werden 25
26 Jeder Aufruf eines Kernels verlangt eine Execution Configuraton: <<< dim3 Dg, dim3 Db [, size_t Ns [, cudastream_t S]]>>> Dg: Größe des Grids Dg.x * Dg.y = Blocks Db: Größe eines Blocks Db.x * Db.y * Db.z = Anzahl Threads pro Block // Kernel Declaration global void FuncA(float* parameter) { } // Kernel Call FuncA<<< Dg, Db>>>(parameter); 26
27 Synchronisation von Threads eines Blocks mittels: void syncthreads() Haben alle Threads diese Funktion erreicht wird die Ausführung fortgesetzt. Nur in nicht-konditionalem Code erlaubt 27
28 28
29 29
30 30
31 Speicherart Scope Eigenschaften 32bit Register Local Memory Thread On-chip Off-chip, uncached Shared Memory Block On-Chip, klein, schnell (wie Register) Global Memory Constant Memory Texture Memory Device Off-chip, uncached, groß(bis 4GB), Kernel I/O cached cached 31
32 Off-chip, typischerweise I/O für Threads langsam: 400 bis 600 Taktzyklen Latenz, diese kann aber durch genügend unabhängige Operationen verdeckt werden Zugriffe der Threads eines Half-Warps(16) werden vereinigt wenn die Threads eine der folgenden Wortlängen lesen: 32bit Wörter 64B Transaktion 64bit Wörter 128B Transaktion 128bit Wörter zwei 128B Transaktionen alle 16 Wörter im gleichen Segment(Größe = Transaktionsgröße) liegen die Threads sequenziell lesen: k. Thread liest k. Wort 32
33 COALESCED ACCESS NON-COALESCED 33
34 NON-COALESCED 34
35 Coalescing bei Compute Capability 1.2+ : Wenn Threads eins Half- Warps n verschiedene Segmente adressieren, werden n (möglichst kleine) Transaktionen benötigt. 35
36 36
37 Texture Memory Optimiert für den Fall das Threads eines Warps auf 2D Adressen mit räumlicher Nähe zugreifen Latenz: sh. Constant Memory Constant Memory Konstant: Threads read-only, der Host r/w Hardwareoptimiert für den Fall, das alle Threads eines Half-Warps die gleiche Adresse lesen Latenz Cache-Hit: wie ein Register Cache-Miss: bis zu mehrere hundert Taktzyklen 37
38 On-chip, so schnell wie Register wenn keine Bank Conflicts auftreten In gleich große Blöcke eingeteilt, sog. Memory Banks (32bit) Speicheroperationen vollständig parallel (optimal), wenn Threads eines Half-Warps auf unterschiedliche Banks zugreifen Bank-Conflict: Threads eines Half-Warps greifen auf gleiche Bank zu der Speicherzugriff auf die Memory Bank wird serialisiert Ausnahme: Broadcasting, d.h. alle Threads greifen auf gleiche Adresse zu 38
39 Nicht wirklich lokal, nur lokal im Scope eines Threads Off-chip im globalen Speicher Uncached Nutzung: Zu viele Variablen für Register Struktur für Register zu groß Compiler erkennt die Größe eines Arrays nicht als konstant 39
40 40
41 41
42 Typisches Memory Access Pattern (NVIDIA): 42
43 43
44 mit CUDA dem Profiler 44
45 Der CUDA Profiler kann 4 der folgenden Parameter pro Kernel messen: gld_incoherent: Number of non-coalesced global memory loads gld_coherent: Number of coalesced global memory loads gst_incoherent: Number of non-coalesced global memory stores gst_coherent: Number of coalesced global memory stores local_load: Number of local memory loads local_store: Number of local memory stores branch: Number of branch events taken by threads divergent_branch: Number of divergent branches within a warp instructions: instruction count warp_serialize: Number of threads in a warp that serialize based on address conflicts to shared or constant memory cta_launched: executed thread blocks 45
46 Konfigrationsdatei für ReverseArray.cu und ReverseArrayFast.cu: gld_coherent gld_incoherent gst_coherent gst_incoherent 46
47 ReverseArray.cu: method,gputime,cputime,occupancy,gld_incoherent,gld_coherent,gst_incoherent,gst_c oherent method=[ memcopy ] gputime=[ ] method=[ _Z17reverseArrayBlockPiS_ ] gputime=[ ] cputime=[ ] occupancy=[ ] gld_incoherent=[ 0 ] gld_coherent=[ 1952 ] gst_incoherent=[ ] gst_coherent=[ 0 ] method=[ memcopy ] gputime=[ ] ReverseArrayFast.cu: method,gputime,cputime,occupancy,gld_incoherent,gld_coherent,gst_incoherent,gst_ coherent method=[ memcopy ] gputime=[ ] method=[ _Z17reverseArrayBlockPiS_ ] gputime=[ ] cputime=[ ] occupancy=[ ] gld_incoherent=[ 0 ] gld_coherent=[ 2032 ] gst_incoherent=[ 0 ] gst_coherent=[ 8128 ] method=[ memcopy ] gputime=[ ] 47
48 48
49 Offener Standard zur parallelen Programmierung von heterogenen Systemen Zugehörige Spache: OpenCL C ähnlich NVIDIA s CUDA C Erweiterung Zurzeit nur von Mac OS X Snow Leopard unterstützt NVIDIA Unterstützung über CUDA geplant Unterstützung von OpenGL Ressourcen und Datentypen 49
50 50
51 Datentypen: half: 16 Bit Gleitkommazahl nach IEEE 754r Vektordatentypen: char, uchar, int, uiint als Vektordatenytpen: [Datentyp][Anzahl der Elemente] uchar4, float8, int16 image2d_t, image3d_t: Bilder sampler_t, event_t 51
52 Declaration Specifications ähnlich CUDA: 52
53 Komponentenweise Summe eines Arrays: kernel void vec_add ( global const float *a, global const float *b, global float *c) { int gid = get_global_id(0); c[gid] = a[gid] + b[gid]; } 53
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
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
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.
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
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
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-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
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
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
MehrOpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
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
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
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. (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
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
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
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
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
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
MehrGPU-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
MehrOne of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu
Bin Hu Algorithmen und Datenstrukturen 2 Arbeitsbereich fr Algorithmen und Datenstrukturen Institut fr Computergraphik und Algorithmen Technische Universität Wien One of the few resources increasing faster
MehrOptimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks
Fachhochschule Köln, Campus Gummersbach Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks 03.06.2009 Eugen Sewergin, B. Sc. Erstprüfer: Prof. Dr.
MehrGPU-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
MehrCUDA. 7. Vorlesung GPU Programmierung. Danke an Hendrik Lensch
CUDA 7. Vorlesung Thorsten Grosch Danke an Hendrik Lensch Parallele l Programmierung mit der GPU Bisher: GPU = OpenGL Pipeline mit Shadern Alles orientiert sich am Rendering Programme für Eckpunkte und
MehrFPGA Beschleuniger. Your Name. Armin Jeyrani Mamegani Your Organization (Line #2)
FPGA Beschleuniger 15.12.2008 Armin Jeyrani Mamegani Your Name HAW Hamburg Your Title Department Your Organization Informatik (Line #1) Your Organization (Line #2) Einleitung Wiederholung aus AW1: Handy
MehrCompute Unified Device Architecture (CUDA)
Compute Unified Device Architecture (CUDA) Thomas Koller 12. Februar 2012 Zusammenfassung Diese Ausarbeitung beschäftigt sich mit der Programmierung von Grafikkarten mittels CUDA. Bei bestimmten Berechnungen
MehrGPGPU 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
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
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
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
MehrDeklarationen in C. Prof. Dr. Margarita Esponda
Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.
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
MehrARM Cortex-M Prozessoren. Referat von Peter Voser Embedded Development GmbH
ARM Cortex-M Prozessoren Referat von Peter Voser Embedded Development GmbH SoC (System-on-Chip) www.embedded-development.ch 2 Instruction Sets ARM, Thumb, Thumb-2 32-bit ARM - verbesserte Rechenleistung
MehrSpezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe
Grafikprozessoren Spezialprozessoren zur Übernahme Grafik-spezifischer Aufgaben, vorrangig der Bildschirmausgabe 2D: Berechnung der Bildes aus einfachen Grafikprimitiven 3D: Bildaufbau aus räumlicher Beschreibung
MehrSicheres 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
MehrSicheres C Programmieren in Embedded Systemen ARM I (ARM7TMDI [1] ) Wintersemester 2010-2011
Sicheres C in Embedded Systemen ARM I (ARM7TMDI [1] ) Wintersemester 2010-2011 Dipl. Ing. (FH) Ebrecht Roland, Infineon Technologies AG M.Eng (Electronic Systems) Güller Markus, Infineon Technologies AG
MehrVirtueller Speicher. SS 2012 Grundlagen der Rechnerarchitektur Speicher 44
Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 44 Die Idee Virtuelle Adressen Prozess 1 Speicherblock 0 Speicherblock 1 Speicherblock 2 Speicherblock 3 Speicherblock 4 Speicherblock
MehrEchtzeit-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
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
MehrWie 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
MehrBetriebssysteme 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
MehrBibliotheks-basierte Virtualisierung
Dr.-Ing. Volkmar Sieh Department Informatik 4 Verteilte Systeme und Betriebssysteme Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2015/2016 V. Sieh Bibliotheks-basierte Virtualisierung (WS15/16)
MehrAutomatisches 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
MehrDie 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.
MehrGPGPU-Architekturen CUDA CUDA Beispiel OpenCL OpenCL Beispiel. CUDA & OpenCL. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg
CUDA und OpenCL Friedrich-Alexander-Universität Erlangen-Nürnberg 24. April 2012 Outline 1 GPGPU-Architekturen 2 CUDA 3 CUDA Beispiel 4 OpenCL 5 OpenCL Beispiel Outlook 1 GPGPU-Architekturen 2 CUDA 3 CUDA
MehrBetriebssysteme Übung 2. Tutorium System Calls & Multiprogramming
Betriebssysteme Übung 2. Tutorium System Calls & Multiprogramming Task Wiederholung 1 System SysCalls (1) Wozu? Sicherheit Stabilität Erfordert verschiedene modes of execution: user mode privileged mode
MehrEffizientes Memory Debugging in C/C++
Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten
MehrAlgorithmen für moderne Rechnerarchitekturen
Jörn Fischer j.fischer@hs-mannheim.de Willkommen zur Vorlesung Algorithmen für moderne Rechnerarchitekturen Vorstellung Zu meiner Person... 2 ALR - Jörn Fischer - j.fischer@hs-mannheim.de Büro: A113a Überblick
MehrHochleistungsrechnen Grafikkartenprogrammierung. Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen
Hochleistungsrechnen Grafikkartenprogrammierung Prof. Dr. Thomas Ludwig Universität Hamburg Informatik Wissenschaftliches Rechnen Übersicht Hintergrund und Entwicklung von GPGPU Programmierumgebungen &
MehrTECHNISCHE 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
MehrDie 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.
MehrPThreads. Pthreads. Jeder Hersteller hatte eine eigene Implementierung von Threads oder light weight processes
PThreads Prozesse und Threads Ein Unix-Prozess hat IDs (process,user,group) Umgebungsvariablen Verzeichnis Programmcode Register, Stack, Heap Dateideskriptoren, Signale message queues, pipes, shared memory
MehrVorlesung 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
MehrGrundlagen der Rechnerarchitektur
Grundlagen der Rechnerarchitektur Speicher Übersicht Speicherhierarchie Cache Grundlagen Verbessern der Cache Performance Virtueller Speicher SS 2012 Grundlagen der Rechnerarchitektur Speicher 2 Speicherhierarchie
MehrArithmetische und Logische Einheit (ALU)
Arithmetische und Logische Einheit (ALU) Enthält Blöcke für logische und arithmetische Operationen. n Bit Worte werden mit n hintereinander geschalteten 1 Bit ALUs bearbeitet. Steuerleitungen bestimmen
MehrParalleles 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
MehrAktuelle Trends und Herausforderungen in der Finite-Elemente-Simulation
Aktuelle Trends und Herausforderungen in der Finite-Elemente-Simulation Kai Diethelm GNS Gesellschaft für numerische Simulation mbh Braunschweig engineering software development Folie 1 Überblick Vorstellung
MehrUntersuchung und Vorstellung moderner Grafikchiparchitekturen
Fakultät Informatik, Institut für Technische Informatik, Professur für VLSI-Entwurfssysteme, Diagnostik und Architektur Untersuchung und Vorstellung moderner Grafikchiparchitekturen Hauptseminar Technische
MehrMikrocontroller-Programmierung
Mikrocontroller-Programmierung Anhand des HC12 Fabian Wiesel Überblick Überblick Mikrocontroller Überblick HC12 CPU Peripherie des DG128 Assemblerprogrammierung Mikrocontroller Leistungsfähigkeit: zwischen
MehrSmartphone 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
MehrTag der Umweltmeteorologie 12.05.2015. Michael Kunz
Tag der Umweltmeteorologie 12.05.2015 Michael Kunz Beschleunigung von Ausbreitungsmodellen durch Portierung auf Grafikkarten Einleitung Das GRAL/GRAMM-System Cuda-GRAL Ergebnisse Vergleich der Modellergebnisse
MehrGPU Programmierung. Thorsten Grosch
Thorsten Grosch Willkommen zur ersten Vorlesung! g Heute Organisatorisches Vorstellung von Team und Vorlesung Historischer Rückblick zu GPUs 2 Das Team Vorlesung Jun.-Prof. Thorsten Grosch AG Computervisualistik
MehrOracle AWR und ASH Analyse und Interpretation
Oracle AWR und ASH Analyse und Interpretation Seminarunterlage Version: 2.02 Version 2.02 vom 11. März 2013 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen
MehrTIn 1: Feedback Laboratories. Lecture 4 Data transfer. Question: What is the IP? Institut für Embedded Systems. Institut für Embedded Systems
Mitglied der Zürcher Fachhochschule TIn 1: Lecture 4 Data transfer Feedback Laboratories Question: What is the IP? Why do we NEED an IP? Lecture 3: Lernziele Moving data, the why s and wherefores Moving
MehrMemory Models. 17. September 2012
Memory Models 17. September 2012 Here Be Dragons In addition, programming idioms used by some programmers and used within Sun s Java Development Kit is not guaranteed to be valid according the existing
MehrLösung der zweidimensionalen Wirbeltransportgleichung auf NVIDIA Grafikkarten - Bachelorarbeit -
Lösung der zweidimensionalen Wirbeltransportgleichung auf NVIDIA Grafikkarten - Bachelorarbeit - Seminar des Fachgebiets Optimierung bei partiellen Differentialgleichungen 13. Januar 2011 Gliederung 1
MehrOPENCL. Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried
OPENCL Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried INFRASTRUCTURE Overview, Manuals https://faui36a.informatik.uni-erlangen.de/trac/puppet/wiki/systemlist https://faui36a.informatik.uni-erlangen.de/trac/puppet/wiki/slurmintroduction
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrProgramming Models for Cell BE
Hauptseminar MAP08 Programming Models for Cell BE Hannes Stadler, Sebastian Graf HannesStadler@gmx.de, sebgr@gmx.net Betreuung: Matthias Hartl, Hritam Dutta, Frank Hannig Hardware-Software-Co-Design Universität
MehrModellierung und Programmierung 1
Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {
Mehr11: Echtzeitbetriebssystem ucos-ii
11: Echtzeitbetriebssystem ucos-ii Sie lernen anhand aufeinander aufbauender Übungen, welche Möglichkeiten ein Echtzeitbetriebssystem wie das ucosii bietet und wie sich damit MC-Applikationen realisieren
MehrProseminar Rechnerarchitekturen. Parallelcomputer: Multiprozessorsysteme
wwwnet-texde Proseminar Rechnerarchitekturen Parallelcomputer: Multiprozessorsysteme Stefan Schumacher, , PGP Key http://wwwnet-texde/uni Id: mps-folientex,v
Mehrhttp://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/cuda/cuda.pdf 27. Januar 2016
Cuda - Compute Unied Device Architecture Dipl. Math. F. Braun Universität Regensburg Rechenzentrum http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/cuda/cuda.html http://www.uniregensburg.de/edv/kurs_info/brf09510/hpc/cuda/cuda.pdf
MehrDatenstrukturen, 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
MehrGrundlagen 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
MehrEinführung in den Einsatz von Objekt-Orientierung mit C++ I
Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen
MehrInstitut 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.
MehrUntersuchungen zur Abstraktion der GPU-Programmierung in Java am Beispiel Fluid-Simulation
Masterarbeit Fakultät Informatik Untersuchungen zur Abstraktion der GPU-Programmierung in Java am Beispiel Fluid-Simulation Matthias Klaÿ Kleiberweg 4 86199 Augsburg Tel: 0821 431552 E-Mail: matthias.klass
MehrGPGPU 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
MehrIntroduction Workshop 11th 12th November 2013
Introduction Workshop 11th 12th November 2013 Lecture I: Hardware and Applications Dr. Andreas Wolf Gruppenleiter Hochleistungsrechnen Hochschulrechenzentrum Overview Current and next System Hardware Sections
MehrJ.5 Die Java Virtual Machine
Java Virtual Machine Die Java Virtual Machine 22 Prof. Dr. Rainer Manthey Informatik II Java-Compiler und Java Virtual Machine Quellcode-Datei class C... javac D.java Java-Compiler - Dateien class class
MehrSeminar - Paralleles Rechnen auf Grafikkarten
Seminar - Paralleles Rechnen auf Grafikkarten Seminarvortrag: Übersicht über die Programmierung von Grafikkarten Marcus Schaber 05.05.2009 Betreuer: J. Kunkel, O. Mordvinova 05.05.2009 Marcus Schaber 1/33
MehrWelche Informatik-Kenntnisse bringen Sie mit?
Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt
MehrJava-Prozessoren. Die Java Virtual Machine spezifiziert... Java Instruktions-Satz. Datentypen. Operanden-Stack. Konstanten-Pool.
Die Java Virtual Machine spezifiziert... Java Instruktions-Satz Datentypen Operanden-Stack Konstanten-Pool Methoden-Area Heap für Laufzeit-Daten Class File Format 26 Die Java Virtual Machine Java Instruktions-Satz
MehrÜbersicht. C Funktionen. Funktion main. Funktionen. Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen
Übersicht Funktionsdefinition und und Funktionsaufruf Deklaration von Funktionen C Funktionen Gültigkeitsbereich und Speicherklasse Parameterübergabe Rückgabe des Funktionsresultats Mehr zu Funktionen
MehrTechnische 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
MehrGPU-BESCHLEUNIGTE PACKUNGSOPTIMIERUNG. André Müller, Johannes J. Schneider, Elmar Schömer
GPU-BESCHLEUNIGTE PACKUNGSOPTIMIERUNG André Müller, Johannes J. Schneider, Elmar Schömer BETRACHTETES PACKPROBLEM gegeben N = 5, 6,,50 harte Kugeln in Dimension d mit ganzzahligen Radien r i = 1,2,,N gesucht
MehrHORUS. Seminar "Ausgewählte Themen in Hardwareentwurf und Optik" im HWS Martin Scherer
HORUS Seminar "Ausgewählte Themen in Hardwareentwurf und Optik" im HWS 2006 Martin Scherer Horus Inhalt 1 Einführung 2 Cachekohärenz 3 ExtendiScale Architektur 4 Übertragungsbeispiele 5 Performance Erweiterungen
MehrName: Vorname: Matr.-Nr.: 4. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen stets ein mikroprogrammierbares Steuerwerk verwenden.
Name: Vorname: Matr.-Nr.: 4 Aufgabe 1 (8 Punkte) Entscheiden Sie, welche der folgenden Aussagen zum Thema CISC/RISC-Prinzipien korrekt sind. a) RISC-Architekturen müssen zur Decodierung von Maschinenbefehlen
MehrInstruktionssatz-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
MehrDatenpfad einer einfachen MIPS CPU
Datenpfad einer einfachen MIPS CPU Zugriff auf den Datenspeicher Grundlagen der Rechnerarchitektur Prozessor 19 Betrachten nun Load und Store Word Erinnerung, Instruktionen lw und sw sind vom I Typ Format:
MehrShangrila. 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
MehrMulticore-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
MehrFunktionale Programmiersprachen
Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte
MehrProtected User-Level DMA in SCI Shared Memory Umgebungen
Protected User-Level DMA in SCI Shared Memory Umgebungen Mario Trams University of Technology Chemnitz, Chair of Computer Architecture 6. Halle Chemnitz Seminar zu Parallelverarbeitung und Programmiersprachen
MehrSeminar 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
MehrHigh-Performance Bildverarbeitung (nicht nur) mit JAVA. Prof. Dr.Thomas Netzsch - Hochschule Darmstadt - University of Applied Sciences
High-Performance Bildverarbeitung (nicht nur) mit JAVA 1 High-Performance Bildverarbeitung (nicht nur) mit JAVA Fragen: wie kann ein typisches BV-Unternehmen wirtschaftlich an der aktuellen Hardwareentwicklung
MehrVersuchsziele Konzepte der parallelen Programmierung am Beispiel von Threads anwenden können. Einbau von Kontrollmechanismen mittels Semaphore.
Hochschule Harz Versuch: fcopy Mit Java FB Automatisierung und Informatik Betriebssysteme Thema: Kopieren einer Datei unter der Kontrolle von Semaphoren Versuchsziele Konzepte der parallelen Programmierung
MehrTeil VIII Von Neumann Rechner 1
Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only
Mehr