Gliederung. Was ist CUDA? CPU GPU/GPGPU CUDA Anwendungsbereiche Wirtschaftlichkeit Beispielvideo

Ähnliche Dokumente
Praxiseinheit: Realisierung einer hardwarebeschleunigten Disparitätenberechnung zur automatischen Auswertung von Stereobildern

Compute Unified Device Architecture CUDA

RST-Labor WS06/07 GPGPU. General Purpose Computation On Graphics Processing Units. (Grafikkarten-Programmierung) Von: Marc Blunck

GPGPU mit NVIDIA CUDA

Yilmaz, Tolga MatNr: Mesaud, Elias MatNr:

OpenCL. OpenCL. Boris Totev, Cornelius Knap

Multicore-Architekturen

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

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

Masterpraktikum Scientific Computing

Grafikkarten-Architektur

MULTICORE- UND GPGPU- ARCHITEKTUREN

Einführung. GPU-Versuch. Andreas Schäfer Friedrich-Alexander-Universität Erlangen-Nürnberg

OpenCL. Seminar Programmiersprachen im Multicore-Zeitalter Universität Siegen Tim Wiersdörfer

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

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm. Einführung CUDA. Ralf Seidler. Friedrich-Alexander-Universität Erlangen-Nürnberg

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn

Seminar GPU-Programmierung/Parallelverarbeitung

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

GPGPU-Architekturen CUDA Programmiermodell Beispielprogramm Organiosatorisches. Tutorial CUDA. Ralf Seidler

Programmieren. Programmieren. Webseiten aufpeppen. Grafikkarte ausreizen. Coole Sprachen. Kinect am PC. 3D-Programmierung

Projektseminar Parallele Programmierung

Walkabout: Location Based Services mit Android und dem Google Phone

Architektur moderner GPUs. W. Sczygiol - M. Lötsch

General Purpose Computation on GPUs

Optimierung eines neuen Logarithmic-Search-Verfahrens zum Image Mosaicing unter Einsatz des CUDA-Frameworks

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

Die Sandy-Bridge Architektur

Ein Unternehmen der Firmengruppe:

CUDA Nvidia s Parallel Programming Language

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

Untersuchung und Vorstellung moderner Grafikchiparchitekturen

Automatisches Multi-GPU Scheduling in OpenCL

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

Eine kurze Geschichte der Grafikkarten

2 Rechnerarchitekturen

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

Grundlagen der Parallelisierung

Smartphone Entwicklung mit Android und Java

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

OpenCL Implementierung von OpenCV Funktionen

Johann Wolfgang Goethe-Universität

Entwicklung algorithmischer Skelette für CUDA am Beispiel von Affintiy Propagation

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

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

OpenGL. (Open Graphic Library)


High-Performance Bildverarbeitung (nicht nur) mit JAVA. Prof. Dr.Thomas Netzsch - Hochschule Darmstadt - University of Applied Sciences

1 Einleitung. 2 Parallelisierbarkeit von. Architektur

Aktuelle Trends und Herausforderungen in der Finite-Elemente-Simulation

Brückenkurs / Computer

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

Multicore-Architekturen

Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester Tim Conrad

Staff. Tim Conrad. Zeitplan. Blockseminar: Verteiltes Rechnen und Parallelprogrammierung. Sommer Semester Tim Conrad

Teil VIII Von Neumann Rechner 1

IT für Führungskräfte. Zentraleinheiten Gruppe 2 - CPU 1

Vertiefungsrichtung Rechnerarchitektur

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

Intel Cluster Studio. Michael Burger FG Scientific Computing TU Darmstadt

Moderne parallele Rechnerarchitekturen

Einführung in PHP. (mit Aufgaben)

Parallele Programmierung mit GPUs

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Ausarbeitung Seminarvortrag High-Performance-Computing WS 2011/2012

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

GPU-basierte Beschleunigung von MapReduce am Beispiel von OpenCL und Hadoop

Lehreinheit H1 Hardware Grundlagen

CPU Speicher I/O. Abbildung 11.1: Kommunikation über Busse

Grundlagen der Programmierung 2. Parallele Verarbeitung

Tag der Umweltmeteorologie Michael Kunz

Software Engineering für moderne, parallele Plattformen. 9. GPGPUs: Grafikkarten als Parallelrechner. Dr. Victor Pankratius

Systeme 1: Architektur

GPU-basiertes Volumenrendering von multimodalen medizinischen Bilddaten in Echtzeit

Eine Einführung in die Architektur moderner Graphikprozessoren

Extrablatt IT. MADE IN GERMANY.

Die beste Infrastruktur ist nur so schnell, wie der Code der darauf läuft. Fallbeispiel Wettervorhersage

Stream Processing und High-Level GPGPU Sprachen

Programmierung von Graphikkarten

Bibliotheks-basierte Virtualisierung

Proseminar Technische Informatik A survey of virtualization technologies

Cloud-Computing. 1. Definition 2. Was bietet Cloud-Computing. 3. Technische Lösungen. 4. Kritik an der Cloud. 2.1 Industrie 2.

OpenMP. Viktor Styrbul

Konzepte und Methoden der Systemsoftware. Aufgabe 1: Polling vs Interrupts. SoSe bis P

Die Mikroprogrammebene eines Rechners

Computer in Meiderich Computer in Meiderich. terra Mobile PAD 1060T - Das original Windows 8.1 Tablet! Mit optionaler Tastatur!

Games with Cellular Automata auf Parallelen Rechnerarchitekturen

Praktikum im Bereich Praktische Informatik Echtzeitgraphik in C++ und DirectX10. computer graphics & visualization

Untersuchung der Berechnung der 3D-Punktkorrelation auf hochparallelen Plattformen

CUDA 4230 GPU WORKSTATION, KEPLER READY

Hochschule Bremen. Rechnerstrukturen Labor WS 04/05 I7I. Thema: Grafikkarten. Laborbericht. Datum

INTO THE MOLEHILL DER BLICK INS LOCH

Leistungs- und Geschwindigkeitssteigerung. Dipl.-Ing. Sebastian F. Kleinau Applikationsingenieur

Inhalt. Prozessoren. Curriculum Manfred Wilfling. 28. November HTBLA Kaindorf. M. Wilfling (HTBLA Kaindorf) CPUs 28. November / 9

Grundlagen der Programmierung

Produkte und Preise TERRA PC

CAD Arbeitsplatz Einstieg

Computer: PC. Informationstechnik für Luft-und Raumfahrt Aerospace Information Technology

Seminar: Grafikprogrammierung

Transkript:

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 zu entwickeln, die durch den Grafikprozessor(GPU) auf der Grafikkarte abgearbeitet werden. Auf der Seite der Hardware steht die GPGPU auf der Softwareseite die CUDA SDK bestehend aus eine C/C++ Compilers, Debugging Tools sowie den benötigten Libraries. Runterzuladen bei http://developer.nvidia.com/cuda-downloads. Um zu klären wie eine GPU bzw. die weiterentwickelte GPGPU funktioniert sehen wir uns am besten zur Veranschaulichung die CPU als Gegensatz an.

Central Processing Unit Eine CPU ist für universelle Befehle ausgelegt: Sie muss mit willkürlichen Speicherzugriffen, mit Verzweigungen und einer ganzen Reihe von unterschiedlichen Datentypen zurechtkommen. Wie man im Bild sehen kann wird ein großer Teil des Chips vom Cache und dem Controller eingenommen. Die Recheneinheiten (ALU) müssen im Gegensatz dazu mit sehr wenig Platz auskommen. Das obenverwendetebildewurdeauseinemberichtauf Tom s Hardware entnommen, http://www.tomshardware.de/cuda-nvidia- CPU-GPU,testberichte-240065.html

Graphics Processing Unit GPUs wurden von Anfang an auf Grafikberechnungen ausgelegt.ihre Aufgabe besteht darin Pixel zu berechnen. Der Grafikchip arbeitet nach dem SIMD- Prinzip (Single Instruction, Multiple Data und bedeutet das viele Prozessoren ihre Befehlevon einem Befehlsprozessor erhalten. Ein Befehl wird also gleichzeitig auf mehrere Datensätzeangewendet und parallel abgearbeitet z.b. Video, Foto Bearbeitung) 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 wesentlich geringer aus. Das obenverwendetebildewurdeauseinemberichtauf Tom s Hardware entnommen, http://www.tomshardware.de/cuda-nvidia- CPU-GPU,testberichte-240065.html

CUDA (hardwareseitig) CPU lädt in den Kernelauf der GPU Threads gehören zu einem Block Blöcke gehören zu einem Grid Für die genau Zuweisung durch den Programmierer hat jeder Thread, Block, Grid und Kernel eine eigene ID Das oben verwendete Bilde wurde aus http://www.nvidia.com/content/cuda-ptx_isa_1.4.pdf entnommen, Nvidia

CUDA (softwareseitig) SDK besteht aus einer Erweiterung für C sowie einer speziellen Laufzeit-Bibliothek C Erweiterung wird in 4 Bereiche unterteilt: Funktions-Modifikatoren Damit wird angegeben ob Funktionen auf der GPU oder der CPU ausgeführt werden Variablen-Modifikatoren Damit wird angegeben in welchem Speicher auf der GPU die Variablen abgelegt werden sollen Befehl zum Initalisieren der einzelnen Elemente 4 native Variablentypen um Block- und Gridgrößen, sowie Block- und Gridindizes anzugeben Neben C kann man sich allerdings auch noch in andere Programmiersprachen wagen um CUDA zu programmieren, z.b. Fortranwas besonders bei Wissenschaftlern gefragt ist, OpenCL (Open Computing Language) eine ursprünglich von Apple entwickelte Programmiersprache und DirectCompute welches von Microsoft entwickelt wurde und fester Bestandteil von Directx11 ist.

Kompiliervorgang von CUDA Die Software welche mit in CUDA implementiert wird muss aus zwei Teilen bestehen. Einmal dem Host welcher die Ausführung des Programms steuert, die Daten bereitstellt und die Ergebnisse zur Weiterverarbeitung entgegen nimmt. Und dem Kernelder den eigentlichen Algorithmus enthält und diesen nun parallel in der GPU abarbeitet. Das obenverwendetebildewurdevon http://en.wikipedia.org/wiki/file:cuda_processing_flow_(en).png entnommen, by Tosaka

Anwendungsbereiche Foto und Videobearbeitung für den Heimgebrauch, Badaboomum Filme von DVD oder Blurayauf das IPhoneoder andere mobilen Geräte zu konvertieren. Aber auch um Videos in Echtzeit von einem verwackelten unscharfen Bild zu einem schaubarem Video zu konvertieren. Medizin um CT -Bilder klarer darzustellen und das Erkennen von Anomalien zu vereinfachen. Bisher war dieses Verfahren für den klinischen Alltag durch die hohe Ausführungszeit (ca. 9 min für ein einzelnes Bild bei 80 Durchgängen) nicht geeignet - Durch GPU Computing wird die Technik nutzbar gemacht. Fast 2300 mal schneller als mit einer CPU. Finanzen -Mit nur 12 CUDA fähigen Grafikprozessoren ist HanwecksSoftware Volerain der Lage den gesamten US-amerikanischen Optionsmarkt in Echtzeit zu berechnen, dafür waren bisher über 60 konventionelle Server benötigt wurden. Neue Energien -z.b. zur Auswertung von seismischen Daten um Ölbohrungen zu Unterstützen.

Wirtschaftlichkeit Eine Tesla Workstation wie man sie oben sieht kostet rund 10.000 Dollar und beinhaltet 4 Tesla C1060 GPUs, sie benötigt für die rekonstruktioneiner digitalen Thomographie: 59 Sekunden. Um das selbe mit einer bzw. mehreren CPU szu erreichen ist ein vielfaches des Geldes nötig.

Quellen: Winfwiki Wikipedia Elektronik Kompendium Nvidia Tom s Hardware