Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist GPU-Programmierung?
  • Warum GPU-Programmierung verwenden?
  • Welche Herausforderungen und Kompromisse gibt es bei der GPU-Programmierung?
  • Welche Frameworks und Tools stehen für die GPU-Programmierung zur Verfügung?
  • Auswahl des richtigen Frameworks und Tools für Ihre Anwendung

OpenCL

  • Was ist OpenCL?
  • Was sind die Vor- und Nachteile von OpenCL?
  • Einrichtung 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
  • Verwendung der OpenCL-C-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung von in OpenCL integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
  • Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der OpenCL-Speicherbereiche (global, lokal, konstant und privat)
  • Kontrolle der Parallelität über das OpenCL-Ausführungsmodell (Work-Items, Work-Groups und ND-Ranges)
  • Debugging und Testing von OpenCL-Programmen mit Tools wie CodeXL
  • Optimierung von OpenCL-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling

CUDA

  • Was ist CUDA?
  • Was sind die Vor- und Nachteile von CUDA?
  • Einrichtung 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
  • Verwendung der CUDA C/C++-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung von in CUDA integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
  • Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der CUDA-Speicherbereiche (global, shared, konstant und lokal)
  • Kontrolle der Parallelität über das CUDA-Ausführungsmodell (Threads, Blöcke und Grids)
  • Debugging und Testing 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?
  • Was sind die Vor- und Nachteile von ROCm?
  • Einrichtung 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
  • Verwendung der ROCm C/C++-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung von in ROCm integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
  • Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der ROCm-Speicherbereiche (global, lokal, konstant und privat)
  • Kontrolle der Parallelität über das ROCm-Ausführungsmodell (Threads, Blöcke und Grids)
  • Debugging und Testing 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?
  • Was sind die Vor- und Nachteile von HIP?
  • Einrichtung der Entwicklungsumgebung für HIP
  • Erstellen eines grundlegenden HIP-Programms zur Vektoraddition
  • Verwendung der HIP-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Nutzung von in HIP integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
  • Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der HIP-Speicherbereiche (global, shared, konstant und lokal)
  • Kontrolle der Parallelität über das HIP-Ausführungsmodell (Threads, Blöcke und Grids)
  • Debugging und Testing 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, Leistung und Kompatibilität von OpenCL, CUDA, ROCm und HIP
  • Bewertung von GPU-Programmen anhand von Benchmarks und Metriken
  • Lernen der besten Praktiken und Tipps für die GPU-Programmierung
  • Erkunden aktueller und zukünftiger Trends sowie Herausforderungen in der GPU-Programmierung

Zusammenfassung und weitere Schritte

Voraussetzungen

  • Verständnis der C/C++-Sprache und paralleler Programmierkonzepte
  • Grundkenntnisse der Computerarchitektur und des Speicherhierarchieaufbaus
  • Erfahrung mit Kommandozeilen-Tools und Code-Editoren

Zielgruppe

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

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien