Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist GPU-Programmierung?
  • Warum GPU-Programmierung nutzen?
  • Welche Herausforderungen und Zielkonflikte bringt die GPU-Programmierung mit sich?
  • Welche Frameworks und Tools stehen für die GPU-Programmierung zur Verfügung?
  • Auswahl des richtigen Frameworks und Tools für die eigene Anwendung

OpenCL

  • Was ist OpenCL?
  • Welche Vor- und Nachteile bietet OpenCL?
  • Einrichten der Entwicklungsumgebung für OpenCL
  • Erstellen eines grundlegenden OpenCL-Programms zur Vektoraddition
  • Nutzung der OpenCL-API zum Abfragen von Geräteinformationen, Zuweisen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Ausführen 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 integrierter OpenCL-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
  • Verwendung von OpenCL-Speicherbereichen wie global, lokal, konstant und privat zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Steuerung der Parallelität durch das OpenCL-Ausführungsmodell für Work-Items, Work-Groups und ND-Ranges
  • 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 grundlegenden CUDA-Programms zur Vektoraddition
  • Nutzung der CUDA-API zum Abfragen von Geräteinformationen, Zuweisen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Ausführen 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 integrierter CUDA-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
  • Verwendung von CUDA-Speicherbereichen wie global, shared, konstant und lokal zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Steuerung der Parallelität durch das CUDA-Ausführungsmodell für Threads, Blöcke und Grids
  • 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 grundlegenden ROCm-Programms zur Vektoraddition
  • Nutzung der ROCm-API zum Abfragen von Geräteinformationen, Zuweisen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Ausführen 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 integrierter ROCm-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
  • Verwendung von ROCm-Speicherbereichen wie global, lokal, konstant und privat zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Steuerung der Parallelität durch das ROCm-Ausführungsmodell für Threads, Blöcke und Grids
  • 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

HIP

  • Was ist HIP?
  • Welche Vor- und Nachteile bietet HIP?
  • Einrichten der Entwicklungsumgebung für HIP
  • Erstellen eines grundlegenden HIP-Programms zur Vektoraddition
  • Schreiben von Kernels mit der HIP-Sprache, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung integrierter HIP-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
  • Verwendung von HIP-Speicherbereichen wie global, shared, konstant und lokal zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Steuerung der Parallelität durch das HIP-Ausführungsmodell für Threads, Blöcke und Grids
  • Debugging und Testen von HIP-Programmen mit Tools wie ROCm Debugger und ROCm Profiler
  • Optimierung von HIP-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling

Vergleich

  • Vergleich der Funktionen, Leistungsfähigkeit und Kompatibilität von OpenCL, CUDA, ROCm und HIP
  • Bewertung von GPU-Programmen mittels Benchmarks und Metriken
  • Lernen der Best Practices und Tipps für die GPU-Programmierung
  • Erkundung aktueller und zukünftiger Trends sowie Herausforderungen in der GPU-Programmierung

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Kenntnisse in der C/C++-Sprache und Konzepten der parallelen Programmierung
  • Basiswissen über Computerarchitektur und Speicherschichten
  • Erfahrung mit Kommandozeilen-Tools und Code-Editoren

Zielgruppe

  • Entwicklerinnen und Entwickler, die die Grundlagen der GPU-Programmierung sowie die wichtigsten Frameworks und Tools für die Entwicklung von GPU-Anwendungen erlernen möchten.
  • Entwicklerinnen und Entwickler, die portablen und skalierbaren Code schreiben wollen, der auf verschiedenen Plattformen und Geräten läuft.
  • Programmiererinnen und Programmierer, die die Vorteile und Herausforderungen der GPU-Programmierung sowie Optimierungsmöglichkeiten erkunden möchten.
 21 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien