Kontakt aufnehmen

Schulungsübersicht

Einleitung

  • Was ist GPU-Programmierung?
  • Warum ist die GPU-Programmierung sinnvoll?
  • Welche Herausforderungen und Kompromisse sind mit der GPU-Programmierung verbunden?
  • Welche Frameworks stehen für die GPU-Programmierung zur Verfügung?
  • Wie wählt man das passende Framework für seine Anwendung aus?

OpenCL

  • Was ist OpenCL?
  • Welche Vor- und Nachteile hat OpenCL?
  • Einrichtung der Entwicklungsumgebung für OpenCL
  • Erstellung eines grundlegenden OpenCL-Programms zur Durchführung einer Vektoraddition
  • Nutzung der OpenCL-API zur Abfrage von Geräteinformationen, Allokation und Freigabe des Speichers, Datentransfer zwischen Host und Gerät, Start von Kernels sowie Synchronisation der Threads
  • Verwendung der Programmiersprache OpenCL C zur Erstellung von Kernels, die auf den GPUs ausgeführt werden und Daten verarbeiten.
  • Anwendung vordefinierter Funktionen, Variablen sowie Bibliotheken des OpenCL-Standards für typische Aufgaben
  • Einsatz der Speicherbereiche Global-, Local-, Constant- und Private-Speicher zur Optimierung von Datenübertragungen und -zugriffen
  • Steuerung des Arbeitsablaufs mittels des OpenCL-Ausführungsmodells (Work-Items, Work-Groups sowie ND-Ranges)
  • Debuggen und Testen von OpenCL-Programmen unter Verwendung von Tools wie CodeXL
  • Optimierung von OpenCL-Code durch Coalescing, Caching, Prefetching sowie Profiling

CUDA

  • Was ist CUDA?
  • Welche Vor- und Nachteile bietet CUDA?
  • Vorbereitung der Entwicklungsumgebung für CUDA
  • Erstellung eines einfachen CUDA-Programms zur Durchführung einer Vektoraddition
  • Nutzung der CUDA-API zur Abfrage von Geräteinformationen, Speicherverwaltung, Datentransfer zwischen Host und GPU sowie zum Starten von Kerneln und Synchronisieren der Threads
  • Schreiben von Kernels mittels CUDA C/C++ zur Verarbeitung von Daten auf der GPU.
  • Einsatz integrierter Funktionen, Variablen und Bibliotheken von CUDA für übliche Programmieraufgaben
  • Optimierung mittels CUDA-spezifischer Speicherbereiche wie Global-, Shared-, Constant- sowie Local-Speicher
  • Konfiguration des Ausführungsablaufs durch Definition von Threads, Blöcken und Gittern zur Steuerung der Parallelität
  • Debuggen und Testen von CUDA-Programmen mittels Tools wie CUDA-GDB, CUDA-MEMCHECK oder NVIDIA Nsight
  • Verbesserung der Leistungsfähigkeit durch Coalescing, Caching, Prefetching sowie Profiling

ROCm

  • Was ist ROCm?
  • Welche Vor- und Nachteile bietet ROCm?
  • Einrichtung der Entwicklungsumgebung für ROCm
  • Erstellung eines grundlegenden ROCm-Programms zur Durchführung einer Vektoraddition
  • Verwendung der ROCm-API zur Abfrage von Geräteinformationen, Speicherverwaltung, Datentransfer zwischen Host und GPU sowie zum Starten von Kerneln und Synchronisieren der Threads
  • Programmierung von Kernels mit ROCm C/C++ für die Datenverarbeitung auf den AMD-GPUs.
  • Nutzung integrierter Funktionen, Variablen sowie Bibliotheken des ROCm-Standards zur Erledigung allgemeiner Aufgaben
  • Optimierung mittels der Speicherbereiche Global-, Local-, Constant- und Private-Speicher
  • Steuerung des parallelen Ausführungsablaufs durch Definition von Threads, Blöcken sowie Gittern im Rahmen des ROCm-Ausführungsmodells
  • Fehleranalyse und Testung von ROCm-Programmen unter Einsatz spezialisierter Tools wie dem ROCm Debugger oder dem ROCm Profiler
  • Optimierung der Programmleistung durch Coalescing, Caching, Prefetching sowie systematisches Profiling

Vergleich

  • Gegenüberstellung der wichtigsten Eigenschaften, Leistungswerte und Kompatibilitätsmerkmale von OpenCL, CUDA sowie ROCm
  • Bewertung der Qualität und Effizienz von GPU-Programmen mittels Benchmarks und Kennzahlen
  • Vermittlung bewährter Vorgehensweisen sowie praktischer Tipps zur effektiven GPU-Programmierung
  • Betrachtung aktueller Entwicklungen, Trends und künftiger Herausforderungen in der Welt der GPU-Programmierung

Zusammenfassung und weitere Schritte

Voraussetzungen

  • Grundkenntnisse in der C-/C++-Programmierung sowie Verständnis von Konzepten zur parallelen Programmierung
  • Basiswissen über Computereinheit und Speicherhierarchie
  • Erfahrung im Umgang mit Kommandozeilenwerkzeugen sowie Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, verschiedene Frameworks für GPU-Programmierung zu nutzen und deren Eigenschaften, Leistungsfähigkeit sowie Kompatibilität miteinander vergleichen.
  • Programmierer, die portierbaren und skalierbaren Code entwickeln wollen, der auf unterschiedlichen Plattformen und Geräten lauffähig ist.
  • Fachleute, die sich mit den Vor- und Nachteilen sowie den Herausforderungen der GPU-Programmierung und -Optimierung auseinandersetzen möchten.
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien