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 und Tools gibt es für die GPU-Programmierung?
  • Die Wahl des richtigen Frameworks und Tools 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

HIP

  • Was ist HIP?
  • Was sind die Vor- und Nachteile von HIP?
  • Einrichten der Entwicklungsumgebung für HIP
  • Erstellen eines grundlegenden HIP-Programms, das Vektoraddition durchführt
  • Verwendung der HIP-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
  • Verwendung von in HIP integrierten Funktionen, Variablen und Bibliotheken zur Durchführung allgemeiner Aufgaben und Operationen
  • Verwendung von HIP-Speicherbereichen, wie z. B. globale, gemeinsam genutzte, konstante und lokale Speicher, zur Optimierung von Datenübertragungen und Speicherzugriffen
  • Verwendung des HIP-Ausführungsmodells zur Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren
  • Debuggen und Testen von HIP-Programmen mithilfe von Tools wie ROCm Debugger und ROCm Profiler
  • Optimieren von HIP-Programmen mit Techniken wie Coalescing, Caching, Prefetching und Profiling

Vergleich

  • Vergleich der Funktionen, Leistung und Kompatibilität von OpenCL, CUDA, ROCm und HIP
  • Evaluierung 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ächster Schritt

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 die Grundlagen der GPU-Programmierung und die wichtigsten Frameworks und Tools für die Entwicklung von GPU-Anwendungen erlernen 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 und -Optimierung kennenlernen möchten
 21 Stunden

Teilnehmerzahl



Preis je Teilnehmer

Erfahrungsberichte (1)

Kombinierte Kurse

Administration of CUDA

35 Stunden

GPU Programming with CUDA and Python

14 Stunden

AMD GPU Programming

28 Stunden

NVIDIA GPU Programming

14 Stunden

GPU Programming with CUDA

28 Stunden

GPU Programming with OpenACC

28 Stunden

GPU Programming with OpenCL

28 Stunden

GPU Programming - OpenCL vs CUDA vs ROCm

28 Stunden

NVIDIA GPU Programming - Extended

21 Stunden

ROCm for Windows

21 Stunden

Hardware-Accelerated Video Analytics

14 Stunden

Raster and Vector Graphics (Adobe Photoshop, CorelDraw)

28 Stunden

Adobe LiveCycle Designer

14 Stunden

Affinity Designer

14 Stunden

Adobe Illustrator

14 Stunden

Verwandte Kategorien