Seminararbeit. Aktuelle Entwicklungen im Bereich Visual Computing. Prof. Dr. T. Jung, Prof. Dr. P. Hufnagl CUDA. René Schimmelpfennig (530698)

Größe: px
Ab Seite anzeigen:

Download "Seminararbeit. Aktuelle Entwicklungen im Bereich Visual Computing. Prof. Dr. T. Jung, Prof. Dr. P. Hufnagl CUDA. René Schimmelpfennig (530698)"

Transkript

1 Seminararbeit Aktuelle Entwicklungen im Bereich Visual Computing Prof. Dr. T. Jung, Prof. Dr. P. Hufnagl CUDA René Schimmelpfennig (530698) Angewandte Informatik Berlin, 8. Februar 2011

2 Inhaltsverzeichnis 1 GESCHICHTE DER GRAFIKKARTEN 1 2 LEISTUNG DER GPUS 3 3 GPGPU GESCHICHTLICHES OPENCL 7 4 CUDA HARDWARESEITIG SOFTWARESEITIG 10 5 BEISPIEL MATRIZENMULTIPLIKATION VARIANTE 1: SEQUENTIELLER ABLAUF VARIANTE 2: PARALLEL DURCHFÜHRUNG MIT CUDA VARIANTE 3: OPTIMIERTER CUDA-ALGORITHMUS 13 6 ANWENDUNG NVIDIA PHYSX FOLDING@HOME ADOBE CREATIVE SUITE 15 7 QUELLEN 17 I

3 Kapitel 1 Geschichte der Grafikkarten 1 Geschichte der Grafikkarten Wir blicken zurück in das Jahr 1977: Der Apple II kam auf dem Markt. Es war möglich ihn mit Steckkarten aufzurüsten. Unter anderem um die Grafikausgabe zu erweitern: Dies war sozusagen die erste Grafikkarte. Sie schaffte eine Auflösung von bis zu 280*192 Pixel mit 6 Farben, was für damalige Verhältnisse schon eine Revolution war. Abbildung 1.1: Apple II Der erste IBM PC ( 5150 ) erschien 1981 und brachte ebenfalls eine eigene Platine mit, welche für die Grafikausgabe zuständig war. Jedoch konnte sie nur einfarbigen Text darstellen (Monochrome Display Adapter, kurz MDA). Der amerikanische Hersteller Hercules bot 1982 spezielle Grafikkarten für diese PC- Baureihe an, mit der neben der Text- auch die Grafikausgabe mit bis zu 720*348 Pixeln ermöglicht wurde. Ab 1989 sind Grafikkarten mit Farbausgabe Standard. Bis Anfang der 1990er konnten die Entwickler jedoch nur den Textmodus nutzen, sowie im Grafikmodus einzelne Pixel setzen. Die Hauptaufgabe der Grafikkarten bestand bis zu diesen Zeitpunkt darin, die Daten in ein geeignetes Ausgangssignal für den Monitor umzuwandeln. Erst im Jahre 1991 kamen die ersten Grafikkarten auf den Markt, die einen speziellen Prozessor integriert haben, die GPU (Graphics Processing Unit). Nun war es für die Entwickler möglich Befehle zum Zeichnen von Linien und Füllen von Flächen zu nutzen, die dann ohne Belastung der CPU direkt von der Grafikkarte ausgeführt wurden. Dies kam vor allem dem Betriebssystemen mit einer grafischen Oberfläche zugute. Das Computerspiel Doom löste 1993 einen 3D-Spiele-Boom aus, da die Menschen von den neuartigen Entwicklungen in der Computerspiele-Industrie begeistert waren: Jeder wollte bei sich zu Hause selber in virtuelle Spielwelten abtauchen. Der Hersteller 3Dfx nutzte die Gunst der Stunde und brachte Mitte der 1990er den 3D-Beschleuniger-Chip Voodoo hervor, der auf einer extra Erweiterungskarte (zusätzlich zur Grafikkarte) die Berechnungen für die 3D- Ausgabe übernahm. Dadurch wurden auf der CPU wieder Ressourcen für andere Aufgaben frei und es waren grafisch noch beeindruckende Spiele möglich. 1

4 Kapitel 1 Geschichte der Grafikkarten Abbildung 1.2: PC-Spiel "Doom" Mit dem Ende der 1990er Jahre übernahmen die Grafikkarten die Dekodierung von komprimierten Videos (z.b. MPEG). Um die Leistung der Grafikkarte noch weiter zu steigern, kamen Hersteller wie 3Dfx auf die Idee mehrere Grafikchips zu nutzen. Dem bis dahin noch kleinen und unbekannten Hersteller Nvidia gelang 1999 mit der Riva 128 der Durchbruch da sie die erste Grafikkarte war, die GPU und Grafikbeschleuniger auf einer Karte vereinte. 2

5 Kapitel 2 Leistung der GPUs 2 Leistung der GPUs Bis zum Jahr 2003 gelang es den CPU-Entwicklern die Leistung der CPUs stetig zu erhöhen (siehe Abbildung 2.1), doch beim Erreichen der 4 GHz-Grenze stießen sie auf größere Probleme. Abbildung 2.1: Entwicklung der CPU-Frequenz Das Mooresche Gesetz besagt, dass sich die Anzahl der Transistoren auf einem Chip alle 18 Monate verdoppelt. Dies war auch der Fall, jedoch gelang es den Forschern in der Halbleiterindustrie nicht die entstandenen Abwärme der vielen kleinen Transistoren, die auf engstem Raum untergebracht sind, optimal abzuführen. Auch der physikalische Prozess der Elektromigration stellte die CPU- Hersteller vor eine Herausforderung: Dabei werden durch Elektronen Atome aus den Leiterbahnen herausgerissen. Schleichend entstehen so Lücken sog. Voids (siehe Abbildung 2.2), die die Funktionsfähigkeit der CPU beeinflussen oder gar zum Totalausfall führen können. Abbildung 2.2: Lücke in der Leiterbahn durch Elektromigration Die herausgerissenen Partikel setzen sich an anderer Stelle der Leiterbahn ab und bilden dort Hillocks, die Kurzschlüsse verursachen können sobald sie zwei Leiterbahnen überbrücken (siehe Abbildung 2.3). 3

6 Kapitel 2 Leistung der GPUs Abbildung 2.3: Durch Elektromigration ausgelöste Ablagerungen Die Elektromigration wird durch das Hitzeproblem noch verstärkt und führt unweigerlich zur Zerstörung der CPU. Da all diese Probleme nicht ohne weiteres lösbar waren, verabschiedeten sich die CPU-Hersteller im Jahr 2005 von dem Ziel, die Frequenz der CPU immer weiter erhöhen zu wollen, und setzen ganz auf Mehrkernprozessoren. Die Hersteller von Grafikchips hatten diese Probleme nicht, da sie eine andere Architektur benutzen. Zudem verschafft diese den GPUs eine wesentlich höhere Rechenleistung (bis zu 20mal mehr als CPUs; siehe Abbildung 2.4). Abbildung 2.4: Potential der GPU im Vergleich zur CPU Eine CPU ist für universelle Befehle ausgelegt: Sie muss mit willkürlichen Speicherzugriffen, mit Verzweigungen und einer ganzen Reihe von unterschiedlichen Datentypen zurechtkommen. Befehle werden von ihr sequentiell ausgeführt. 4

7 Kapitel 2 Leistung der GPUs Wenn man den Aufbau in Abbildung 2.5 betrachtet erkennt man, dass ein großer Teil des Chips vom Cache und dem Controller eingenommen werden. Die Recheneinheiten (Arithmetic Logic Unit, kurz ALU) müssen im Gegensatz dazu mit sehr wenig Platz auskommen: Dies sei in der universellen Einsetzbarkeit von CPUs geschuldet. Abbildung 2.5: Architektur einer CPU GPUs wurden von Anfang an auf Grafikberechnungen ausgelegt (siehe Abbildung 2.6). Ihre Aufgabe besteht darin Polygone zu laden und daraus die entsprechenden Pixel zu berechnen. Der Grafikchip arbeitet nach dem SIMD- Prinzip (Single Instruction, Multiple Data) und führt somit Befehle parallel aus, wodurch die ALUs besser ausgenutzt werden können. Da die Pixel im Speicher nebeneinander liegen, wird nur ein kleiner Cache benötigt und die Zugriffszeiten fallen gering aus. Abbildung 2.6: Architektur einer GPU 5

8 Kapitel 3 GPGPU 3 GPGPU Angetrieben durch die Wissenschaft, die immer auf der Suche nach Leistungsstärkeren Computer für ihre Berechnungen ist, kam man auf den Gedanken, den Grafikkarten-Chip als mathematischen Co-Prozessor für allgemeine Berechnungen zu verwenden. Dieses Verfahren wird als General Purpose Computation on Graphics Processing Unit (kurz GPGPU) bezeichnet. Mit Hilfe von GPGPU würde man zudem noch sehr viel Geld einsparen: CPU- Systeme in dieser Leistungsklasse kosten einige Tausend Euro, ein paar Grafikkarten aber nur einen Bruchteil davon. Dabei ist zu beachten, dass Grafikchips ihren Geschwindigkeitsvorteil gegenüber den CPUs nur ausspielen können wenn sie einen Algorithmus auf eine ganze Menge von Daten anwenden sollen. Dazu muss sich die Berechnung in viele parallel ausführbare Teile zerlegen lassen. Man sollte allerding folgende Punkte beachten, die beim Einsatz von GPGPU anfallen: Die GPUs verschiedener Hersteller unterscheiden sich stark. Hier muss eine einheitliche Schnittstelle geschaffen werden, die es erlaubt den Grafik-Prozessor zur Berechnung von allgemeinen mathematischen Aufgaben einzusetzen (vgl. OpenCL ). Für die parallele Programmierung sind spezielle Konzepte notwendig. Grafikkarten besitzen meist wenig Speicher. Der Speicher ist manchmal meist von minderer Qualität als der, der bei CPUs eingesetzt wird. Es muss also eine gewisse Fehleranfälligkeit berücksichtigt werden. Da es die PC-Architektur nicht erlaubt Programme direkt auf der GPU auszuführen, ist GPGPU weiterhin auf die CPU angewiesen. 3.1 Geschichtliches Im Jahr 2000 erschienen die ersten Grafikkarten, bei denen es möglich war die GPU zu programmieren (GeForce 3 und ATI R200). Man konnte eigene Shader programmieren um neuartige Grafikeffekte zu erzeugen. Nvidia stellte dazu die Programmiersprache Cg ( C for Graphics ) bereit, welche stark an C angelehnt ist. Anfänglich war die Shader-Programmierung auf 10 Instruktionen pro Programm begrenzt. Zudem musste man sich mit exotischen Datentypen mit 9 oder 12 Bit Festkomma anfreunden. Die nächste Generation an Grafikchips brachte im Jahr 2003 auf diesem Gebiet Verbesserungen: Mit der GeForce FX (Chipsatz NV30) wurden regulär 32 Bit Gleitkommaberechnungen auf der GPU unterstützt. Auch war es nun möglich mehr als 1000 Befehle auf der GPU auszuführen. Dies machte die GPUs zum Lösen von mathematischen Berechnungen (z.b. Matrizenmultiplikationen) interessant. Doch leider war die Programmierung sehr kompliziert: Man benötigte 6

9 Kapitel 3 GPGPU Wissen über die Grafik-Programmierung, da beim Zugriff auf die GPU kein Weg an DirectX oder OpenGL vorbeiführte. Dieser Sachverhalt wurde durch ein paar Studenten der Standford-Uni grundlegend geändert: Mit Ihrem Studentenprojekt BrookGPU erschufen sie im Jahr 2004 eine einheitliche API um GPGPU plattformübergreifend zu ermöglichen. Die Programme konnten in C geschrieben werden, was vielen Entwicklern entgegen kam. Der daraus erzeugte Algorithmus konnte auf hunderten Shaderprozessoren der Grafikkarte ausgeführt werden. Ein Datenstrom wurde anschließend durch diese Shader geschleust, weshalb man dieses Verfahren auch als Stream Computing bezeichnet. Da BrookGPU ohne Unterstützung der Chiphersteller auskommen musste, waren nach dem Erscheinen einer neuen Treiberversion Anpassungen notwendig. Die Industrie verzichtete deshalb auf den Einsatz: Für sie waren Systemausfälle mit einem zu hohem finanziellen Risiko verbunden, denn es war nicht gewährleistet, dass das Studenten-Team fortlaufend die Bibliothek aktualisiert. Doch bei Wissenschaftlern und Hobby-Programmierern stieß BrookGPU mit seinen Möglichkeiten auf zunehmendes Interesse. Bald erweckte die Technologie die Aufmerksamkeit der beiden größten Grafikchip-Hersteller AMD und Nvidia: Sie sahen ein, dass sie mit GPGPU die Tür zu einem weiteren Markt aufstoßen können: Hauptabnehmer ihrer Produkte sind bisher größtenteils PC-/Konsolen-Spieler und Multimedia-Enthusiasten. Mit GPGPU könnten sie ihre Grafikchips zusätzlich für die Wissenschaft und Forschung interessant machen. So bekamen die Entwickler von BrookGPU ein Übernahmeangebot: Die Hälfte wechselte daraufhin zu AMD, der andere Teil zu Nvidia. Bei AMD wurde die API weiter verbessert und in Brook+ umbenannt. Auf Seiten Nvidias entstand daraus CUDA. 3.2 OpenCL Mit OpenCL (Open Computing Language) existiert eine, ursprünglich von Apple entwickelte, API für plattformunabhängiges Rechnen auf diversen Arten von Prozessoren (z.b. CPU und GPU). Zum erstem Mal wurde sie im Mac- Betriebssystem Snow Leopard (Mac OS X v10.6) implementiert um eine spürbare Beschleunigung des Systems zu erzielen. Im Jahre 2008 wurde OpenCL durch die Khronos Group - zu der neben Apple auch Intel, Nvidia, AMD und viel weitere Unternehmen angehören und die unteranderem auch für OpenGL zuständig ist - standardisiert. 7

10 Kapitel 4 CUDA 4 CUDA Bei CUDA (Compute Unified Device Architecture) handelt es sich um eine, im Jahr 2006 eingeführte, GPGPU-Technologie von Nvidia. Seit der GeForce 8 (Chipsatz G80) ist es möglich CUDA einzusetzen. Die Technik ist Hard- und Softwareseitig implementiert: So erfordert jede neue CUDA-Version eine neue Hardware. Als Programmiersprache wird auf C zurückgegriffen, welches von Nvidia um zusätzliche Schlüsselwörter für die parallele Programmausführung erweitert wurde. Ab der Chip-Architektur Fermi ist die Nutzung von C++ möglich. Daneben existieren mittlerweile für eine ganze Reihe von Programmiersprachen Wrapper (z.b. Python, Java,.Net). Mit Tesla wendet sich Nvidia auch gezielt an Firmen und Forschungseinrichtung, die CUDA professionell Einsetzen wollen: Die Karten dienen als reine Stream-Prozessoren und sind deswegen mit keiner Schnittstelle für Monitore ausgestattet. CUAD bietet diverse Möglichkeiten an um GPGPU-Programme zu implementieren (siehe Abbildung 4.1). So kann, wie bereits angesprochen, der von Nvidia bevorzugte Weg mittels C beschritten werden. Daneben lässt sich auch Fortran, das vor allem bei Wissenschaftlern populär ist, als Programmiersprache einsetzen. Alternativ können über OpenCL oder DirectCompute, das von Microsoft entwickelt wurde und Bestandteil von DirectX 11 ist, Berechnungen auf der Grafikkarte vorgenommen werden. Abbildung 4.1: Architektur von CUDA 4.1 Hardwareseitig Ein CUDA-Programm wird auf der Hardware von mehreren Threads ausgeführt. Sie sind direkter Bestandteil der Hardware, wodurch sie leichtgewichtiger sind als die Threads einer CPU. Jeder Thread ist über eine eindeutige ID identifizierbar. Wie in Abbildung 4.2 ersichtlich ist, können Threads über den Shared Memory miteinander kommunizieren. Zwischen 64 und 512 Threads fasst man in einem Blöck zusammen. Bei der Initialisierung von CUDA kann die genaue Threadanzahl angegeben werden: Hier können bestimmte Werte dem 8

11 Kapitel 4 CUDA Algorithmus zu einem extremen Performancevorteil verhelfen. Es wird garantiert, dass alle Threads eines Blocks vom selben Multiprozessor ausgeführt werden. Abhängig vom Grafikchip lassen sich bis zu 8 Blöcke einem Multiprozessor zuordnen. Jeder Block erhält eine ID und ist darüber eindeutig identifizierbar. Die Kommunikation von Threads unterschiedlicher Blöcke kann nur über den Global Memory erfolgen, welcher deutlich langsamer arbeitet als der Shared Memory. Blöcke wiederum werden zu einem Grid zusammengefasst. Alle Blöcke und somit auch Threads führen ein und denselben Algorithmus aus. Abbildung 4.2: Grid-Modell von CUDA Das CUDA-Framework sorgt selbständig dafür, dass die Blöcke gleichmäßig auf die jeweilige Anzahl an GPU-Kernen der Grafikkarte aufgeteilt werden (siehe Abbildung 4.3). Dies wird als Autoskalierung bezeichnet. 9

12 Kapitel 4 CUDA Abbildung 4.3: Autoskalierung 4.2 Softwareseitig Ein GPGPU/CUDA- Programm setzt sich immer aus zwei Teilen zusammen (siehe Abbildung 4.4): einem Host, der die Ausführung des Programms steuert, die Daten bereitstellt und die Ergebnisse zur Weiterverarbeitung entgegen nimmt. Dieser wird auf der CPU ausgeführt und in lässt sich in jeder Programmiersprache entwickeln und kompilieren für die ein entsprechender Wrapper zum Ansteuern der CUDA-API existiert. Der Kernel enthält den eigentlichen Algorithmus und wird parallel in mehreren Threads von der GPU ausgeführt. Nvidia stellt in ihrem CUDA-SDK einen Compiler für C bereit, welcher den Code in eine Art Pseudo- Assembler PTX (Parallel Thread Execution) übersetzt. Abbildung 4.4: Ablauf beim Kompilieren eines CUDA-Programms Wird ein CUDA-Programm gestartet, so werden als erstes die Daten und der Kernel vom Haupt- in den Grafik-Speicher kopiert. Im nächsten Schritt weißt die CPU den Grafikchip an, mit der Ausführung des Algorithmus zu beginnen. Die GPU führt den Kernel nun in jedem Core parallel aus. Zum Schluss sorgt das Host-Programm über die CPU dafür, dass die Ergebnisse in den Hauptspeicher zurückkopiert werden. Der Ablauf ist schematisch in Abbildung 4.5 dargestellt. 10

13 Kapitel 4 CUDA Abbildung 4.5: Ablauf beim Ausführen eines CUDA-Programms 11

14 Kapitel 5 Beispiel Matrizenmultiplikation 5 Beispiel Matrizenmultiplikation Als anschauliches und einfach nachvollziehbares Beispiel für den Einsatz von GPGPU wird in Dokumentationen häufig die Multiplikation zweier Matrizen angeführt. Die Matrizen-Multiplikation findet vor allem für die Transformationen und Rotation geometrischer Objekte Anwendung. Sie stellt ein Schlüsselkonzept der linearen Algebra da. Um zwei Matrizen miteinander zu Multiplizieren, werden sie zunächst in ein Falkschema eingetragen und anschließend wird die eine Matrix in Zeilen- ( M ) und die andere in Spalten-Vektoren ( N ) zerlegt. An der Stelle, wo sich die Vektoren kreuzen wird das Skalarprodukt in die Ergebnismatrix ( P ) eingesetzt. Dieser Vorgang ist in Abbildung 5.1 schematisch dargestellt. Abbildung 5.1: Ablauf Matrixmultiplikation 5.1 Variante 1: Sequentieller Ablauf Auf der CPU kann der Algorithmus sequentiell so umgesetzt werden: Listing 5.1: Matrixmultiplikation mittels CPU Wie in Listing 5.1 entnommen werden kann, werden drei ineinander verschachtelte Schleifen benötigt. Dadurch ergibt sich eine Komplexität von O(n³), wobei n die Größe der Matrix angibt. Je höher die Dimensionen der Matrizen, umso länger benötigt der Algorithmus für die Ausführung. 12

15 Kapitel 5 Beispiel Matrizenmultiplikation 5.2 Variante 2: parallel Durchführung mit CUDA Der oben gezeigte sequentielle Algorithmus lässt sich nun gut zur parallelen Abarbeitung durch CUDA anpassen: Dazu werden die beiden Matrizen im Global Memory der Grafikkarte abgelegt und die Berechnung für jedes Element der Ergebnismatrix wird durch einen eigenem Thread vorgenommen: Listing 5.2: Matrixmultiplikation mit CUDA Wie in Listing 5.2 zu sehen ist, wird ein CUDA-Programm in C geschrieben. In der ersten Zeile taucht das CUDA-spezifische Schlüsselwort global auf, welches immer einen Kernel kennzeichnet. Der Algorithmus kann nun deutlich schneller abgearbeitet werden als der in Variante 1 beschriebene. Jedoch ergeben sich eine Reihe von Nachteile: So wird der Kernel nur von einem einzigen Block durchgeführt. Da hier die maximale Anzahl an Threads auf 512 begrenzt ist, können keine allzu großen Matrizen miteinander multipliziert werden. Auch ist es Nachteilig, dass nur der langsame Global Memory verwendet wird. 5.3 Variante 3: optimierter CUDA-Algorithmus Variante 2 wurde dahingehend optimieren, dass die Matrizen in gleichgroße Teile zerlegt werden. Jeder Teil wird von einem Block und somit von bis zu 512 Threads abgearbeitet. Die Daten werden in kleine Portionen zerlegt und vom Global Memory in den effizienteren Shared Memory kopiert. Der CUDA-Quellcode kann dem Listing 5.3 entnommen werden. 13

16 Kapitel 5 Beispiel Matrizenmultiplikation Listing 5.3: Matrixmultiplikation mit CUDA (optimiert) 14

17 Kapitel 6 Anwendung 6 Anwendung Die Einsatzgebiete von CUDA sind vielfältig: Simulation von physikalischen Vorgängen (Strömungen, Gravitation, Temperatur und Crash-Tests) Wettervorhersage der Daten- und Finanzanalyse Verarbeitung von akustischen und elektrischen Signalen CT- und Ultraschall-Bildrekonstruktion Kryptographie (z.b. MD5-Brute-Force) 6.1 Nvidia PhysX Da in Computerspielen verstärkt Physiksimulation eingesetzt wird um das Erscheinungsbild möglichst realistisch darzustellen, diese Berechnung die CPU allerding sehr stark beansprucht, hat Anfang der 2000er Jahre der amerikanische Halbleiterhersteller Ageia Technologies separate Physikbeschleuniger-Karten (PPU) entwickelt und auf den Markt gebracht. Durch sie war eine detailreichere und weitreichendere Simulation möglich. Einige große Hersteller setzten die Technologie in ihren Spielen ein. Bei Spielern ohne Physikbeschleunigerkarte wurden die entsprechenden Effekte dann nicht dargestellt, was jedoch für den Spielverlauf keine negativen Folgen hatte. Im Jahre 2008 übernahm Nvidia das Unternehmen und integrierte deren Physik-Engine PhysX in CUDA. So ist es heutzutage möglich, eine entsprechende CUDA-fähige Grafikkarte vorausgesetzt, sehr detailreiche physikalische Simulationseffekte ohne entsprechende Erweiterungskarten zu erleben. Die Berechnung übernimmt in dem Fall direkt die GPU. Sollte diese schon mit der reinen Grafikberechnung ausgelastet sein, so kann PhysX auch auf eine zweite Grafikkarte ausgelagert werden. 6.2 Folding@home Bei Folding@home handelt es sich um ein Projekt der Stanford Universität. Dabei wird die Faltung von Proteinen simuliert, was zur Erforschung von Alzheimer, BSE und Krebs von großem Nutzen ist. Um bei dem Projekt mitzumachen, lädt man sich einen Client herunter. Dieser bezieht dann Daten vom Server der Universität und führt im Hintergrund Berechnungen mit ihnen durch. Die Ergebnisse werden letztendlich wieder an den zentralen Server geleitet. So ergibt sich ein weltweites Netzwerk, welches im Ganzen einen Supercomputer darstellt (Distributed Computing). In neueren Client-Versionen kann die GPU mittels CUDA die anfallenden Simulationen durchführen. Ursprünglich war das Projekt ganz auf den Einsatz auf einer CPU konzipiert. 6.3 Adobe Creative Suite Auch die Design- und Grafikprogramme von Adobe setzen seit Version 4 CUDA ein. Besonders beim Rendern von Videos ergibt sich ein enormer Geschwindigkeitsvorteil, so dass Effektvorschauen größtenteils in Echtzeit ablaufen können. Ebenso werden aufwändige Transformationen (z.b. Drehen, 15

18 Kapitel 6 Anwendung Skalieren) und der Einsatz von Filtern und Effekten in Photoshop und Illustrator auf die Grafikkarte verlagert, wodurch ein flüssigeres Arbeiten ermöglicht werden soll. 16

19 Kapitel 7 Quellen 7 Quellen DA_C_Programming_Guide.pdf html Folien/Mueller-Paper.pdf c t 11/2009, Parallel-Werkzeuge, Seite 142ff, Manfred Bertuch 17

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

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

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

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

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

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

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

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

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

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

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

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

CUDA Workshop. Ausblick. Daniel Tenbrinck

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

Mehr

OpenCL. OpenCL. Boris Totev, Cornelius Knap

OpenCL. OpenCL. Boris Totev, Cornelius Knap OpenCL OpenCL 1 OpenCL Gliederung Entstehungsgeschichte von OpenCL Was, warum und überhaupt wieso OpenCL CUDA, OpenGL und OpenCL GPUs OpenCL Objekte Work-Units OpenCL Adressbereiche OpenCL API Codebeispiel

Mehr

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

GPGPU-Programmierung

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

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

GPGPU-Programmierung

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

Mehr

CPU, GPU und FPGA. CPU, GPU und FPGA Maximilian Bandle, Bianca Forkel 21. November 2017

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

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

Multicore-Architekturen

Multicore-Architekturen Universität Erlangen- Nürnberg Technische Universität München Universität Stuttgart Multicore-Architekturen Vortrag im Rahmen der Ferienakademie 2009 Kurs 1: Programmierkonzepte für Multi-Core Rechner

Mehr

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

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

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

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

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

OpenMP. Viktor Styrbul

OpenMP. Viktor Styrbul OpenMP Viktor Styrbul Inhaltsverzeichnis Was ist OpenMP Warum Parallelisierung Geschichte Merkmale von OpenMP OpenMP-fähige Compiler OpenMP Ausführungsmodell Kernelemente von OpenMP Zusammenfassung Was

Mehr

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

Masterpraktikum Scientific Computing

Masterpraktikum Scientific Computing Masterpraktikum Scientific Computing High-Performance Computing Thomas Auckenthaler Wolfgang Eckhardt Technische Universität München, Germany Outline Entwicklung General Purpose GPU Programming (GPGPU)

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

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

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010

PhysX Evaluation. Softwarepraktikum Computergraphik. Daniel Brock, Robert Kreuzer, Simon Kufner. 5. Juli 2010 PhysX Evaluation Softwarepraktikum Computergraphik Daniel Brock, Robert Kreuzer, Simon Kufner 5. Juli 2010 Daniel Brock, Robert Kreuzer, Simon Kufner () PhysX Evaluation 5. Juli 2010 1 / 17 1 Aufgabenstellung

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

GPGPU mit NVIDIA CUDA

GPGPU mit NVIDIA CUDA 01.07.12 GPGPU mit NVIDIA CUDA General-Purpose on Formatvorlagecomputing des Graphics Processing durch Units Untertitelmasters mit KlickenCompute bearbeiten NVIDIA Unified Device Architecture Gliederung

Mehr

Refactoring the UrQMD Model for Many- Core Architectures

Refactoring the UrQMD Model for Many- Core Architectures Refactoring the UrQMD Model for Many- Core Architectures Mathias Radtke Semiar: Softwaretechnologie (WS 2013/2014 Goethe-Universität Frankfurt Agenda: 1. UrQMD 2. CPU Vs. GPU 3. Von FORTRAN zu C++/OpenCL

Mehr

C-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012

C-to-CUDA-Compiler. Johannes Kölsch. October 29, 2012 October 29, 2012 Inhaltsverzeichnis 1 2 3 4 5 6 Motivation Motivation CUDA bietet extreme Leistung für parallelisierbare Programme Kompliziert zu programmieren, da multi-level parallel und explizit verwalteter

Mehr

Eine kurze Geschichte der Grafikkarten

Eine kurze Geschichte der Grafikkarten 3.1 Einführung Eine kurze Geschichte der Grafikkarten ursprünglich: Graphics Card steuert Monitor an Mitte 80er: Grafikkarten mit 2D-Beschleunigung angelehnt an Arcade- und Home-Computer frühe 90er: erste

Mehr

Georg Molzer 1HDD 3D-Grafikkarten GDV-Hardware

Georg Molzer 1HDD 3D-Grafikkarten GDV-Hardware 3D-GRAFIKKARTEN Einleitung: 3D-Grafikkarten haben in erster Linie den Zweck, den Hauptprozessor beim Darstellen aufwendiger dreidimensionaler Szenarien zu entlasten. Sie übernehmen dabei einen Großteil

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

OpenGL. (Open Graphic Library)

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

Mehr

OpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.

OpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen. OpenCL Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer tim.wiersdoerfer@student.uni-siegen.de Abstract: In diesem Dokument wird ein grundlegender Einblick in das relativ

Mehr

Im Bereich der Entwicklung und Herstellung von Prozessoren spielen

Im Bereich der Entwicklung und Herstellung von Prozessoren spielen Prozessor (CPU) Allgemeines, Begriffe, Entwicklung Der Prozessor ist heutzutage das Herzstück fast eines jeden elektronischen Geräts. Er ist ein hochkomplexer Chip, der mit feinsten Halbleiterstrukturen

Mehr

Multicore und mobile, stromsparende Anwendungen ein Widerspruch? Hubert Hafner Product Marketing

Multicore und mobile, stromsparende Anwendungen ein Widerspruch? Hubert Hafner Product Marketing Multicore und mobile, stromsparende Anwendungen ein Widerspruch? Hubert Hafner Product Marketing Winterthur, September 2010 Agenda Über Kontron Anforderungen der mobilen Welt Aktuellen Atom -Techniken

Mehr

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

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff

Parallel Computing. Einsatzmöglichkeiten und Grenzen. Prof. Dr. Nikolaus Wulff Parallel Computing Einsatzmöglichkeiten und Grenzen Prof. Dr. Nikolaus Wulff Parallel Architekturen Flynn'sche Klassifizierung: SISD: single Instruction, single Data Klassisches von-neumann sequentielles

Mehr

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

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

Mehr

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

Prozessor- und Rechnerarchitekturen (Master)

Prozessor- und Rechnerarchitekturen (Master) Prozessor- und Rechnerarchitekturen (Master) Themen am 31.05.17: Was ist ein Grafik-Chip? Was soll berechnet werden? Warum kann das keine Standard-CPU machen?? ProRecArc17_V8 Ulrich Schaarschmidt HS Düsseldorf,

Mehr

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. Paralleler Cuckoo-Filter Seminar: Implementierungstechniken für Hauptspeicherdatenbanksysteme Jeremias Neth München, 21. November 2017 1 Paralleler Cuckoo-Filter Cuckoo-Hashtabelle Serieller Cuckoo-Filter

Mehr

General-purpose computing on GPUs

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

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

FPGA Beschleuniger. Your Name. Armin Jeyrani Mamegani Your Organization (Line #2)

FPGA Beschleuniger. Your Name. Armin Jeyrani Mamegani Your Organization (Line #2) FPGA Beschleuniger 15.12.2008 Armin Jeyrani Mamegani Your Name HAW Hamburg Your Title Department Your Organization Informatik (Line #1) Your Organization (Line #2) Einleitung Wiederholung aus AW1: Handy

Mehr

> High-Level Programmierung heterogener paralleler Systeme

> High-Level Programmierung heterogener paralleler Systeme > High-Level Programmierung heterogener paralleler Systeme Projektseminar im SoSe 2012 Prof. Sergei Gorlatch, Michel Steuwer, Tim Humernbrum AG Parallele und Verteilte Systeme, Westfälische Wilhelms-Universität

Mehr

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

Einführung in C++ Oliver Rheinbach. Büro T03 R03 D53 Tel

Einführung in C++ Oliver Rheinbach. Büro T03 R03 D53 Tel Einführung in C++ Oliver Rheinbach Büro T03 R03 D53 Tel. 0201 183 2504 oliver.rheinbach@uni-duisburg-essen.de Universität Duisburg-Essen Fachbereich Mathematik O. Rheinbach 2 Einführung in C++ Dienstag,

Mehr

Definitionen/Vorarbeit zum Thema Java

Definitionen/Vorarbeit zum Thema Java Definitionen/Vorarbeit zum Thema Java Programmiersprachen: System von Wörtern und Symbolen, die zur Formulierung von Programmen für die elektronische Datenverarbeitung verwendet werden. Arten: z.b. Javascript

Mehr

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Christian Siegl 1, Hannes G. Hofmann 1, Benjamin Keck 1, Marcus Prümmer 1, Joachim Hornegger 1,2 1 Lehrstuhl für Mustererkennung,

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

GPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12

GPGPU-Programming. Constantin Timm Informatik 12 TU Dortmund 2012/04/09. technische universität dortmund. fakultät für informatik informatik 12 12 GPGPU-Programming Constantin Timm Informatik 12 TU Dortmund 2012/04/09 Diese Folien enthalten Graphiken mit Nutzungseinschränkungen. Das Kopieren der Graphiken ist im Allgemeinen nicht erlaubt. Motivation

Mehr

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL

Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Hardware-unabhängige Beschleunigung von Medizinischer Bildverarbeitung mit OpenCL Christian Siegl 1, Hannes G. Hofmann 1, Benjamin Keck 1, Marcus Prümmer 1, Joachim Hornegger 1,2 1 Lehrstuhl für Mustererkennung,

Mehr

Grafikkarten. Institut für Informatik, LMU München Seminar: Medientechnik, SoSe 2003 LS Prof. Hussman Referentin: Milena Velikova

Grafikkarten. Institut für Informatik, LMU München Seminar: Medientechnik, SoSe 2003 LS Prof. Hussman Referentin: Milena Velikova Grafikkarten Institut für Informatik, LMU München Seminar: Medientechnik, SoSe 2003 LS Prof. Hussman Referentin: Einführung Die Grafikkarte die Schnittstelle zur visuellen Ausgabe von Daten wandelt Signale

Mehr

Systeme I: Betriebssysteme Kapitel 4 Prozesse. Wolfram Burgard

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

Mehr

Praktische Übungen zu Computertechnik 2. Versuchsprotokoll

Praktische Übungen zu Computertechnik 2. Versuchsprotokoll Praktische Übungen zu Computertechnik 2 Versuchsprotokoll Versuch: C2 Parallelrechner Versuchsdatum und -zeit: Donnerstag, 03. Juni 2010, 10-13 Uhr Betreuer: Adrian Knoth Name, Studiengang, Mat.-Nr.: Ralf

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

Prozessor- und Rechnerarchitekturen (Master)

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

Mehr

Software Engineering für moderne parallele Plattformen 9. GPGPUs: Grafikkarten als Parallelrechner

Software Engineering für moderne parallele Plattformen 9. GPGPUs: Grafikkarten als Parallelrechner Software Engineering für moderne parallele Plattformen 9. GPGPUs: Grafikkarten als Parallelrechner Dipl.-Inform. Korbinian Molitorisz M. Sc. Luis Manuel Carril Rodriguez KIT Universität des Landes Baden-Württemberg

Mehr

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

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

Mehr

MITK-OpenCL: Eine Erweiterung für das Medical Imaging Interaction Toolkit

MITK-OpenCL: Eine Erweiterung für das Medical Imaging Interaction Toolkit MITK-OpenCL: Eine Erweiterung für das Medical Imaging Interaction Toolkit Jan Hering 1,2, Ingmar Gergel 1, Susanne Krömker 2, Hans-Peter Meinzer 1, Ingmar Wegner 1 1 Abt. Medizinische und Biologische Informatik,

Mehr

Ferienakademie Erik Muttersbach

Ferienakademie Erik Muttersbach Ferienakademie 2009 - Erik Muttersbach 1. Einführung 2. Kernels, Threads, Blocks 3. CUDA Execution Model 4. Software Stack 5. Die CUDA Runtime API 6. Speichertypen/ Zugriff 7. Profiling und Optimierung

Mehr

DOAG Konferenz 2007 in Nürnberg

DOAG Konferenz 2007 in Nürnberg DOAG Konferenz 2007 in Nürnberg Auswahl und Sizing: Die richtige Hardware (+Software) für Oracle Björn Bröhl Projektmanager Handlungsbevollmächtigter Seite 1 Inhalt Die Zielsetzung Vorgehensweise Auswahl

Mehr

GPGPU WITH OPENCL. Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried

GPGPU WITH OPENCL. Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried GPGPU WITH OPENCL Praktikum Parallele Rechnerarchitekturen, 2015w Franz Richter-Gottfried INFRASTRUCTURE Enqueue interactive job srun --gres --pty bash Graphics cards available for tesla_k20,

Mehr

CUDA. Axel Jena, Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Axel Jena, Jürgen Pröll 1

CUDA. Axel Jena, Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Axel Jena, Jürgen Pröll 1 CUDA Axel Jena, Jürgen Pröll Multi-Core Architectures and Programming Axel Jena, Jürgen Pröll 1 Warum Tesla? Traditionelle Graphikkarten Getrennte Prozessoren für Vertex- / Pixelberechnungen - Nachteil:

Mehr

Seminar: Grafikprogrammierung

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

Mehr

OpenCL. Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian

OpenCL. Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian OpenCL Multi-Core Architectures and Programming (Seminar) Apelt, Nicolas / Zöllner, Christian Hardware-Software-Co-Design Universität Erlangen-Nürnberg Apelt, Nicolas / Zöllner, Christian 1 Was ist OpenCL?

Mehr

Architektur von Parallelrechnern 50

Architektur von Parallelrechnern 50 Architektur von Parallelrechnern 50 Rechenintensive parallele Anwendungen können nicht sinnvoll ohne Kenntnis der zugrundeliegenden Architektur erstellt werden. Deswegen ist die Wahl einer geeigneten Architektur

Mehr

Grundlagen Rechnerarchitektur und Betriebssysteme

Grundlagen Rechnerarchitektur und Betriebssysteme Grundlagen Rechnerarchitektur und Betriebssysteme Johannes Formann Definition Computer: Eine Funktionseinheit zur Verarbeitung von Daten, wobei als Verarbeitung die Durchführung mathematischer, umformender,

Mehr

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

Mehr

FSJS- X3000. Corsair AX1200 Gold. Asus P6T7 Mainboard. Corsair (3x4GB RAM) MSI GTX 780. Intel Core i7-990x

FSJS- X3000. Corsair AX1200 Gold. Asus P6T7 Mainboard. Corsair (3x4GB RAM) MSI GTX 780. Intel Core i7-990x Lehrlingswettbewerb Züri Oberland 2013 Uster Ausbildungszentrum Zürcher Oberland Corsair AX1200 Gold CO 2 -refrigeriertes Liquid- Thermotransfer- Zirkulationssystem Asus P6T7 Mainboard FSJS- X3000 Corsair

Mehr

CUDA. Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig. Hardware-Software-Co-Design Universität Erlangen-Nürnberg

CUDA. Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig. Hardware-Software-Co-Design Universität Erlangen-Nürnberg CUDA Philip Höhlein, Nils Werner Supervision: R. Membarth, P. Kutzer, F. Hannig Hardware-Software-Co-Design Universität Erlangen-Nürnberg Philip Höhlein, Nils Werner 1 Übersicht Entwicklungsumgebung RSA-Faktorisierer

Mehr

Parallel Computing in der industriellen Bildverarbeitung

Parallel Computing in der industriellen Bildverarbeitung SOLUTIONS FOR MACHINE VISION Parallel Computing in der industriellen Bildverarbeitung Dipl.-Inform. Alexander Piaseczki Research and Development Sirius Advanced Cybernetics GmbH Tools & Solutions für die

Mehr

Algorithmik kontinuierlicher Systeme

Algorithmik kontinuierlicher Systeme Algorithmik kontinuierlicher Systeme Matrixstrukturen Feste Dimension von Matrizen und Vektoren Geometrische Anwendungen Matrix beschreibt meist Transformationen von Vektoren im 2D bzw. 3D d.h. Dimension

Mehr

Seminar Parallele Rechnerarchitekturen SS04 \ SIMD Implementierung aktueller Prozessoren 2 (Dominik Tamm) \ Inhalt. Seite 1

Seminar Parallele Rechnerarchitekturen SS04 \ SIMD Implementierung aktueller Prozessoren 2 (Dominik Tamm) \ Inhalt. Seite 1 \ Inhalt Seite 1 \ Inhalt SIMD Kurze Rekapitulation 3Dnow! (AMD) AltiVec (PowerPC) Quellen Seite 2 \ Wir erinnern uns: Nach Flynn s Taxonomie kann man jeden Computer In eine von vier Kategorien einteilen:

Mehr

Hyrican Military Gaming

Hyrican Military Gaming Hyrican Military Gaming LASST DIE SPIELE BEGINNEN! Robust, stabil und solide Military-Gaming-Systeme bieten die perfekte Ausstattung für Gamer, die keine Kompromisse für ihre Gaming-Leistung eingehen wollen.

Mehr

Echtzeit-Multitasking

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

Mehr

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke,

Parallele Algorithmen mit OpenCL. Universität Osnabrück, Henning Wenke, Parallele Algorithmen mit OpenCL Universität Osnabrück, Henning Wenke, 2013-05-29 Kapitel Parallelität [1]: Parallel Programming (Rauber, Rünger, 2007) [2]: Algorithms Sequential & Parallel A Unified Approach

Mehr

Am Beispiel der SHARC-DSPs Jan Kiene

Am Beispiel der SHARC-DSPs Jan Kiene Besonderheiten von DSP-Architekturen Am Beispiel der SHARC-DSPs Jan Kiene Inhalt Digitale Signalverarbeitung (kurze Wdh) Anforderungen an DSPs Besonderheiten von DSP-Architekturen Die SHARC-DSPs von Analog

Mehr

Echtzeit-Multitasking

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

Mehr

Die Sandy-Bridge Architektur

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

Mehr

Seminar Multicore-Programmierung

Seminar Multicore-Programmierung Multicore- und GPGPU-Architekturen Fakultät für Informatik und Mathematik Universität Passau 04. November 2010 APUs / 1 / 39 Inhaltsverzeichnis I APUs / APUs / 2 / 39 Inhaltsverzeichnis II APUs / 3 / 39

Mehr

Wichtige Rechnerarchitekturen

Wichtige Rechnerarchitekturen Wichtige Rechnerarchitekturen Teil 2 IBM 360 1 IBM 360 Angekündigt im April 1964, weil alle Aspekte der maschinellen Datenverarbeitung (general purpose computer) zusammengefasst werden sollten: 360 Grad

Mehr

Verteilte Betriebssysteme

Verteilte Betriebssysteme Verteiltes System Eine Sammlung unabhängiger Rechner, die dem Benutzer den Eindruck vermitteln, es handle sich um ein einziges System. Verteiltes Betriebssystem Betriebssystem für verteilte Systeme Verwaltet

Mehr

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

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

Mehr

Mehrprozessorarchitekturen

Mehrprozessorarchitekturen Mehrprozessorarchitekturen (SMP, UMA/NUMA, Cluster) Arian Bär 12.07.2004 12.07.2004 Arian Bär 1 Gliederung 1. Einleitung 2. Symmetrische Multiprozessoren (SMP) Allgemeines Architektur 3. Speicherarchitekturen

Mehr

Systeme I: Betriebssysteme Kapitel 8 Speicherverwaltung

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

Mehr

Evaluation. Einleitung. Implementierung Integration. Zusammenfassung Ausblick

Evaluation. Einleitung. Implementierung Integration. Zusammenfassung Ausblick Christopher Schleiden Bachelor Kolloquium 15.09.2009 Einleitung Evaluation Implementierung Integration Zusammenfassung Ausblick Einleitung laperf Lineare Algebra Bibliothek für C++ Möglichkeit zur Integration

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

Maximale Power mit der neuen ERAZER Gaming Notebook-Linie von MEDION

Maximale Power mit der neuen ERAZER Gaming Notebook-Linie von MEDION Maximale Power mit der neuen ERAZER Gaming Notebook-Linie von MEDION ERAZER Gaming-Notebooks mit 15 - oder 17 -Displays überzeugen mit Intel Core Prozessoren, NVIDIA GeForce Grafik und mechanischem Keyboard

Mehr