Schulungsübersicht

Einführung

  • Was ist GPU-Programmierung?
  • Warum sollte man GPU-Programmierung verwenden?
  • Was sind die Herausforderungen und Kompromisse der GPU-Programmierung?
  • Welche Frameworks gibt es für die GPU-Programmierung?
  • Die Wahl des richtigen Frameworks für Ihre Anwendung

OpenCL

  • Was ist OpenCL?
  • Was sind die Vor- und Nachteile von OpenCL?
  • Einrichten der Entwicklungsumgebung für OpenCL
  • Erstellen eines grundlegenden OpenCL-Programms, das Vektoraddition durchführt
  • Verwendung der OpenCL-API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kernel zu starten und Threads zu synchronisieren
  • Verwendung der Sprache OpenCL C, um Kernel zu schreiben, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Verwendung von OpenCL eingebauten Funktionen, Variablen und Bibliotheken, um allgemeine Aufgaben und Operationen durchzuführen
  • Verwendung von OpenCL Speicherbereichen wie global, lokal, konstant und privat, um Datenübertragungen und Speicherzugriffe zu optimieren
  • Verwendung des OpenCL-Ausführungsmodells zur Steuerung der Work-Items, Work-Groups und ND-Ranges, die die Parallelität definieren
  • Debuggen und Testen von OpenCL-Programmen mithilfe von Tools wie CodeXL
  • Optimieren von OpenCL-Programmen mithilfe von Techniken wie Coalescing, Caching, Prefetching und Profiling

CUDA

  • Was ist CUDA?
  • Was sind die Vor- und Nachteile von CUDA?
  • Einrichten der Entwicklungsumgebung für CUDA
  • Erstellen eines grundlegenden CUDA-Programms, das eine Vektoraddition durchführt
  • Verwendung der CUDA API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kernel zu starten und Threads zu synchronisieren
  • Verwendung der Sprache CUDA C/C++ zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Verwendung der in CUDA integrierten Funktionen, Variablen und Bibliotheken zur Ausführung allgemeiner Aufgaben und Operationen
  • Verwendung von CUDA-Speicherbereichen, wie z. B. globale, gemeinsam genutzte, konstante und lokale Speicherbereiche, um Datenübertragungen und Speicherzugriffe zu optimieren
  • Verwendung des CUDA-Ausführungsmodells zur Steuerung von Threads, Blöcken und Gittern, die die Parallelität definieren
  • Debuggen und Testen von CUDA Programmen mit Tools wie CUDA-GDB, CUDA-MEMCHECK und NVIDIA Nsight
  • Optimieren von CUDA Programmen mit Techniken wie Coalescing, Caching, Prefetching und Profiling

ROCm

  • Was ist ROCm?
  • Was sind die Vor- und Nachteile von ROCm?
  • Einrichten der Entwicklungsumgebung für ROCm
  • Erstellen eines grundlegenden ROCm-Programms, das eine Vektoraddition durchführt
  • Verwendung der ROCm-API, um Geräteinformationen abzufragen, Gerätespeicher zuzuweisen und freizugeben, Daten zwischen Host und Gerät zu kopieren, Kernel zu starten und Threads zu synchronisieren
  • Verwendung der ROCm-Sprache C/C++, um Kernel zu schreiben, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Verwendung der in ROCm eingebauten Funktionen, Variablen und Bibliotheken, um allgemeine Aufgaben und Operationen durchzuführen
  • Verwendung von ROCm-Speicherbereichen, wie global, lokal, konstant und privat, um Datenübertragungen und Speicherzugriffe zu optimieren
  • Verwendung des ROCm-Ausführungsmodells zur Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren
  • Debuggen und Testen von ROCm-Programmen mit Werkzeugen wie ROCm Debugger und ROCm Profiler
  • Optimieren von ROCm-Programmen mithilfe von 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 der besten Praktiken und Tipps für die GPU-Programmierung
  • Erforschung der aktuellen und zukünftigen Trends und Herausforderungen der GPU-Programmierung

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Kenntnisse der Sprache C/C++ und paralleler Programmierkonzepte
  • Grundkenntnisse der Computerarchitektur und der Speicherhierarchie
  • Erfahrung im Umgang mit Befehlszeilentools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie man verschiedene Frameworks für die GPU-Programmierung verwendet und deren Funktionen, Leistung und Kompatibilität vergleicht
  • Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann
  • Programmierer, die die Kompromisse und Herausforderungen der GPU-Programmierung und -Optimierung erkunden möchten
 28 Stunden

Teilnehmerzahl



Preis je Teilnehmer

Erfahrungsberichte (1)

Kombinierte Kurse

GPU Programming with CUDA

28 Stunden

AMD GPU Programming

28 Stunden

ROCm for Windows

21 Stunden

Verwandte Kategorien