Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist GPU-Programmierung?
  • Warum sollte man GPU-Programmierung nutzen?
  • Welche Herausforderungen und Zielkonflikte gibt es bei der GPU-Programmierung?
  • Welche Frameworks stehen für die GPU-Programmierung zur Verfügung?
  • Das richtige Framework für Ihre Anwendung auswählen

OpenCL

  • Was ist OpenCL?
  • Welche Vor- und Nachteile bietet OpenCL?
  • Einrichten der Entwicklungsumgebung für OpenCL
  • Erstellen eines einfachen OpenCL-Programms zur Durchführung einer Vektoraddition
  • Nutzung der OpenCL-API zum Abfragen von Geräteinformationen, Zuteilen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Starten von Kernels und Synchronisieren von Threads
  • Schreiben von Kernels mit der OpenCL-C-Sprache, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung von eingebauten OpenCL-Funktionen, Variablen und Bibliotheken für gängige Aufgaben und Operationen
  • Nutzung der Speicherbereiche in OpenCL (global, lokal, konstant, privat) zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Steuerung der Work-Items, Work-Groups und ND-Ranges, die die Parallelität definieren, mittels des OpenCL-Ausführungsmodells
  • Debugging und Testen von OpenCL-Programmen mit Tools wie CodeXL
  • Optimierung von OpenCL-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling

CUDA

  • Was ist CUDA?
  • Welche Vor- und Nachteile bietet CUDA?
  • Einrichten der Entwicklungsumgebung für CUDA
  • Erstellen eines einfachen CUDA-Programms zur Durchführung einer Vektoraddition
  • Nutzung der CUDA-API zum Abfragen von Geräteinformationen, Zuteilen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Starten von Kernels und Synchronisieren von Threads
  • Schreiben von Kernels mit der CUDA C/C++-Sprache, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung von eingebauten CUDA-Funktionen, Variablen und Bibliotheken für gängige Aufgaben und Operationen
  • Nutzung der Speicherbereiche in CUDA (global, shared, konstant, lokal) zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren, mittels des CUDA-Ausführungsmodells
  • Debugging und Testen von CUDA-Programmen mit Tools wie CUDA-GDB, CUDA-MEMCHECK und NVIDIA Nsight
  • Optimierung von CUDA-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling

ROCm

  • Was ist ROCm?
  • Welche Vor- und Nachteile bietet ROCm?
  • Einrichten der Entwicklungsumgebung für ROCm
  • Erstellen eines einfachen ROCm-Programms zur Durchführung einer Vektoraddition
  • Nutzung der ROCm-API zum Abfragen von Geräteinformationen, Zuteilen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Starten von Kernels und Synchronisieren von Threads
  • Schreiben von Kernels mit der ROCm C/C++-Sprache, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung von eingebauten ROCm-Funktionen, Variablen und Bibliotheken für gängige Aufgaben und Operationen
  • Nutzung der Speicherbereiche in ROCm (global, lokal, konstant, privat) zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren, mittels des ROCm-Ausführungsmodells
  • Debugging und Testen von ROCm-Programmen mit Tools wie ROCm Debugger und ROCm Profiler
  • Optimierung von ROCm-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling

Vergleich

  • Vergleich der Funktionen, Leistung und Kompatibilität von OpenCL, CUDA und ROCm
  • Bewertung von GPU-Programmen anhand von Benchmarks und Metriken
  • Erlernen bewährter Praktiken und Tipps für die GPU-Programmierung
  • Erkunden aktueller und zukünftiger Trends und Herausforderungen in der GPU-Programmierung

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Kenntnisse der C/C++-Sprache und paralleler Programmierkonzepte
  • Grundlegende Kenntnisse der Computerarchitektur und des Speicherhierarchie-Modells
  • Erfahrung mit Befehlszeilen-Tools und Code-Editoren

Zielgruppe

  • Entwicklerinnen und Entwickler, die lernen möchten, wie verschiedene Frameworks für die GPU-Programmierung genutzt werden können, und deren Funktionen, Leistung und Kompatibilität vergleichen wollen.
  • Entwicklerinnen und Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann.
  • Programmierende, die die Zielkonflikte und Herausforderungen der GPU-Programmierung und Optimierung erkunden möchten.
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien