Vergleich der Frameworks OpenCL und CUDA zur GPGPU- gestützten Datenverarbeitung Leonid Kostrykin Matr.Nr.: 846728 Lehrstuhl.

Slides:



Advertisements
Ähnliche Präsentationen
< CUDA implementation>
Advertisements

Computersimulation steuert echtes Frontpanel an
KA – Rechnerarchitektur I ____________________________________________________________________________________________ ____________________________________________________________________________________________.
Constantin Timm Informatik 12 TU Dortmund
Informatik 12 | DAES Compilerbau Wintersemester 2010 / 2011 Dr. Heiko Falk Technische Universität Dortmund Lehrstuhl Informatik 12 Entwurfsautomatisierung.
WS 2009/10 1 Systeme 1 Kapitel 1 Aufbau von Rechnern.
Kapitel 3 5 Rechnerorganisation
W. Oberschelp G. Vossen Kapitel 7.
OpenMP Präsentation im Rahmen des Seminars
Studiengang Informatik FHDW
von Dennis Braun Till Meyenburg Marvin Barghorn
AMDs Next Generation Die Hammer Familie Eine Kurzpräsentation von Frank Grümmert bei Herrn Prof. Dr.-Ing. Risse für das RST-Labor.
PCI-Express als Grafikschnittstelle
Inhalt Der Cell Prozessor Aufbau des Cells Platine Block Diagramm
GPU Architectures: GeForce 8, GeForce 9 and Future
Random Heightmap on GPU
Matrix Multiplication on CUDA
< Best practices >
Beschleunigung Virtueller Privater Netze durch Netzwerkprozessoren
Referat zum Thema „DLL“
Leitfaden Motivation Was ist CUDA ? NVIDIA Grafikkarte Programmierung
Supercomputer FSJS-X3000 Lehrlingswettbewerb Züri Oberland 2013 Uster
Duo- und Quad Prozessor-Architektur
Aufbau und Funktionsweise
Betriebssysteme allgemein
Clustering mittels Grafikprozessor
Einführung in die Programmierung
Grafikkarten.
Das Betriebssystem.
Service Computing   Prof. Dr. Ramin Yahyapour IT & Medien Centrum 19. Januar 2010.
GPU Computing Burim Kameri Fachhochschule Hannover (FHH)
GPU Computing Burim Kameri Fachhochschule Hannover (FHH)
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
3.4 CPU-Chips und Busse CPU-Chips
Signal-Prozessoren DSV1, 2009, Hhrt, 1 Mikro-Prozessor Von Neumann-Architektur Daten und Programmcode im gleichen Speicher => Sequenzieller Zugriff auf.
Algorithm Engineering „GPU Algorithmen“
Computerarchitektur AMD Athlon und Multikernprozessoren
Ein Vortrag von Simon Bayer
Refactoring the UrQMD Model for Many- Core Architectures Mathias Radtke Semiar: Softwaretechnologie (WS 2013/2014 Goethe-Universität Frankfurt.
Inhalt Motivation Hardware Design aktueller GPUs
Multiprozessoren: Herausforderung für die Software
Verarbeitung und Computerinneres
Parallele Programmierung mit Java, SS 2001 Spar/Timber - Programmiersprache und Compiler für high-performance Berechnungen Technische Universität München.
Einführung in Optimierungsprobleme auf modernen Rechnerarchitekturen
Central Processing Unit von David Kleuker und Thomas Auner
Directors Prof. Dr.-Ing. K.D. Müller-Glaser Prof. Dr.-Ing. J. Becker Prof. Dr. rer. nat. W. Stork Institute for Information Processing Technology.
Central Processing Unit (Zentraleinheit)
PhysX auf der GPU in Batman: Arkham Asylum & bei Fluid Simulations Universität zu Köln Historisch-Kulturwissenschaftliche Informationsverarbeitung Softwaretechnologie.
Proseminar – Computer Graphics Nikolaos Tsanakas computer graphics & visualization OpenGL Shading Language.
Rechnerstrukturen Rechnerarchitektur von Intel 8088 BIT WiSe , Referent: Euvhen Berlev.
Objektorientierte (OO) Programmierung
Wissenschaftliches Rechnen auf Grafikkarten Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow.
Wissenschaftliches Programmieren „CUDA“ Achim Grolms Buyu Xiao Guanhua Bai Betreuer: Dipl.-Ing. Bastian Bandlow.
INTEL im vergleich mit AMD
Modellbasierte Datenanalyse zur Referenzierung und automatischen Repositionierung eines faseroptischen Hydrophons Collins William Lapa Kéyanfé
Mario´s kleines Hardwarelexikon Vom Arbeitsspeicher bis zur Soundkarte.
Aachen, Seminarvortrag Von: Lukas Abels-Vehns OpenCL mit Aparapi.
© 2008 TravelTainment The Amadeus Leisure Group Thread-Programmierung im Qt-Framework Von: Simon Lubberich Erstbetreuer:
Seminararbeit im Studiengang „Scientific Programming“ Konzeption eines nativen Webserver-Moduls zur hochperformanten Auslieferung dynamisch generierter.
Paralleleles Rechnen auf Grafikkarten Einführung Christian Schwarz.
Center for Biotechnology Bielefeld Bioinformatics Service Netzwerk - Programmierung Threads Alexander Sczyrba Jan Krüger.
TECHNIK ZUM ANFASSEN [Designentwurf] Intel 4004 mit Goldcap Die klassische i386-Drei, von Links nach Rechts: Cachecontroller, i386-Prozessor, FPU AMD Am486Intel.
Seminarvortrag Möglichkeiten zur dreidimensionalen Darstellung von Straßenoberflächen Matthias Baumgarten.
Lineare Algebra Softwareprojekt: Anwendung von Algorithmen Sebastian Kürten, Philipp Borgers SoSe 2010.
Blowfish mit CUDA Dominik Oepen Inhalt ● Blowfish Grundlagen ● Implementierungsdetails ● Performance ● Fazit.
CPU Furkan Dogan.
מבוא למערכות מחשב ואסמבלי
Shared Memory Programmierung: Grundlagen
 Präsentation transkript:

Vergleich der Frameworks OpenCL und CUDA zur GPGPU- gestützten Datenverarbeitung Leonid Kostrykin Matr.Nr.: Lehrstuhl für Medizintechnik Helmholtz-Institut für Biomedizinische Technik der RWTH Aachen Pauwelsstraße Aachen Fakultätsinterner Betreuer: Prof. Dr. rer. nat. W. Hillen, FH Aachen Betreuender wissenschaftlicher Mitarbeiter: Dr.-Ing. M. de la Fuente

Überblick  Einleitung  Technischer Hintergrund oGrafikprozessor-Besonderheiten oGPGPU-Grundlagen  CUDA und OpenCL oKonzeptionelle Ebene oProgrammiermodelle  Fazit und Ausblick

Einleitung  GPGPU – “general purpose computing on graphics processing units” – Möglichkeiten und Grenzen  Dazu: populäre Frameworks CUDA und OpenCL Leistungsfähigkeit von Haupt- und Grafikprozessoren im zeitlichen Verlauf [NVIDIA, 2012b] Intel Core i7: 4 Kerne NVIDIA GeForce GTX 280 : 240 Kerne

Beckenmodell – CT-Aufnahme Normalen der CT-Aufnahme, farbkodiertCT-Aufnahme mit Lichtsimulation Einleitung

Grafikprozessor-Besonderheiten  Grundlegendes Problem digitaler Rechner: von-Neumann-Flaschenhals Herangehensweisen:  CPU: Pipelining und Cachespeicher  GPU: Hohe Speicherbandbreite verdeckt Latenz  Mehr Chipfläche ausgewiesen für… oFlusskontrolle und Cachespeicher (CPU) oRechenlogik (GPU)

Problem-Eignung zur GPGPU-Beschleunigung

Typischer CUDA-fähiger Grafikprozessor: G80 mit „Tesla“-Architektur GPGPU-Grundlagen NVIDIA G80 GPU Architektur [Ruetsch und Oster, 2008]  128 SP  16 MP mit je 8 SP

Konzeptionelle Ebene: CUDA  CUDA – “compute unified device architecture” oSprache CUDA C/C++ oCUDA-Architektur (GPGPU-Hardware, Treiber, …)  Compute Capability: 1.x (Tesla) 2.x (Kepler) 3.x (Fermi)  Programmteile unterschieden nach Domänen: oHost: CPU + Hauptspeicher oDevice: GPU + Grafikspeicher oWerden gemischt kodiert  Programmteil auf Device: Kernel

Konzeptionelle Ebene: OpenCL  OpenCL – “open computing language”  Plattform-Modell  SPMD – “single program multiple data” o1 Datenstrom  1 Befehlszähler  unterschiedliche Instruktionen je Datenstrom / Taktzyklus  Hierarchische Aufteilung wie „Tesla“-Architektur  Kernel: Einstiegspunkt in Device-Programmteil OpenCL Plattform-Modell als UML-Klassendiagramm Device - globaler Speicher - konst. Speicher Host steuert Recheneinheit - geteilter Speicher Abarbeitungs- element - dedizierter Speicher SIMDSPMD 1 * 1 *

Konzeptionelle Ebene: Ausführungsmodelle Abbildung auf Hardware CUDAKonzeptOpenCL Abbildung auf Plattform-Modell Streaming- Prozessor Thread Kernel-Abarbei- tungsstrang Work-Item Abarbeitungs- element Grid Gesamtmenge aller Abarbeitungs- stränge: 1-, 2- oder 3-dimensional organisiert NDRange bzw. Index-Raum Streaming- Multiprozessor Block Verbund aus benachbarten Abarbeitungs- strängen Work-Group Recheneinheit

CUDAOpenCL Host- Device- Kommuni kation Globaler / Konst. Speicher  globaler / konst. Speicher Koop. im Block Geteilter Speicher  geteilter MP- Speicher Lokaler Speicher  geteilter Recheneinheit- Speicher Lokale Variablen Privater Speicher  SP- Register (nicht abzählbar) Lokaler Speicher  globaler Device- Speicher Privater Speicher  dedizierter Abarbeitungselem ent-Speicher Konzeptionelle Ebene: Speichermodelle CUDA-Speichermodell [Kirk und Hwu, 2010]

Konzeptionelle Ebene: Speichermodelle Besonderheiten des CUDA-Speichermodells:  Zusätzliche Speicherklassen Textur-Speicher (CC 1.0) – nur lesbar Surface-Speicher (CC 2.0) – les- und schreibbar omit Caches für örtliche 2D-Lokalität optimiert oextra-Recheneinheiten beschleunigen Adressberechnungen  Unified Virtual Addressing (CC 2.0, nur 64bit)  Zeiger-Domäne implizit bekannt  vereinfachte Schnittstellen HauptspeicherGlobaler SpeicherKonstanter Speicher 0 … Adressräume ohne UVA: 0 … Adressraum mit UVA:

Programmiermodelle: Überblick CUDA:  Host- und Device-Programmierung in CUDA C/C++ OpenCL:  Device-Programmierung in OpenCL C (C99-Teilmenge) Typische Aspekte:  Initialisierung?  Fehlerbehandlung?  Debugging? Weiterführende Fragen:  Kernel-Steuerung?  Synchronisation?  Zugriff auf OpenGL-Objekte?

Initialisierung, Fehlerbehandlung und Debugging  OpenCL muss explizit initialisiert werden  OpenCL-Kontext Fehlerbehandlung  CUDA: Rückgabewert jedes API-Aufrufs  OpenCL: nicht einheitlich Debugging  CUDA: „Nsight“ – integriert sich in bestehende IDE  OpenCL: implementierungsspezifisch oAMD: „gDEBugger“ – integriert sich ebenfalls in IDE ogibt keinen für NVIDIA-Hardware  OpenCL-Kernels auf NVIDIA-Hardware debuggen nicht möglich

Kernel-Steuerung und Synchronisation Kernel-Aufruf:  CUDA: Spracherweiterungen  OpenCL: Aufrufe der Host-API  konventionell, aufwendiger Synchronisation:  CUDA wie OpenCL: bzgl. Threads eines Blocks oder Host-Device  Nur OpenCL: bzgl. Befehlen in Befehlswarteschlange

CUDAOpenCL 1.Initialisierung „cudaGLSetGLDevice“Zwei zusätzliche Parameter bei der OpenCL-Initialisierung: 1.„CL_GL_CONTEXT_KHR“ 2.Plattform-spezifisch 2.Objekt- Vorbereitung 1.Bekanntmachung des OpenGL-Objekts in CUDA/OpenCL 2.Sperrung für Exklusivzugriff 3.Objekt-Nutzung 4.Objekt- Freigabe 1.Freigabe des Exklusivzugriffs 2.Aufheben der Bekanntmachung Einschränkungen Nur Texturen mit 1, 2 oder 4 Farbkanälen 3D-Texturen nur lesen; Texturen mit 3 Farbkanälen nur mit Pixeltiefe von 16bit Zugriff auf OpenGL-Objekte

Fazit  Normalenberechnung gutes Beispiel  CUDA und OpenCL konzeptionell sehr ähnlich  Entscheidungsfindung: Weitere Kriterien: o Templates zur Kernel- Programmierung:  CUDA  OpenCL o Unabhängigkeit von bestimmter Plattform zur Laufzeit:   CUDA OpenCL OpenCL oder CUDA – Entscheidungsfindung bezüglich des Entwicklungssystems

Ausblick Röntgenbild-Rekonstruktion eines Herzens aus einem CT- Datensatz (Digitally Reconstructed Radiograph) Volumenrendering eines CT-Datensatzes, das ein Herz zeigt

Literaturverzeichnis  ALT, A.: Mixing Graphics and Compute with Multiple GPUs  AMD: Heterogeneous Computing: OpenCL™ and the ATI Radeon™ HD 5870 (“Evergreen”) Architecture  HOMBERG, W.: OpenCL A Programming Model for eQPACE?  KIRK, David ; HWU, Wen-mei: Programming Massively Parallel Processors: A Hands-on Approach. Burlington: Morgan Kaufmann Publishers, – ISBN  KÜPPERS, Bastian ; KRAFT, B. ; SCZIMAROWSKY, Martin ; VOSS, Alexander: Vorlesungsfolien IT-Systeme SS  MICIKEVICIUS, P.: Local Memory and Register Spilling  MUNSHI, A.: The OpenCL Extension Specification: Version  MUNSHI, A.: The OpenCL Specification: Version  NVIDIA: Introduction to GPU Computing with OpenCL  NVIDIA: NVIDIA’s Next Generation CUDA™ Compute Architecture: Fermi™  NVIDIA: NVIDIA CUDA C Programming Guide  NVIDIA: OpenCL™ Programming Guide for the CUDA™ Architecture  RIBBROCK, D.: Entwurf einer Softwarebibliothek zur Entwicklung portabler, hardwareorientierter HPC Anwendungen am Beispiel von Strömungssimulationen mit der Lattice Boltzmann Methode. Dortmund, Technische Universität Dortmund, Dissertation, 2009  RUETSCH, G. ; OSTER, B.: Getting Started with CUDA  SCHROEDER, Tim C.: Peer-to-Peer & Unified Virtual Addressing  SEIDLER, R.: CUDA und OpenCL  TARIQ, S.: An Introduction to GPU Computing and CUDA Architecture

Vergleich der Frameworks OpenCL und CUDA zur GPGPU- gestützten Datenverarbeitung Leonid Kostrykin Lehrstuhl für Medizintechnik Helmholtz-Institut für Biomedizinische Technik der RWTH Aachen Vielen Dank !