Vielen Dank für die Zusendung Ihrer Anfrage! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Vielen Dank, dass Sie Ihre Buchung abgeschickt haben! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Schulungsübersicht
Einführung
- Was ist GPU-Programmierung?
- Warum sollte man GPU-Programmierung nutzen?
- Welche Herausforderungen und Zielkonflikte gibt es bei der GPU-Programmierung?
- Welche Frameworks stehen für die GPU-Programmierung zur Verfügung?
- Das richtige Framework für Ihre Anwendung auswählen
OpenCL
- Was ist OpenCL?
- Welche Vor- und Nachteile bietet OpenCL?
- Einrichten der Entwicklungsumgebung für OpenCL
- Erstellen eines einfachen OpenCL-Programms zur Durchführung einer Vektoraddition
- Nutzung der OpenCL-API zum Abfragen von Geräteinformationen, Zuteilen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Starten 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 von eingebauten OpenCL-Funktionen, Variablen und Bibliotheken für gängige Aufgaben und Operationen
- Nutzung der Speicherbereiche in OpenCL (global, lokal, konstant, privat) zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Work-Items, Work-Groups und ND-Ranges, die die Parallelität definieren, mittels des OpenCL-Ausführungsmodells
- 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 einfachen CUDA-Programms zur Durchführung einer Vektoraddition
- Nutzung der CUDA-API zum Abfragen von Geräteinformationen, Zuteilen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Starten 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 von eingebauten CUDA-Funktionen, Variablen und Bibliotheken für gängige Aufgaben und Operationen
- Nutzung der Speicherbereiche in CUDA (global, shared, konstant, lokal) zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren, mittels des CUDA-Ausführungsmodells
- 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 einfachen ROCm-Programms zur Durchführung einer Vektoraddition
- Nutzung der ROCm-API zum Abfragen von Geräteinformationen, Zuteilen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Starten 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 von eingebauten ROCm-Funktionen, Variablen und Bibliotheken für gängige Aufgaben und Operationen
- Nutzung der Speicherbereiche in ROCm (global, lokal, konstant, privat) zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren, mittels des ROCm-Ausführungsmodells
- 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
Vergleich
- Vergleich der Funktionen, Leistung und Kompatibilität von OpenCL, CUDA und ROCm
- Bewertung von GPU-Programmen anhand von Benchmarks und Metriken
- Erlernen bewährter Praktiken und Tipps für die GPU-Programmierung
- Erkunden aktueller und zukünftiger Trends und Herausforderungen in der GPU-Programmierung
Zusammenfassung und nächste Schritte
Voraussetzungen
- Kenntnisse der C/C++-Sprache und paralleler Programmierkonzepte
- Grundlegende Kenntnisse der Computerarchitektur und des Speicherhierarchie-Modells
- Erfahrung mit Befehlszeilen-Tools und Code-Editoren
Zielgruppe
- Entwicklerinnen und Entwickler, die lernen möchten, wie verschiedene Frameworks für die GPU-Programmierung genutzt werden können, und deren Funktionen, Leistung und Kompatibilität vergleichen wollen.
- Entwicklerinnen und Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten ausgeführt werden kann.
- Programmierende, die die Zielkonflikte und Herausforderungen der GPU-Programmierung und Optimierung erkunden möchten.
28 Stunden