Schulungsübersicht

Einführung

  • Was ist GPU-Programmierung?
  • Warum sollte man GPU-Programmierung nutzen?
  • Welche Herausforderungen und Handelsgänge gibt es bei der GPU-Programmierung?
  • Welche Frameworks gibt es für die GPU-Programmierung?
  • Wie wählt man das richtige Framework für die Anwendung aus?

OpenCL

  • Was ist OpenCL?
  • Welche Vor- und Nachteile bietet OpenCL?
  • Einrichten der Entwicklungsgebung für OpenCL
  • Erstellen eines grundlegenden OpenCL-Programms, das Vektorsummen ausführt
  • Verwenden der OpenCL-API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kerne zu starten und Threads zu synchronisieren
  • Verwenden der OpenCL-C-Sprache, um Kerne zu schreiben, die auf dem Gerät ausgeführt werden und Daten manipulieren.
  • Verwenden der integrierten Funktionen, Variablen und Bibliotheken von OpenCL, um übliche Aufgaben und Operationen durchzuführen
  • Verwenden der Speicherbereiche von OpenCL wie global, lokal, konstant und privat, um Datenübertragungen und Speicherzugriffe zu optimieren
  • Verwenden des Ausführungsmodells von OpenCL, um die Work-Items, Work-Groups und ND-Ranges zu steuern, die die Parallelität definieren
  • Debuggen und Testen von OpenCL-Programmen mit Werkzeugen wie CodeXL
  • Optimieren von OpenCL-Programmen unter Verwendung von Techniken wie Konsolidierung, Zwischenspeicherung, Vorausladen und Profiling

CUDA

  • Was ist CUDA?
  • Welche Vor- und Nachteile bietet CUDA?
  • Einrichten der Entwicklungsgebung für CUDA
  • Erstellen eines grundlegenden CUDA-Programms, das Vektorsummen ausführt
  • Verwenden der CUDA-API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kerne zu starten und Threads zu synchronisieren
  • Verwenden der CUDA-C/C++-Sprache, um Kerne zu schreiben, die auf dem Gerät ausgeführt werden und Daten manipulieren.
  • Verwenden der integrierten Funktionen, Variablen und Bibliotheken von CUDA, um übliche Aufgaben und Operationen durchzuführen
  • Verwenden der Speicherbereiche von CUDA wie global, shared, konstant und lokal, um Datenübertragungen und Speicherzugriffe zu optimieren
  • Verwenden des Ausführungsmodells von CUDA, um die Threads, Blöcke und Gitter zu steuern, die die Parallelität definieren
  • Debuggen und Testen von CUDA-Programmen mit Werkzeugen wie CUDA-GDB, CUDA-MEMCHECK und NVIDIA Nsight
  • Optimieren von CUDA-Programmen unter Verwendung von Techniken wie Konsolidierung, Zwischenspeicherung, Vorausladen und Profiling

ROCm

  • Was ist ROCm?
  • Welche Vor- und Nachteile bietet ROCm?
  • Einrichten der Entwicklungsgebung für ROCm
  • Erstellen eines grundlegenden ROCm-Programms, das Vektorsummen ausführt
  • Verwenden der ROCm-API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kerne zu starten und Threads zu synchronisieren
  • Verwenden der ROCm-C/C++-Sprache, um Kerne zu schreiben, die auf dem Gerät ausgeführt werden und Daten manipulieren.
  • Verwenden der integrierten Funktionen, Variablen und Bibliotheken von ROCm, um übliche Aufgaben und Operationen durchzuführen
  • Verwenden der Speicherbereiche von ROCm wie global, lokal, konstant und privat, um Datenübertragungen und Speicherzugriffe zu optimieren
  • Verwenden des Ausführungsmodells von ROCm, um die Threads, Blöcke und Gitter zu steuern, die die Parallelität definieren
  • Debuggen und Testen von ROCm-Programmen mit Werkzeugen wie ROCm Debugger und ROCm Profiler
  • Optimieren von ROCm-Programmen unter Verwendung von Techniken wie Konsolidierung, Zwischenspeicherung, Vorausladen und Profiling

Vergleich

  • Vergleichen der Eigenschaften, Leistung und Kompatibilität von OpenCL, CUDA und ROCm
  • Auswerten von GPU-Programmen mit Benchmarks und Metriken
  • Lernen der besten Praktiken und Tipps für die GPU-Programmierung
  • Erkunden aktueller und zukünftiger Trends und Herausforderungen der GPU-Programmierung

Zusammenfassung und Nächste Schritte

Voraussetzungen

  • Kenntnisse der C/C++-Sprache und Paralleler Programmierkonzepte
  • Grundlegende Kenntnisse der Computerarchitektur und Speicherhierarchie
  • Erfahrung mit Kommandozeilenwerkzeugen und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie sie verschiedene Frameworks für GPU-Programmierung verwenden und ihre Eigenschaften, Leistung und Kompatibilität vergleichen.
  • Entwickler, die lernen möchten, portierbaren und skalierbaren Code zu schreiben, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann.
  • Programmierer, die sich mit den Handelsgängen und Herausforderungen von GPU-Programmierung und -Optimierung vertraut machen möchten.
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien