Fachgebiet Programmiermethodik Prof. Dr. Claudia Leopold. Seminar Programmierung von Grafikkarten. GPGPU Basiskonzepte. von.

Größe: px
Ab Seite anzeigen:

Download "Fachgebiet Programmiermethodik Prof. Dr. Claudia Leopold. Seminar Programmierung von Grafikkarten. GPGPU Basiskonzepte. von."

Transkript

1 Fachgebiet Programmiermethodik Prof. Dr. Claudia Leopold Seminar Programmierung von Grafikkarten GPGPU Basiskonzepte von Marc Kirchhoff

2 Inhaltsverzeichnis 1 Einleitung 2 2 Streams, Kernels und Prozessoren Einleitung Das Programmiermodell Streams Prozessoren Datenstrukturen auf der GPU Einfache Datentypen Multidimensionale Arrays Strukturen Dünn besetzte Datenstrukturen Algorithmen Einleitung Bitonic Merge Sort Zusammenfassung 10 Abbildungsverzeichnis 11 Literatur 11 1

3 1 Einleitung Das Grafikkarten gut für die Berechnung von Texturen, Grafiken und Bildern geeignet sind ist klar. Das es aber auch gute Gründe dafür gibt Grafikkarten im Bereich des General Purpose Computings einzusetzen, weiß vielleicht noch nicht jeder. Es gibt hauptsächlich zwei Gründe warum Grafikkarten für die Durchführung von allgemeinen Rechenaufgaben verwendet werden sollten: 1. Performance 2. Lastenverteilung 1. Performance: Wie aus Tabelle 1 leicht ersichtlich ist, sind aktuelle Grafikkarten herkömmlichen CPUs sowohl bei der reinen Rechenleistung als auch bei der Speicherbrandbreite weit überlegen. Fließkommaoperationen Speicherbrandbreite Geforce 6800 Ultra 60 GFlops 35 GB/s Geforce FX 5900 Ultra 20 GFlops 25,3 GB/s Pentium 4 3 GHz 6 GFlops 5,96 GB/s Tabelle 1: Geschwindigkeitsvergleich CPU/GPU 2. Lastenverteilung: Bei modernen Rechnern tritt außerdem oft der Fall ein, dass die GPU auf die CPU warten muss. Es gibt daher keinen Grund warum nicht Rechenaufgaben von der CPU auf den Grafikkartenprozessor (Graphics Processing Unit (GPU)) ausgelagert werden sollten. 2 Streams, Kernels und Prozessoren 2.1 Einleitung Der Grund dafür, dass die CPU nicht komplett durch die GPU ersetzt wird liegt darin, dass die GPU nur auf einer bestimmten Art von Daten besonders schnell Operationen ausführen kann. Die Abarbeitung dieser Daten muss zum einen mit einer hohen Parallelität 2

4 und zum anderen mit einer hohen arithmetischen Intensität möglich sein [1]. Das bedeutet, dass die Daten unabhängig voneinander berechnet werden können müssen und das die Anzahl der zur Abarbeitung der Daten benötigten mathematischen Operationen im Vergleich zu den benötigten Speicherzugriffen wesentlich höher sein sollte. Der Grund dafür, dass Grafikkarten gerade auf dieser Art von Daten besonders schnell Operationen ausführen können, liegt darin, dass die GPU natürlich hauptsächlich zur Bearbeitung von Grafikdaten entwickelt wurde, die naturgemäß diese Eigenschaften aufweißen. Soll z.b. die Helligkeit eines Bildes erhöht werden, so kann natürlich die Helligkeit jedes einzelnen Pixels unabhängig von jedem anderen Pixel erhöht werden. Um eine möglichst effiziente Abarbeitung solcher Daten zu ermöglichen, wurden GPUs als sogenannte Stream-Prozessoren konzipiert. Stream-Prozessoren arbeiten, im Gegensatz zu normalen seriellen Prozessoren, immer auf kompletten Datenströmen (Stream = Array gleicher Daten). Wobei die GPU etwas von diesem Modell abweicht und auch in der Lage ist auf bestimmmte Speicherbereiche wahlfrei zuzugreifen. Der große Unterschied zwischen den seriellen- und den Stream-Prozessoren besteht also darin, dass serielle Prozessoren auf beliebigen Datenelementen arbeiten und daher auf eine geringe Latenz in den Berechnungen optimiert wurden. Stream-Prozessoren hingegen arbeiten auf großen homogenen Datenmengen und sind auf einen hohen Durchsatz optimiert. 2.2 Das Programmiermodell Dadurch das die GPU als Stream- und nicht als serieller-prozessor konzipiert wurde, ergibt sich gegenüber der seriellen CPU ein völlig anderes Programmiermodell [3]. Ein GPU-Programm ist dabei als eine Folge von Operationen auf Datenströmen aufgebaut. Die Abarbeitung erfolgt dann indem die Instruktionen eines Kernels (kleines Programm) auf die Elemente eines Streams angewandt werden. Ein Kernel führt also auf jedem Element eines Streams eine Reihe von Instruktionen aus und erzeugt als Ergebnis einen Output-Stream. Um den Unterschied weiter zu verdeutlichen folgt ein Beispielprogramm. Das linke Quellcodestück in Abbildung 1 zeigt eine normale for-schleife die über ein Array ( data ) läuft und jedes Array-Element an eine Funktion namens loopbody übergibt, wobei die Funktion loopbody irgendwelche be- 3

5 Abbildung 1: Links ein Programm für einen seriellen Prozessor. Rechts das äquivalente Programm für einen Stream-Prozessor. [2] liebigen Operationen auf diesen Array-Elementen ausführen kann. Das rechte Quellcodestück zeigt das äquivalente Programm für einen Stream-Prozessor. Anhand dieses Beispiels kann man sehr eindrucksvoll die Auswirkungen des Stream-Modells auf die konkrete Programmierung erkennen. Als erstes wird der benötigte Datenstrom angegeben, danach wird der Kernel spezifiziert, es wird also festgelegt welche Operationen auf den Stream- Elementen ausgeführt werden sollen (in diesem Fall soll die Funktion loop- Body auf den Stream-Elementen ausgeführt werden) und schließlich wird ein Output-Datenstrom erzeugt indem dieser Kernel auf dem Input-Datenstrom ausgeführt wird. 2.3 Streams Innerhalb einer GPU existieren vier unterschiedliche Arten von Streams [3]: Vertex-Streams Frame-Buffer-Streams Texture-Streams Fragment-Streams Der Textur-Stream nimmt insofern eine Sonderrolle ein, da er der einzige Stream ist der den Fragment-Prozessoren und Vertex Shader 3.0 vorausgesetzt, auch den Vertex-Prozessoren einen wahlfreien Zugriff erlaubt. Fragment-Programme sind daher in der Lage Rechenergebnisse (Output- Streams) in den Textur-Buffer zu schreiben und direkt wieder als Eingabe für neue Berechnungen zu verwenden. Daraus ergibt sich auch gleich ein Vorteil der Fragment-Prozessoren gegenüber den Vertex-Prozessoren für den general purpose -Einsatz, denn wie aus Abbildung 2 ersichtlich können Fragment- Prozessoren mehr oder weniger direkt in den Textur-Stream schreiben, wohingegen Daten vom Vertex-Prozessor erst noch den Rasterizer und dann selber den Fragment-Prozessor durchlaufen müssen bevor sie im Textur-Buffer 4

6 abgespeichert werden können. Die CPU selber kann mit Ausnahme der Fragment-Stream auf alle anderen Streams schreibend und lesen zugreifen. Wobei auch hier Daten vorteilhafterweise direkt in den Textur-Buffer geschrieben werden sollten, damit sie direkt als Eingabedaten für die Fragment-Programme zur Verfügung stehen. Der Fragment-Stream nur innerhalb der GPU verwendet wird und daher für den Programmierer nicht sichtbar ist. Abbildung 2: Übersicht über die Streams innerhalb der GPU. [3] 2.4 Prozessoren Eine Grafikkarte besitzt zwei unterschiedliche programmierbare Prozessoren: Die Vertex- und die Fragment-Prozessoren. [1] Beide Prozessoren sind voll programmierbar (die auszuführenden Instuktionen können also durch den Programmierer angegeben werden und sind nicht durch dir Hardware von vornherein festgelegt) und auf die Bearbeitung von Vektoren mit vier Komponenten spezialisiert. Der Unterschied zwischen beiden Prozessoren besteht darin das Fragment-Prozessoren, im Gegensatz zu Vertex-Prozessoren, in der Lage sind aus beliebigen Speicherbereichen innerhalb des Textur-Buffers zu lesen (Gather), da jedoch die Output- Adresse schon vom Vertex-Prozessor festgelegt wird, sind sie nicht in der Lage in selber bestimmte Speicherbereiche zu schreiben (Scatter). Bei Vertex- Prozessoren verhält es sich genau umgedreht. 5

7 Zwar können auch Vertex-Programme in neueren Grafikkarten mittels Vertex Shader 3.0 lesend und schreibend auf den Textur-Buffer zugreifen, allerdings sind die so geschriebenen Daten nur dazu da die bearbeiteten Vertex-Daten aufzunehmen und können sonst nicht frei verwendet werden. Ein weiterer Unterschied besteht darin, dass Fragment-Prozessoren ausschließlich im SIMD-Modus arbeiten, wohingegen Vertex-Prozessoren auch im MIMD- Modus arbeiten können. Der Fragment-Prozessor muss also auf allen Elementen eines Streams immer die exakt gleichen Instruktionen ausführen. Bei moderneren GPUs wird diese Nachteil aber durch Pixel Shader 3.0 etwas abgeschwächt, wodurch z.b. Schleifen variabler Länge möglich sind. Trotzdem werden für das general purpose computing hauptsächlich die Fragment-Prozessoren verwendet. Das hat mehrere Gründe. Zum einen enthalten moderne Grafikkarten in der Regel mehr Fragment- als Vertex-Prozessoren und zum anderen sind Fragment-Prozessoren, wie in Abschnitt 2.3 schon erwähnt, in der Lage Daten nach der Berechnung innerhalb eines weiteren Renderpass in den Textur- Buffer zu schreiben, was den Vorteil hat das Ausgabedaten direkt wieder als Eingabedaten verwendet werden können. 3 Datenstrukturen auf der GPU 3.1 Einfache Datentypen Bei der CPU-Programmierung ist man wie ganz selbsverständlich daran gewöhnt eine Vielzahl von Datentypen wie z.b. Integers, Floats, Booleans usw. zur Verfügung zu haben. Obwohl einige High-Level GPU-Sprachen auch Datentypen wie Integer und Boolean anbieten, arbeiten aktuelle GPUs intern ausschließlich mit reellen Zahlen in Form von Fest- oder Fließkommazahlen (NVIDIA verwendet aktuell ein 16 und ein 32-Bit Format. ATI verwendet 24-Bit). Werden also Datentypen wie z.b. Integer verwendet, so müssen diese immer in eine Gleitkommzahl abgebildet werden, was durchaus nicht immer problemlos möglich ist [1][2]. So kann z.b. der Wertebereich eines 32-Bit-Integer Wertes nicht komplett in eine 32-Bit Fließkommazahl abgebildet werden, da diese nur über 23 Mantissen-Bits verfügt. (Das standardtisierte 32-Bit-Format besteht aus einem Vorzeichen-, 23-Mantissenund 8-Exponenten-Bits, wobei die Anzahl der Mantissen-Bits die Genauigkeit festlegt mit der eine Zahl dargestellt werden kann.) Hat man nur das 6

8 16-Bit-Format (10 Mantissen-Bits) oder das 24-Bit-Format (16 Mantissen- Bits) zur Verfügung, so ergibt sich aufgrund des sehr beschränkten Integer- Wertebereichs das mit diesen Formaten dargestellt werden kann ein weiteres Problem. Steht z.b. nur das 16-Bit-Format zur Verfügung, so ist es, einfach weil überhaupt nicht so große Integer-Werte dargestellt werden können, nicht möglich vollständig auf ein Array (also auf einen Textur-Stream innerhalb des Textur- Buffers) mit z.b Elementen zuzugreifen. Des Weiteren muss man sich bewusst sein, dass Fließkommazahlen mit dem 16- und dem 24-Bit-Format nicht mit der selben Genauigkeit, wie man es von der normalen CPU-Programmierung her gewöhnt ist, berechnet werden können. 3.2 Multidimensionale Arrays Die GPU stellt sowohl eins-, zwei- als auch dreidimensionale Texturen zu Verfügung. Da es sich bei einem Textur-Stream praktisch um ein Array gleicher Daten handelt, dürfte die Repräsentation von Arrays dieser Dimensionen innerhalb der GPU eigentlich kein Problem darstellen. In Praxis gibt es allerdings zwei Gründe warum ein-, drei- und höherdimensionale Arrays nicht in ein- und dreidimensionale Texturen abgebildet werden sollten [3]. Zum einen stellen zur Zeit aktuelle GPUs nur eine zweidimensionale Rasterisierung und nur zweidimensionale Frame-Buffer zur Verfügung und zum anderen besitzen die Texturen eine festgelegte maximale Größe von Elementen pro Dimension. Sollen also Arrays beliebiger Dimensionen oder andere beliebige Datenstrukturen innerhalb der GPU verwendet werden, so ist es sinnvoll sie in zwei dimensionale Texturen abzubilden. Dadurch ist zum einen eine wesentlich einfachere Verarbeitung der Texturen möglich und zum anderen können im Vergleich zu eindimensionalen Texturen wesentlich mehr Array-Elemente abgespeichert werden. Wird ein eindimensionales Array in einer zweidimensionalen anstatt in einer eindimensionalen Textur abgespeichert kann es anstatt 4096 bis zu Elemente enthalten. 3.3 Strukturen Verwendet man anstatt eines stream of structures (siehe Abbildung 3) ein structure of streams (für jedes Struktur-Element wird ein extra Stream erzeugt, in Abbildung 3 würde also für die beiden Membervariablen a und 7

9 b jeweils ein extra Stream erzeugt werden) so hat das den Vorteil, dass alle Struktur-Mitglieder den gleichen Stream-Index besitzen und daher von einem einzigen Fragment-Programm aktualisiert werden können [3]. Abbildung 3: Links ein stream of strucutures. Rechts ein structure of streams. [3] 3.4 Dünn besetzte Datenstrukturen Einleitung Alle bisher diskutierten Datenstrukturen waren dichtbesetzt. So enthalten Arrays oft nur wenige oder überhaupt keine Felder die ungültige Werte aufweisen. Bei der Programmierung von seriellen CPUs werden aber neben diesen Datenstrukturen oft auch dünn besetzte Datenstrukturen, wie z.b. Listen oder Bäume verwendet, deren Elemente möglicherweise über den Speicher verteilt sind (Elemente eines Arrays werden in der Regel in aufeinanderfolgenden Speicherzellen abgespeichert) und die unter Umständen auch dynamisch wachsen und schrumpfen können. Die Implementierung solcher Datenstrukturen auf der GPU stellt tatsächlich ein nicht unerhebliches Problem dar [3]. Das hat hauptsächlich zwei Gründe. Zum einem ist es zum Aktualisieren solcher Datenstrukturen erforderlich in berechnete Speicheradresse zu schreiben (scattering) und zum anderen muss beim Durchlaufen der Datenstruktur auf eine nicht einheitliche Menge von Pointer zugegriffen werden, was aufgrund der SIMD-Architektur der Fragment-Prozessoren ein Problem darstellt, da ein Fragment-Prozessor auf allen Stream-Elementen die exakt gleichen Operationen ausführen muss. 8

10 Purcell s Sparse Ray-Tracing Data Structure Als ein Beispiel für eine dünnbesetzte Datenstruktur wird hier kurz auf eine Datenstruktur von Purcell zur Speicherung eines dreidimensionalen Grids aus Dreiecken eingegangen [3]. Das Grid besteht aus mehreren Grid-Zellen die wiederum mehrere Dreiecken enthalten. Das Problem besteht nun darin das Dreiecke sich auch in mehreren Grid-Zellen befinden können. Die Besonderheit an Purcell s Implementierung besteht darin, dass die Dreiecke nicht redundant abgespeicher werden. Wie man an dem Bild erkennen kann, besteht die Datenstruktur aus insgesamt drei Texturen. Die erste 3D Grid Textur enthält für jede Grid-Zelle einen Pointer der auf eine Liste innerhalb der zweiten Textur zeigt. Diese Liste enthält für jedes Dreieck innerhalb der entsprechenden Grid-Zelle einen Pointer der auf eine dritte Textur verweist, die dann die eigentlichen Dreiecksdaten enthält. Dieses Beispiel zeigt eine der grundlegenden Ideen bei der Implementierung von dünn besetzten Datenstrukturen auf der GPU. Die Verwendung von indirekter Indizierung. Allerdings hängt die tatsächliche Implementierung der Datenstruktur in der Regel sehr von den tatsächlich vorhandenen Daten ab. Abbildung 4: Purcells s Sparse Ray-Tracing Data Structure [3] 4 Algorithmen 4.1 Einleitung Wie die Implementierung von Datenstrukturen ist die Implementierung von Algorithmen auf der GPU meistens nicht ohne Probleme möglich [4]. In der Regel besitzen die auf der CPU eingesetzten Algorithmen nicht den nötigen 9

11 Parallelitätsgrad um effizient auf der GPU ausgeführt zu werden. Ein Beispiel für einen Sortieralgorithmus der sich gut auf der Grafikkarte implementieren lässt ist der sogenannte Bitonic-Merge-Sort-Algorithmus. 4.2 Bitonic Merge Sort Der Bitonic-Merge-Sort-Algorithmus ist ein paralleler Sortieralgorithmus der auf dem Sortieren und Verschmelzen von bitonischen Zahlenfolgen beruht [4][5]. Das besondere an diesem Algorithmus ist, dass er unabhängig von der konkreten Zahlenfolge immer die gleiche Anzahl an Schritten benötigt. So müssen um eine Zahlenfolge mit n-elementen zu sortieren immer log(n) bitonische Zahlenfolgen erzeugt und verschmolzen werden. Wobei die Operationen innerhalb jedes Schrittes auch von vornherein festgelegt sind, weshalb er für die parallele Ausführung wesentlich besser geeignet ist als die meisten auf der CPU typischerweise eingesetzten Algorithmen wie z.b. Quicksort. 5 Zusammenfassung Ein Grund Grafikkarten für die Ausführung von general purpose -Programmen einzusetzen ist die deutlich höhere Rechenleistung und Speicherbrandbreite gegenüber aktuellen CPUs. Um diese Leistungssteigerung zu erreichen wurde die GPU als sogenannter Stream-Prozessor konzipiert. Stream-Prozessoren arbeiten, im Gegensatz zu seriellen Prozessoren, immer auf kompletten Datenströmen. Dieses Stream-Modell selber wirkt sich aber erheblich auf die Programmierung von Grafikkarten aus und hat zur Folge das die Implementierung von Datenstrukturen und Algorithmen in der Regel nicht so einfach erfolgen kann wie man es von der CPU her gewöhnt ist. So weisen viele der auf der CPU verwendeten Algorithmen typischerweise nicht den nötigen Parallelitätsgrad auf um effizient auf der GPU ausgeführt werden zu können und aufgrund des Stream-Modells müssen alle Datenstrukturen in Streams (typischerweise Textur-Streams) abgebildet werden, was gerade für dünn-besetzte Datenstrukturen die möglicherweise auch dynamisch wachsen und schrumpfen sollen recht kompliziert ist. Die tatsächliche Implementierung solcher dünnbesetzen Datenstrukturen ist dann in der Regel erheblich von den wirklich vorhandenen Daten abhängig. 10

12 Abbildungsverzeichnis 1 Vergleich der Programmiermodelle Stream-Übersicht Strukturen Purcell s Data Strucutre Literatur [1] Matt Pharr, Randima Fernando: GPU Gems 2 Kapitel 31 [2] Matt Pharr, Randima Fernando: GPU Gems 2 Kapitel 32 [3] Matt Pharr, Randima Fernando: GPU Gems 2 Kapitel 33 [4] Matt Pharr, Randima Fernando: GPU Gems 2 Kapitel 46 [5] T. Ottmann, P. Widmayer: Algorithmen und Datenstrukturen 11

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1

GPGPU Basiskonzepte. von Marc Kirchhoff GPGPU Basiskonzepte 1 GPGPU Basiskonzepte von Marc Kirchhoff 29.05.2006 GPGPU Basiskonzepte 1 Inhalt Warum GPGPU Streams, Kernels und Prozessoren Datenstrukturen Algorithmen 29.05.2006 GPGPU Basiskonzepte 2 Warum GPGPU? Performance

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

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

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

Stream Processing und High- Level GPGPU Sprachen

Stream Processing und High- Level GPGPU Sprachen Stream Processing und High- Level GPGPU Sprachen Seminar Programmierung von Grafikkarten Jens Breitbart Problem 5000% 4000% 3000% 2000% Rechenleistung: +71% pro Jahr Bandbreite: +25% pro Jahr Zugriffszeit:

Mehr

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit

Rheinisch-Westfälische Technische Hochschule Aachen. Seminararbeit Rheinisch-Westfälische Technische Hochschule Aachen Seminararbeit Analyse von General Purpose Computation on Graphics Processing Units Bibliotheken in Bezug auf GPU-Hersteller. Gregori Kerber Matrikelnummer

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

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

Mehr

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

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

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

OpenCL. Programmiersprachen im Multicore-Zeitalter. Tim Wiersdörfer OpenCL Programmiersprachen im Multicore-Zeitalter Tim Wiersdörfer Inhaltsverzeichnis 1. Was ist OpenCL 2. Entwicklung von OpenCL 3. OpenCL Modelle 1. Plattform-Modell 2. Ausführungs-Modell 3. Speicher-Modell

Mehr

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

CUDA. Moritz Wild, Jan-Hugo Lupp. Seminar Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg CUDA Seminar Multi-Core Architectures and Programming 1 Übersicht Einleitung Architektur Programmierung 2 Einleitung Computations on GPU 2003 Probleme Hohe Kenntnisse der Grafikprogrammierung nötig Unterschiedliche

Mehr

GPU-Programmierung: OpenCL

GPU-Programmierung: OpenCL Seminar: Multicore Programmierung Sommerstemester 2009 04.06.2009 Inhaltsverzeichnis 1 GPU-Programmierung von Grafikkarten von GPU-Computing 2 Architektur Spracheigenschaften Vergleich mit CUDA Beispiel

Mehr

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

Mehrdimensionale Arrays

Mehrdimensionale Arrays Mehrdimensionale Arrays Prof. Dr.-Ing. Thomas Schwotzer 1 Einführung Eindimensionale Arrays haben wir bereits kennen gelernt. Es gibt aber auch mehrdimensionale Arrays. Die sind auch sehr notwendig, denken

Mehr

Computer Graphics Shader

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)

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

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL)

Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL) Interaktive Globale Beleuchtung nach dem Antiradiance-Verfahren mittels der Open Computing Language (OpenCL) Verteidigung der Belegarbeit Andreas Stahl Zielstellung Globales Beleuchtungsverfahren für die

Mehr

Parallele Algorithmen in der Bildverarbeitung

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

Mehr

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08

Reihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang.   WS 07/08 Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende

Mehr

Abschnitt 10: Datenstrukturen

Abschnitt 10: Datenstrukturen Abschnitt 10: Datenstrukturen 10. Datenstrukturen 10.1Einleitung 10.2 Peer Kröger (LMU München) Einführung in die Programmierung WS 16/17 829 / 867 Einleitung Überblick 10. Datenstrukturen 10.1Einleitung

Mehr

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Organisatorisches Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online Nächste Woche VO und UE am Dienstag, den 30.10.! UE im CR IL/IT Wissensüberprüfung am Zettel 25.10.2018 IT I - VO 3 1 Organisatorisches

Mehr

Wiederholung. Vorlesung GPU Programmierung Thorsten Grosch

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)

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

Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs)

Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs) Fakultätsname XYZ Fachrichtung XYZ Institutsname XYZ, Professur XYZ Physikalische Berechnungen mit General Purpose Graphics Processing Units (GPGPUs) im Rahmen des Proseminars Technische Informatik Juni

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang

Reihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen

Mehr

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

Motivation (GP)GPU CUDA Zusammenfassung. CUDA und Python. Christian Wilms. Integriertes Seminar Projekt Bildverarbeitung CUDA und Python Christian Wilms Integriertes Seminar Projekt Bildverarbeitung Universität Hamburg WiSe 2013/14 12. Dezember 2013 Christian CUDA und Python 1 Gliederung 1 Motivation 2 (GP)GPU 3 CUDA 4 Zusammenfassung

Mehr

Programmierung. Rückblick. VWA - Programmierung Winter Algorithmus. Programmiersprache. Variable. Zuweisung. Bedingung.

Programmierung. Rückblick. VWA - Programmierung Winter Algorithmus. Programmiersprache. Variable. Zuweisung. Bedingung. Programmierung 1 Rückblick Algorithmus Programmiersprache Variable Zuweisung Bedingung Schleife (c) Peter Sturm, University of Trier 1 3 Aufgabe: Viele, viele bunte Smarties Rechengeschwindigkeit CPU 5

Mehr

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download Organisatorisches Folien (u.a.) gibt's auf der Lva-Homepage zum Download Diesen Mi erstes Tutorium (15-17) Ab nächster Woche montags 10-12 (jeweils im Computerraum) 17.10.2017 IT I - VO 3 1 Organisatorisches

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

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

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

Mehr

Wertebereich und Genauigkeit der Zahlendarstellung

Wertebereich und Genauigkeit der Zahlendarstellung Wertebereich und Genauigkeit der Zahlendarstellung Sowohl F als auch C kennen bei ganzen und Floating Point-Zahlen Datentypen verschiedener Genauigkeit. Bei ganzen Zahlen, die stets exakt dargestellt werden

Mehr

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci Name: Vorname: Matr. Nr.: Technische Universität München SoSe 2018 Fakultät für Informatik, I-16 9. Mai 2018 Dr. Stefanie Demirci Probeklausur zu Algorithmen und Datenstrukturen Allgemeine Hinweise Die

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr

Shader. Computer Graphics: Shader

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

Mehr

Hochleistungsrechnen auf dem PC

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

Mehr

Numerik und Rechnen. Inhaltsverzeichnis. Seminar Programmierung von Grafikkarten

Numerik und Rechnen. Inhaltsverzeichnis. Seminar Programmierung von Grafikkarten Numerik und Rechnen Seminar Programmierung von Grafikkarten Martin Heide & Dominik Holler Betreuer: Björn Knafla, Prof. Dr. Claudia Leopold Inhaltsverzeichnis 1 Einführung...2 2 Rechnen auf der GPU mit

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

GPGPU. Version Marc Blunck Volker Schepker

GPGPU. Version Marc Blunck Volker Schepker Version 1.2 05.12.2006 Marc Blunck 97129 Volker Schepker 100870 Diese Ausarbeitung befasst sich mit der Programmierung von Grakprozessoren. meint General Purpose

Mehr

Dynamischer Speicher

Dynamischer Speicher In diesem Abschnitt werden (1) Felder fester Länge und Dynamischer Speicher (2) Felder mit variabler Länge, die sich erst zu Laufzeit des Programms ergibt gegenübergestellt Für (2) benötigt man Funktionen

Mehr

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni

GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni GPU Programmierung 6. Juli 2004 M. Christen, T. Egartner, P. Zanoni 1 Ablauf GPU Programm Vertex und Fragment Shader 2 3 4 5 Image Processing 6 Ablauf GPU Programm Ablauf GPU Programm Vertex und Fragment

Mehr

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610

LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 LEISTUNGSVERGLEICH VON FPGA, GPU UND CPU FÜR ALGORITHMEN ZUR BILDBEARBEITUNG PROSEMINAR INF-B-610 Dominik Weinrich dominik.weinrich@tu-dresden.de Dresden, 30.11.2017 Gliederung Motivation Aufbau und Hardware

Mehr

Felder fester Länge (1)

Felder fester Länge (1) Felder fester Länge (1) Felder: Aneinanderreihung von mehreren Variablen gleichen Typs Ursprünglich als 1-dimensionale Organisationsform gedacht, aber auch zwei- und höherdimensional (Matrizen u.ä.) Benutzung

Mehr

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

7. Organisation von Informationen

7. Organisation von Informationen Computeranwendung in der Chemie Informatik für Chemiker(innen) 7. Organisation von Informationen Jens Döbler 2003 "Computer in der Chemie", WS 2003-04, Humboldt-Universität VL7 Folie 1 Grundlagen Programme

Mehr

C für Java-Programmierer

C für Java-Programmierer Carsten Vogt C für Java-Programmierer ISBN-10: 3-446-40797-9 ISBN-13: 978-3-446-40797-8 Inhaltsverzeichnis Weitere Informationen oder Bestellungen unter http://www.hanser.de/978-3-446-40797-8 sowie im

Mehr

Cell and Larrabee Microarchitecture

Cell and Larrabee Microarchitecture Cell and Larrabee Microarchitecture Benjamin Grund Dominik Wolfert Universität Erlangen-Nürnberg 1 Übersicht Einleitung Herkömmliche Prozessorarchitekturen Motivation für Entwicklung neuer Architekturen

Mehr

6. Zeiger Allgemeines Definition eines Zeigers

6. Zeiger Allgemeines Definition eines Zeigers 6. Zeiger www.c-programme.de Stefan Thiemert Kapitel 6 - Seite 1 von 6 6. 1. Allgemeines Zeiger spielen in der Programmierung eine wichtige Rolle. Sie sind wichtig, bei der Arbeit mit Arrays und Funktionen.

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

Physische Datenstrukturen

Physische Datenstrukturen Elementare Datentypen Strukturierte Datentypen Zeiger Seite 1 Einfache Datentypen Datentyp char Verwendung: ASCII-Zeichen Wertebereich: alle darstellbaren Zeichen, 8 bit lange Ganzzahlen im Intervall -128

Mehr

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen Java programmieren mit JavaKara Eine Zusammenfassung in Beispielen Kleeblätter in einer Zeile zählen @Override public void mymainprogram() { int anzahlkleeblaetter = 0; for (int x = 0; x < world.getsizex();

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare

Mehr

Grakkarten - Programmierung

Grakkarten - Programmierung Grakkarten - Programmierung Version 1.3 20.02.2006 Marc Blunck 97129 Diese Ausarbeitung befasst sich mit der Programmierung von Grakprozessoren. meint General Purpose Computation On Graphics

Mehr

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen).

Schreiben von Pages. Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Schreiben von Pages Schreiben einer Page in den Swap Space ist sehr teuer (kostet millionen von CPU Zyklen). Write Through Strategie (siehe Abschnitt über Caching) ist hier somit nicht sinnvoll. Eine sinnvolle

Mehr

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben

Zwischenklausur Informatik, WS 2016/17. Lösungen zu den Aufgaben Zwischenklausur Informatik, WS 206/7 4.2.206 Lösungen zu den Aufgaben. Gegeben sind folgende Dualzahlen in Zweierkomplementdarstellung. Geben Sie den jeweils zugehörigen Dezimalwert an! a) entspricht der

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

Grundlagen der Spieleprogrammierung

Grundlagen der Spieleprogrammierung Grundlagen der Spieleprogrammierung Teil I: 3D-Graphik Kapitel 8: Hardware Peter Sturm Universität Trier Outline 1. Übersicht und Motivation 2. Mathematische Grundlagen 3. Das Ideal: Photorealistisch (Raytracing,

Mehr

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach  10. Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

Mehr

1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:...

1. Teilklausur. Name:... Vorname:... Matrikel-Nummer:... ALP II Objektorientierte Programmierung SS 2012 Prof. Dr. Margarita Esponda 1. Teilklausur Name:... Vorname:... Matrikel-Nummer:... Ich bin mit der Veröffentlichung der Klausurergebnisse mit Matrikel-Nummer

Mehr

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3

Objekte. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 5. 1 Modulübersicht 3 Programmieren mit Java Modul 5 Objekte Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Klassen und Objekte 3 2.1 Klassen.................................... 4 2.2 Objektvariablen und Methoden.......................

Mehr

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203

Inhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203 Inhaltsübersicht Vorwort 15 Vorwort zur deutschen Ausgabe 22 Kapitel 1 Elemente der Programmierung 25 Kapitel 2 Funktionen und Module 203 Kapitel 3 Objektorientierte Programmierung 335 Kapitel 4 Algorithmen

Mehr

C für Java- Programmierer

C für Java- Programmierer Carsten Vogt C für Java- Programmierer mit 59 Bildern, 36 Tabellen und 35 Aufgaben HANSER Inhalt 1 Einführung 13 Schnelleinstieg 14 1.1 C und Java von den Anfängen bis heute 15 1.1.1 Die Entwicklung von

Mehr

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen

Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen Darstellung ganzer Zahlen 3 Zahlendarstellung - Zahlensysteme - b-adische Darstellung natürlicher Zahlen - Komplementbildung - Darstellung ganzer und reeller Zahlen Inhaltsangabe 3.1 Zahlensysteme und Darstellung natürlicher Zahlen......

Mehr

One of the few resources increasing faster than the speed of computer hardware is the amount of data to be processed. Bin Hu

One 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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Einführung in die Programmierung für NF MI. Übung 04

Einführung in die Programmierung für NF MI. Übung 04 Einführung in die Programmierung für NF MI Übung 04 Inhalt Arrays Einführung in Objekte Einführung in die Programmierung für NF Übung 04 2 Arrays Arrays repräsentieren Reihungen von Objekten, z.b. Variablen

Mehr

Mathematische Werkzeuge für Computergrafik 2016/17. Gleitkommzahlen

Mathematische Werkzeuge für Computergrafik 2016/17. Gleitkommzahlen Mathematische Werkzeuge für Computergrafik 2016/17 Gleitkommzahlen 1 Grundlagen 1 Da im Computer nur endliche Ressourcen zur Verfügung stehen, können reelle Zahlen in vielen Fällen nicht exakt dargestellt

Mehr

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele.

Inhalt. 1. Einführung in die Informatik. 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele. 1. Einführung in die Informatik Inhalt 2. Algorithmen Definition, Eigenschaften, Entwurf Darstellung von Algorithmen Beispiele Peter Sobe 1 Einführende Beispiele 2. Algorithmen Täglich werden Verarbeitungsvorschriften

Mehr

3D Programmierpraktikum: OpenGL Shading Language (GLSL)

3D Programmierpraktikum: OpenGL Shading Language (GLSL) 3D Programmierpraktikum: OpenGL Shading Language (GLSL) Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 13. Juli 2006 LMU München Medieninformatik Boring/Hilliges 3D Programmierpraktikum

Mehr

Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen

Beispiele elementarer Datentypen Ganze Zahlen (integer) Unterbereiche Gleitkommazahlen Festkommazahlen Beispiele elementarer Datentypen Ganze Zahlen (integer) - Werte sind ganze Zahlen in vorgegebenen Bereich (z. B. -2 31 bis 2 31-1) - Übliche Operationen: Arithmetik (z. B. +,-,*, Division mit Rest, Rest

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

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

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

Brook for GPUs: Stream Computing on Graphics Hardware

Brook for GPUs: Stream Computing on Graphics Hardware Ausarbeitung zum Thema Brook for GPUs: Stream Computing on Graphics Hardware Ian Buck, Tim Foley, Daniel Horn, Jeremy Sugerman, Kayvon Fatahalian, Mike Houston and Pat Hanrahan von Aldo Mühlhause Hauptseminar

Mehr

Objekte werden eindeutig beschrieben durch ihren Typ und einen beliebig wählbaren Bezeichner.

Objekte werden eindeutig beschrieben durch ihren Typ und einen beliebig wählbaren Bezeichner. Grundlegende Deklarationen Seite 1 von 6 Jedes Programm benötigt Objekte. Ein Objekt ist ein reservierter Bereich im Systemspeicher in welchem Informationen abgelegt werden. Informationen sind z.b. Zahlen,

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

Seminar: Multi-Core Architectures and Programming

Seminar: Multi-Core Architectures and Programming Seminar: Multi-Core Architectures and Programming Parallelisierung des Viola-Jones Algorithmus auf Tilera Hardware-Software-Co-Design Universität Erlangen-Nürnberg 1 Übersicht Einleitung Erste Versuche

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

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

Teil 1: Prozessorstrukturen

Teil 1: Prozessorstrukturen Teil 1: Prozessorstrukturen Inhalt: Mikroprogrammierung Assemblerprogrammierung Motorola 6809: ein einfacher 8-Bit Mikroprozessor Mikrocontroller Koprozessoren CISC- und RISC-Prozessoren Intel Pentium

Mehr

In heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher

In heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher Speicherhierarchie In heutigen Computern findet man schnellen/teuren als auch langsamen/billigen Speicher Register Speicherzellen, direkt mit der Recheneinheit verbunden Cache-Speicher Puffer-Speicher

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

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Numerik und Rechnen. Martin Heide & Dominik Holler. 12. Juni 2006

Numerik und Rechnen. Martin Heide & Dominik Holler. 12. Juni 2006 12. Juni 2006 Bibliothek für Lineare Algebra GPGPU-Programming: Low-Level High-Level Bibliothek Bibliothek für Lineare Algebra Gliederung 1 Bibliothek für Lineare Algebra 2 Skalare Bibliothek für Lineare

Mehr

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen: HeapSort Allgemeines Sortieralgorithmen gehören zu den am häufigsten angewendeten Algorithmen in der Datenverarbeitung. Man hatte daher bereits früh ein großes Interesse an der Entwicklung möglichst effizienter

Mehr

Speicherarchitektur (23) Suchen einer Seite:

Speicherarchitektur (23) Suchen einer Seite: Speicherarchitektur (23) Suchen einer Seite: Vorlesung Rechnersysteme SS `09 E. Nett 7 Speicherarchitektur (24) Adressschema inklusive Seitenfehler: Vorlesung Rechnersysteme SS `09 E. Nett 8 Speicherarchitektur

Mehr

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

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

TensorFlow Open-Source Bibliothek für maschinelles Lernen. Matthias Täschner Seminar Deep Learning WS1718 Abteilung Datenbanken Universität Leipzig

TensorFlow Open-Source Bibliothek für maschinelles Lernen. Matthias Täschner Seminar Deep Learning WS1718 Abteilung Datenbanken Universität Leipzig TensorFlow Open-Source Bibliothek für maschinelles Lernen Seminar Deep Learning WS1718 Abteilung Datenbanken Universität Leipzig Motivation Renaissance bei ML und KNN Forschung bei DNN fortgeschrittene

Mehr

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE

Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE Zum Aufwärmen nocheinmal grundlegende Tatsachen zum Rechnen mit reelen Zahlen auf dem Computer. Das Rechnen mit Gleitkommazahlen wird durch den IEEE 754 Standard festgelegt. Es stehen sogenannte einfach

Mehr

Computergrafik Universität Osnabrück, Henning Wenke,

Computergrafik Universität Osnabrück, Henning Wenke, Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-25 Kapitel XV: Parallele Algorithmen mit OpenCL 15.1 Parallele Programmierung Quellen: V.a. Wikipedia. Leistungsdaten unter Vorbehalt. Bitte

Mehr

Programmieren lernen mit Perl

Programmieren lernen mit Perl Xpert.press Programmieren lernen mit Perl Bearbeitet von Joachim Ziegler 1. Auflage 2002. Buch. XIV, 400 S. Hardcover ISBN 978 3 540 42685 1 Format (B x L): 15,5 x 23,5 cm Gewicht: 783 g Weitere Fachgebiete

Mehr

GI Vektoren

GI Vektoren Vektoren Problem: Beispiel: viele Variablen vom gleichen Typ abspeichern Text ( = viele char-variablen), Ergebnisse einer Meßreihe ( = viele int-variablen) hierfür: Vektoren ( = Arrays = Feld ) = Ansammlung

Mehr

Algorithmen II Vorlesung am

Algorithmen II Vorlesung am Algorithmen II Vorlesung am 31.01.2013 Algorithmen für externen Speicher INSTITUT FÜR THEORETISCHE INFORMATIK PROF. DR. DOROTHEA WAGNER KIT Universität des Landes Baden-Württemberg und Algorithmen nationales

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

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

Praktische Eine Einführung

Praktische Eine Einführung Gregor Büchel Praktische Eine Einführung Lehr- und Arbeitsbuch mit Tafelbildern Mit 65 Abbildungen und Tabellen Springer Vorwort V 1 Was ist Informatik? 1 1.1 Datenflusspläne 2 1.1.1 Symbole eines 2 1.1.2

Mehr

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1

Informatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss

Mehr