GPU-Programmierung: OpenCL
|
|
|
- Heini Geier
- vor 9 Jahren
- Abrufe
Transkript
1 GPU-Programmierung: OpenCL Markus Hauschild Seminar: Multicore Programmierung Sommerstemester
2 Inhaltsverzeichnis 1 GPU-Programmierung Entwicklung von Grafikkarten Einsatzgebiete von GPU-Computing Entwicklung von GPU-Computing Shader in OpenGL/DirectX BrookGPU CUDA OpenCL Entwicklung Architektur Execution Model Command-queue Speichermodell Spracheigenschaften Vergleich mit CUDA Beispiel Besonderheiten Verfügbrkeit Literatur 12 2
3 1 GPU-Programmierung Unter GPU-Computing versteht man die Nutzung der Grafikkarte zur Berechnung allgemeiner Probleme. Für GPU-Computing spricht unter anderem die günstige Hardware, da es sich durch die weite Verbreitung von PC-Spielen um ein in großen Mengen hergestelltes Produkt handelt. Außerdem kann man bei geeiegneten Algorithmen beziehungsweise Problemen einen Speedup vom Faktor 10 bis 100 gegenüber CPUs erreichen. [OHL + 08] So bieten moderne Grafikkarten bis zu 800 Recheneinheiten, 1300 GFlops an Rechenleistung und eine Anbindung des Speichers mit bis zu 120 GByte/s. 1.1 Entwicklung von Grafikkarten Abbildung 1: GPU-Pipeline (nach [Owe07]) Das Diagramm zeigt links eine vereinfachte Grafikpipeline und rechts die Umsetzung in Hardware. In einer Grafikanwendung werden Geometriedaten, typischerweise Dreiecke, an die Grafikkarte übertragen und durchlaufen dabei einige Schritte bei denen sie beleuchtet und auf die Bildschirmebene abgebildet werden. Application stellt hier die Grafikanwendung dar. Command steht für die Verarbeitung der Befehle der Grafikanwendung. 3
4 Vertex: In dieser Phase werden die einzelnen Eckpunkte in die Bildschirmebene projiziert und durch Interaktion mit den Lichtquellen beleuchtet. Hierbei können mehrere Eckpunkte parallel verarbeitet werden. Geometry: Hier können unter Umständen neue Geometrieobjekte aus vorhandenen erzeugt werden, die dann aber wieder die Vertex-Phase durchlaufen. Rasterization: Als Rasterisierung wird der Prozess bezeichnet, bei dem berechnet wird, welche Pixel auf der Bildschirmebene von welchen Dreiecken überdeckt werden. Für jeden Pixel wird für jedes Dreieck von dem er überdeckt wird ein sogenanntes Fragment erzeugt. Fragment: Hier wird jedem Fragment ein Farbwert zugewiesen, dafür können auch Daten aus Texturen (1- oder 2-dimensionalen Bildern, die auf Oberflächen abgebildet werden) verwendet werden. Display: Zulezt wird das Finale Bild aus den Fragmenten zusammengesetzt. Normalerweise wird für jeden Pixel das Fragment mit dem geringsten Abstand zur Kamera genommen. Ursprünglich waren die eingefärbten Teile der Pipeline nicht programmierbar sondern nur konfigurierbar. So konnte der Programmierer zwar jedem Vertex und der Lichtquelle eine Farbe und Position zuweisen, jenoch nicht die Art der Interaktion bestimmen. Genau diese Programmierbarkeit ist aber für komplexere und realistischere Grafikeffekte notwendig und wird durch sogenannte Shader erreicht, die Operationen pro Vertex oder Fragment ausführen können. Neuere Geometry- Shader erlauben die Erzeugung von neuen Objekten aus vorhandenen Geometriedaten. In diesem Beispiel sind die Shader als sogenannte Unified Shader ausgeführt sind, d.h. es gibt nur eine Hardwareeinheit die alle Arten von Shadern abarbeiten kann. Ursprünglich hatten die verschiedenen Shader getrennte Hardwareeinheiten und eigene Instruktionssätze. Der Vorteil an Unified Shadern gegenüber getrennten Shadern für Vertex, Geometry und Fragment ist, dass bei ungleichmäßiger Lastverteilung auf die Shaderarten nicht mehr die jeweilige Shadereinheit den Flaschenhals der Pipeline bildet. Der Vorteil aus Sicht des GPU-Computing ist, dass man nicht mehr manuell die Aufgaben auf die anderen Shader verteilen muss, sofern dies überhaupt sinnvoll möglich ist. Einen tieferen Einblick in die Architektur von Grafikkarten erlauben z.b. [Owe07] oder [OHL + 08] 1.2 Einsatzgebiete von GPU-Computing GPU-Computing eigent sich allgemein für Streamcomputing und Anwendungen mit hoher Datenparallelität. 4
5 Darunter fallen zum Beispiel Anwendungen aus der Signalverarbeitung sowie die Verarbeitung von Audio, Bild und Videodaten. So gibt es zum Beispiel einen Trend zu Videoencodierungsprogrammen mit CUDA-Unterstützung. Weitere Einsatzgebiete sind Raytracing, Kryptographie sowie physikalische Simulationen und Physikeffekte für Computerspiele. 1.3 Entwicklung von GPU-Computing Im folgenden Abschnitt soll die Entwickung des GPU-Computing anhand einiger Sprachen und APIs nachvollzogen werden Shader in OpenGL/DirectX Zu Beginn der Entwicklung des GPU-Computing musste man auf bestehende APIs zurückgreifen, die eigentlich für die Darstellung von 3D-Grafik gedacht sind: OpenGL und DirectX bzw deren Shadersprachen. Die erste wissenschaftliche Nutzung wurde von DirectX-9-kompatiblen Grafikkarten ermöglicht, die Gleitkommazahlen in Shaderprogrammen verarbeiten können. Jedoch gehen einige Nachteile mit der Nutzung von Grafik-APIs einher: Algorithmen müssen umständlich als Pixel-Shader entworfen werden. Die zu verarbeitenden Daten müssen manuell als 1D oder 2D-Texturen verpackt und an die Grafikkarte übertragen werden. Die Texturen müssen zudem eine Größe von 2 n 2 m einhalten und dürfen je nach Hardware und Treiber meist nicht größer als sein. Um alle aufgeführten Sprachen vergleichen zu können soll die folgende Berechnung in C als Beispiel dienen: f o r ( i n t i =0; i<n; i++) { z [ i ] = alpha x [ i ] + y [ i ] ; } Als Shader in Cg (C for graphics) sieht das Beispiel (nach [Göd07]) so aus: f l o a t 4 saxpy ( f l o a t 2 coords : TEXCOORD0, uniform samplerrect texturey, uniform samplerrect texturex, uniform f l o a t alpha ) : COLOR { f l o a t 4 y = texrect( texturey, coords ) ; f l o a t 4 x = texrect( texturex, coords ) ; return alpha x + y ; 5
6 } An sich mag das oben gezeigte Beispiel noch recht harmlos aussehen, jedoch ist in der Hostanwendung (also dem Programm, das auf der CPU läuft) noch ein Grafikkontext zu erzeugen und diverse andere API-Aufrufe zu tätigen, die nichts mit dem eigentlichen Algorithmus zu tun haben. Einen guten Überblick darüber kann man in diesem GPGPU-Tutorial erlangen: [Göd07] Man kann also sagen dass diese Art GPU-Computing ein Proof of Concept darstellt, dass sich Grafikkarten für allgemeine Berechnungen eigenen und Speedup erziehen können BrookGPU Das seit 2003 an der Stanford University entwickelte BrookGPU bietet eine Abstraktion der Shaderprogrammierung für Grafikkarten. BrookGPU befreit den Anwender von allen Aufrufen der Grafik-API und bietet einfache Methoden um Daten in sogenannte Streams zu verpacken. Desweiteren wird mit BrookGPU das Konzept eines kernels eingeführt. In Brook ist ein kernel eine Funktion die für jedes Element des Ausgabestreams aufgerufen wird und entsprechend Elemente des Eingabestreams und skalare Eingaben erhält. Als Nachteil wäre aufzuführen dass BrookGPU nur eine Abstraktion der Grafik-API ist und nur Shader aus den kerneln erzeugt. Somit ist keine Nutzung von Scratchpads (lokale schnelle Zwischenspeicher) oder ähnlichen Erweiterungen der Hardware möglich. Außerdem ist nur Streamcomputing mögich, d.h. es sind keine Arrays als Parameter für kernel erlaubt und man hat somit keinen wahlfreien Zugriff auf die zu verarbeitenden Elemente. Desweiteren können Streams wie Texturen nur maximal zwei Dimensionen haben. Das Beispiel als BrookGPU kernel: k e r n e l void k ( f l o a t y<>, f l o a t x<>, f l o a t alpha, out f l o a t z<>) { z = alpha x + y ; } CUDA CUDA ist eine von Nvidia speziell für GPU-Computing entwickelte API, die eine direkte Ausführung auf der Hardware erlaubt ohne den Ballast eines Grafikkontexts. Außerdem werden statt Streams nun Arrays als Parameter 6
7 für kernel genutzt womit ein wahlfreier Zugriff auf Daten ermöglicht wird. Zusammen mit der Gruppierung und Indizierung von Threads, ist damit ein wahlfreier Zugriff auf die Arrays möglich, jedoch hat sich hier der Programmierer selbst darum zu kümmern welche kernel-instanzen welche Daten verarbeiten. Die Gruppen von Threads werden dann entsprechend auf Hardwareeinheiten abgebildet, die bei regulären Zugriffsmustern auf den Speicher der Grafikkarte eine Hohe Speicherbandbreite bieten. Dadurch dass CUDA direkten Zugriff auf die Hardware hat ist auch die Nutzung des Scratchpad möglich, einem schnellen Zwischenspeicher der jeweils einer Gruppe von Threads zur Verfügung steht. Ein Nachteil an CUDA ist, dass es nur mit Nvidia Grafikkarten funktioniert. Weiteres Probleme sind die unzureichende Fehlerbehandlung in kerneln und das eingeschränkte debugging durch Softwareemulation der Hardware. Das Beispiel als CUDA kernel (nach [Nvi09c]): { } g l o b a l void k ( f l o a t x, f l o a t y, f l o a t alpha, f l o a t z ) i n t i = threadidx. x + blockdim. x blockidx. x ; z [ i ] = alpha x [ i ] + y [ i ] ; 2 OpenCL 2.1 Entwicklung OpenCL ist ein offener Standard, der von der Khronos Group betreut wird, die unter anderem auch für OpenGL verantwortlich ist. Initiiert wurde Open- CL von Apple, AMD, Intel und Nvidia. Die OpenCL working group wurde im Juni 2008 bei Khronos eingerichtet. In der Zeit bis zur Fertigstellung der Spezifikation im Dezember 2008 sind viele weitere Firmen der working group beigetreten, wie zum Beispiel Spieleentwickler wie Blizzard oder weitere Prozessorhersteller wie IBM, Sun und ARM. Die schnelle Verabschiedung des Standards ist dadurch zu erklären, dass viele Konzepte aus CUDA übernommen wurden. 7
8 Abbildung 2: OpenCL Platform Model (nach [Khr09]) 2.2 Architektur OpenCL bietet eine Abtraktion über ein oder mehrere sogenante Compute Devices (z.b. Grafikkarten), die aus mehren Compute Units bestehen, die wiederum mehrere Processing Elements besitzen. Eine Instanz eines kernel wird dabei auf einem Processing Element ausgeführt Execution Model Ein OpenCL Programm besteht aus einer Host-Anwendung, die sich um die Initialisierung der Daten und die Speicherverwaltung kümmert. Desweiteren enthält die Host-Anwendung alle kernel. Ein kernel ist ein Block ausführbaren Codes, ähnlich einer C-Funktion. Das Host-Programm führt den kernel über einem Indexram mit 1-3 Dimensionen (NDRange) aus. Eine Instanz eines Kernels wird in OpenCL- Terminologie als work-item bezeichnet. Ein work-item hat eine global eindeutige ID aus dem Indexraum. Work-items werden in work-groups gruppiert, die eine eindeutige work-group ID haben. Außerdem hat jedes workitem eine innerhalb einer work-group eindeutige ID. Über die IDs ist es dem Programmierer überlassen die Arbeit unter den Threads aufzuteilen, indem jeder Thread je nach ID einen anderen Teil der Daten bearbeitet. 8
9 Abbildung 3: OpenCL Execution Model (nach [Khr09]) Command-queue In OpenCL werden einige Befehle über die Command-queue abgearbeitet. Dies sind Befehle zur Ausführung eines kernel, Befehle für den Datentransfer zwischen Hauptspeicher und dem Speicher des Compute Device. Desweiteren können Synchronisationsbefehle eingereiht werden, die Beispielsweise einen Datentransfer auf die Ausführung eines kernels warten lassen Speichermodell In OpenCL gibt es folgende Adressräume: Private für Daten die zu einem work-item gehören. Local für Datren die zu einer work-group gehören. Global für Daten auf von allen work-items aus allen work-groups aus zugegriffen werden kann. Sowie constant für read-only Daten. Die jeweilige OpenCL-Implementierung versucht diese Hierarchie so gut wie möglich auf die jeweilige Hardware abzubilden. In OpenCL ist die Konsistenz der Daten im Speicher nicht immer garantiert. So sind innerhalb einer work-group nach einer Barriersynchronisation Daten aus local und global Bereichen konsistent, jedoch wird für global zugreifbare Daten keine Konsistenz über die Grenzen einer work-group hinweg garantiert. 9
10 Abbildung 4: OpenCL Memory Model (nach [Khr09]) 2.3 Spracheigenschaften OpenCL erlaubt innerhalb der kernel im wesentlichen C99 mit einigen Ausnahmen. So sind Funktionspointer und rekursive kernel-aufrufe nicht erlaubt. Ebenso werden Arrays variabler Länge und structs nicht unterstützt. Einige Features sind in OpenCL nur optional über Erweiterungen verfügbar, sofern diese von der Hardware unterstützt werden. Darunter fallen unter anderem Gleitkommazahlen mit doppelter Genauigkeit sowie atomare Funktionen wie increment. Weitere technische Einzelheiten finden sich in den Folien zur Vorstellung von OpenCL ([Khr09]). 10
11 2.4 Vergleich mit CUDA Bei einem ersten Vergleich mit CUDA fällt auf, dass sich viele API-Befehle ähneln, jedoch unterschiedliche Parameter benötigen. So müssen zum Beispiel in OpenCL alle Pointer mit einem adress space qualifier versehen werden, der angibt wo sich das referenzierte Datum befindet. Desweiteren werden alle Speichertransfers in OpenCL über die Command-Queue abgewickelt. Ein weiterer Unterschied besteht darin, dass OpenCL die kernel erst zur Laufzeit für die entsprechende Platform kompiliert. 2.5 Beispiel Das Beispiel als OpenCL kernel: { } k e r n e l void k ( g l o b a l const f l o a t y, g l o b a l const f l o a t x, g l o b a l const f l o a t alpha, g l o b a l f l o a t z ) i n t index = g e t g l o b a l i d ( 0 ) ; z [ index ] = alpha x [ index ] + y [ index ] ; 2.6 Besonderheiten Verglichen mit anderen Sprachen und APIs im Bereich des GPU-Computing hebt sich OpenCL besonders dadurch hervor, dass neben neueren Grafikkarten von AMD/ATI und Nvidia diverse weitere Platformen unterstützt werden. So soll es Treiber für den Intel Larrabee, den Cell und andere CPUs geben. Desweiteren enthält OpenCL ein Profil für embedded und mobile Devices, das unter anderem eine geringere Genauigkeit bei Gleitkommaoperationen fordert. 2.7 Verfügbrkeit Da OpenCL noch relativ neu ist, sind zur Zeit noch keine Treiber verfügbar. Von AMD/ATI ist ein Treiber für das zweite Halbjahr 2009 angekündigt. [ATI09] Von Nvidia sind Beta-Treiber für registrierte Entwickler seit 20. April 2009 verfügbar. [Nvi09a] Nvidia hat die Treiber bereits zur Zertifizierung bei der Khronos Group eingereicht. [Nvi09b] 11
12 Literatur [ATI09] ATI. A Brief History of General Purpose (GPGPU) Computing. Website, Available online at technology/streamcomputing/gpgpu_history.html; visited on June 2nd [Göd07] Dominik Göddeke. GPGPU::Basic Math Tutorial. Website, Available online at ~goeddeke/gpgpu/tutorial.html; visited on May 28th [Khr09] Khronos Group. OpenCL - The Open Standard for Heterogeneous Parallel Programming, February Available online at opencl_overview.pdf. [Nvi09a] Nvidia. NVIDIA Releases OpenCL Driver To Developers. Website, April Available online at object/io_ html; visited on May 28th [Nvi09b] Nvidia. NVIDIA SUBMITS OPENCL 1.0 DRIVER TO KHRONOS FOR CONFORMANCE CERTIFICATION FOR WINDOWS AND LINUX. Website, April Available online at visited on May 28th [Nvi09c] Nvidia. OpenCL JumpStart Guide, Available online at OpenCL_JumpStart_Guide.pdf. [OHL + 08] J.D. Owens, M. Houston, D. Luebke, S. Green, J.E. Stone, and J.C. Phillips. GPU Computing. Proceedings of the IEEE, 96(5): , May [Owe07] John Owens. GPU Architecture Overview. SIGGRAPH, Available online at 02-gpu-architecture-overview-s07.pdf. 12
GPU-Programmierung: OpenCL
Seminar: Multicore Programmierung Sommerstemester 2009 04.06.2009 Inhaltsverzeichnis 1 GPU-Programmierung von Grafikkarten von GPU-Computing 2 Architektur Spracheigenschaften Vergleich mit CUDA Beispiel
OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer
OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell
Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit
Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer
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
Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)
Fakultätsname XYZ Fachrichtung XYZ Institutsname XYZ, Professur XYZ Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs) im Rahmen des Proseminars Technische Informatik Juni
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:
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
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
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
Stream Processing und High- Level GPGPU Sprachen
Stream Processing und High- Level GPGPU Sprachen Seminar Programmierung von Grafikkarten Jens Breitbart Problem 5000% 4000% 3000% 2000% Rechenleistung: +71% pro Jahr Bandbreite: +25% pro Jahr Zugriffszeit:
GPGPU-Programmierung
12 GPGPU-Programmierung 2013/04/25 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation (1) General Purpose Computing on
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
GPGPU-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
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.
Einführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg
GPU-Versuch [email protected] Friedrich-Alexander-Universität Erlangen-Nürnberg Praktikum Parallele Rechnerarchitekturen SS2014 Outline 1 Einführung 2 Outlook 1 Einführung 2 Eine kurze Geschichte
CUDA Workshop. Ausblick. Daniel Tenbrinck
CUDA Workshop Ausblick Daniel Tenbrinck Computer Vision and Pattern Recognition Group Institut für Informatik Westfälische Wilhelms-Universität Münster 03.Juli 2009 Folie: 1 / 10 Daniel Tenbrinck CUDA
Grafikkarten-Architektur
> Grafikkarten-Architektur Parallele Strukturen in der GPU Name: Sebastian Albers E-Mail: [email protected] 2 > Inhalt > CPU und GPU im Vergleich > Rendering-Pipeline > Shader > GPGPU > Nvidia Tesla-Architektur
OpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer [email protected].
OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer [email protected] Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ
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
Grundlagen von CUDA, Sprachtypische Elemente
Grundlagen von CUDA, Sprachtypische Elemente Stefan Maskanitz 03.07.2009 CUDA Grundlagen 1 Übersicht 1. Einleitung 2. Spracheigenschaften a. s, Blocks und Grids b. Speicherorganistion c. Fehlerbehandlung
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
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
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
Computergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche
Computer Graphics Shader
Computer Graphics Shader Sven Janusch Inhalt Fixed Function Pipeline Programmable Pipeline Implementierung Applikation Beispiel Sven Janusch 2 Fixed Function Pipeline T&L Pipeline (Transformation and Lighting)
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
Wiederholung. 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)
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
OpenGL. (Open Graphic Library)
OpenGL (Open Graphic Library) Agenda Was ist OpenGL eigentlich? Geschichte Vor- und Nachteile Arbeitsweise glscene OpenGL per Hand Debugging Trend Was ist OpenGL eigentlich? OpenGL ist eine Spezifikation
Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung
CUDA und Python Christian Wilms Integriertes Seminar Projekt Bildverarbeitung Universität Hamburg WiSe 2013/14 12. Dezember 2013 Christian CUDA und Python 1 Gliederung 1 Motivation 2 (GP)GPU 3 CUDA 4 Zusammenfassung
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
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
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
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
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
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
Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern
Automatische OpenCL-Code-Analyse zur Bestimmung von Speicherzugriffsmustern Bachelorarbeit Moritz Lüdecke 8. Juli 2014 INSTITUT FÜR TECHNISCHE INFORMATIK - LEHRSTUHL FÜR RECHNERARCHITEKTUR UND PARALLELVERARBEITUNG
OpenCL Implementierung von OpenCV Funktionen
Multi-Core Architectures and Programming OpenCL Implementierung von OpenCV Funktionen [email protected] Hardware/Software Co-Design August 18, 2011 1 Table of content 1 OpenCL
Pthreads. David Klaftenegger. Seminar: Multicore Programmierung Sommersemester
Seminar: Multicore Programmierung Sommersemester 2009 16.07.2009 Inhaltsverzeichnis 1 Speichermodell 2 3 Implementierungsvielfalt Prioritätsinversion 4 Threads Speichermodell Was sind Threads innerhalb
General-purpose computing on GPUs
Seminar Multiprocesser on Chip Seminararbeit General-purpose computing on GPUs Institut für Informatik Universität Potsdam eingereicht von: Michael Winkelmann (738901) Sommersemester 2010 Zusammenfassung
Prozessor- und Rechnerarchitekturen (Master)
Prozessor- und Rechnerarchitekturen (Master) Themen am 28.06.17: Semesterrückblick, Terminplanung Ihrer Vorträge ProRecArc17_V10 Ulrich Schaarschmidt HS Düsseldorf, SS 2017 V1 (5.4.): Termine + mögliche
Echtzeitfähige hige Verfahren in der Computergrafik. Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM
Echtzeitfähige hige Verfahren in der Computergrafik Prof. Dr. Rüdiger R Westermann Lehrstuhl für f r Informatik Computer Grafik und Visualisierung TUM Lehr- und Forschungsinhalte Visualisierung Darstellung
Cell and Larrabee Microarchitecture
Cell and Larrabee Microarchitecture Benjamin Grund Dominik Wolfert Universität Erlangen-Nürnberg 1 Übersicht Einleitung Herkömmliche Prozessorarchitekturen Motivation für Entwicklung neuer Architekturen
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
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
OpenGL und die Fixed-Function-Pipeline
OpenGL und die Fixed-Function-Pipeline Proseminar Game Design WS 07/08 Jan-Hendrik Behrmann Einführung In modernen Computerspielen hat sich inzwischen die Darstellung der Spielwelt in dreidimensionaler
GPGPU-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
Shader. Computer Graphics: Shader
Computer Graphics Computer Graphics Shader Computer Graphics: Shader Inhalt Pipeline Memory Resources Input-Assembler Vertex-Shader Geometry-Shader & Stream-Output Rasterizer Pixel-Shader Output-Merger
Aktuelle Grafikleistungen
Aktuelle Grafikleistungen Alexander Hötzendorfer Universität Ulm 03. Juli 2007 Inhalt Übersicht Aktuelle Techniken HDR-Lighting Tessellation Aufbau der Rendering-Pipeline Shader Vertex-Shader Geometry-Shader
GPU 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);
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
DirectX und OpenGL. Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006
DirectX und OpenGL Proseminar Multimedia-Hardwareerweiterungen Michel Weimerskirch, 15. Februar 2006 2 Inhalt Einleitung Übersicht DirectX und Komponenten Übersicht OpenGL Sprachlicher Aufbau OpenGL Sprachlicher
Seminar: Grafikprogrammierung
Game Developer Converence 08 Seminar: Grafikprogrammierung Alexander Weggerle 17.04.08 Seite 2 Einführung Themenüberblick Organisatorisches Seminarablauf liches Seite 3 Einführung Seminar Motivation Vorbereitung
Grundlagen der Spieleprogrammierung
Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 8: Hardware Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch (Raytracing,
CPU, GPU und FPGA. CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017
CPU, GPU und FPGA, Bianca Forkel 21. November 2017 CPU, GPU und FPGA Inhalt CPU: Central Processing Unit GPU: Graphical Processing Unit FPGA: Field Programmable Gate Array 2 CPU Central Processing Unit
PRIP-Preis. Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten
Masterarbeit @ PRIP-Preis Effizientes Object Tracking durch Programmierung von Mehrkernprozessoren und Grafikkarten Michael Rauter Pattern Recognition and Image Processing Group Institute of Computer Aided
Parallele Algorithmen in der Bildverarbeitung
Seminar über Algorithmen - SoSe 2009 Parallele Algorithmen in der Bildverarbeitung von Christopher Keiner 1 Allgemeines 1.1 Einleitung Parallele Algorithmen gewinnen immer stärker an Bedeutung. Es existieren
Paralleler 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
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
Computergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 212-5-7 Noch Kapitel III: Transformationen 2D Rotation um freies Rotationszentrum y α P(p x, p y ) Ziel: Rotiere Punkte r i um Winkel α um P und erhalte
Raytracing in GA mittels OpenACC. Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt
Raytracing in GA mittels OpenACC Michael Burger, M.Sc. FG Scientific Computing TU Darmstadt [email protected] 05.11.12 FB Computer Science Scientific Computing Michael Burger 1 / 33 Agenda
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
Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke,
Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-04-17 Kapitel I OpenCL Einführung Allgemeines Open Compute Language: API für einheitliche parallele Programmierung heterogener
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
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
Hochleistungsrechnen in Darmstadt: Der Lichtenberg- Hochleistungsrechner. Dr. Andreas Wolf. Gruppenleiter Hochleistungsrechnen Hochschulrechenzentrum
Hochleistungsrechnen in Darmstadt: Der Lichtenberg- Hochleistungsrechner Dr. Andreas Wolf Gruppenleiter Hochleistungsrechnen Hochschulrechenzentrum Überblick Randbedingungen der HPC Beschaffung an der
Fachgebiet Programmiermethodik Prof. Dr. Claudia Leopold. Seminar Programmierung von Grafikkarten. GPGPU Basiskonzepte. von.
Fachgebiet Programmiermethodik Prof. Dr. Claudia Leopold Seminar Programmierung von Grafikkarten GPGPU Basiskonzepte von Marc Kirchhoff Inhaltsverzeichnis 1 Einleitung 2 2 Streams, Kernels und Prozessoren
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 [email protected] Abstract Diese Arbeit
Eine Einführung Computergrafik SS14 Timo Bourdon
Eine Einführung Computergrafik SS14 Timo Bourdon Organisatorisches Übung am Freitag den 11. Juli entfällt! Zum OpenGL-Übungsblatt OpenGL 3.0 oder höher notwendig (Shading Language 1.50 oder höher) CIP
Programmierbeispiele und Implementierung. Name: Michel Steuwer E-Mail: [email protected]
> Programmierbeispiele und Implementierung Name: Michel Steuwer E-Mail: [email protected] 2 > Übersicht > Matrix Vektor Multiplikation > Mandelbrotmenge / Apfelmännchen berechnen > Kantendetektion
