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 GPU-Programmierung verwenden?
- Welche Herausforderungen und Kompromisse gibt es bei der GPU-Programmierung?
- Welche Frameworks existieren für die GPU-Programmierung?
- Auswahl des richtigen Frameworks für Ihre Anwendung
OpenCL
- Was ist OpenCL?
- Welche Vor- und Nachteile hat OpenCL?
- Einrichten der Entwicklungsumgebung für OpenCL
- Erstellen eines grundlegenden OpenCL-Programms, das Vektoraddition durchführt
- Verwenden der OpenCL-API zur Abfrage von Geräteinformationen, Allokation und Deallokation des Geräte-Speichers, Kopieren von Daten zwischen Host und Gerät, Starten von Kernels und Synchronisieren von Threads
- Verwenden der OpenCL-C-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Verwenden integrierter Funktionen, Variablen und Bibliotheken in OpenCL für gängige Aufgaben und Operationen
- Nutzen der Speicherbereiche in OpenCL wie global, lokal, konstant und 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
- Debuggen und Testen von OpenCL-Programmen mit Tools wie CodeXL
- Optimieren von OpenCL-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling
CUDA
- Was ist CUDA?
- Welche Vor- und Nachteile hat CUDA?
- Einrichten der Entwicklungsumgebung für CUDA
- Erstellen eines grundlegenden CUDA-Programms, das Vektoraddition durchführt
- Verwenden der CUDA-API zur Abfrage von Geräteinformationen, Allokation und Deallokation des Geräte-Speichers, Kopieren von Daten zwischen Host und Gerät, Starten von Kernels und Synchronisieren von Threads
- Verwenden der CUDA C/C++-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Verwenden integrierter Funktionen, Variablen und Bibliotheken in CUDA für gängige Aufgaben und Operationen
- Nutzen der Speicherbereiche in CUDA wie global, shared, konstant und local zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Threads, Blöcke und Grids, die die Parallelität definieren, mittels des CUDA-Ausführungsmodells
- Debuggen und Testen von CUDA-Programmen mit Tools wie CUDA-GDB, CUDA-MEMCHECK und NVIDIA Nsight
- Optimieren von CUDA-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling
ROCm
- Was ist ROCm?
- Welche Vor- und Nachteile hat ROCm?
- Einrichten der Entwicklungsumgebung für ROCm
- Erstellen eines grundlegenden ROCm-Programms, das Vektoraddition durchführt
- Verwenden der ROCm-API zur Abfrage von Geräteinformationen, Allokation und Deallokation des Geräte-Speichers, Kopieren von Daten zwischen Host und Gerät, Starten von Kernels und Synchronisieren von Threads
- Verwenden der ROCm C/C++-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Verwenden integrierter Funktionen, Variablen und Bibliotheken in ROCm für gängige Aufgaben und Operationen
- Nutzen der Speicherbereiche in ROCm wie global, lokal, konstant und 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
- Debuggen und Testen von ROCm-Programmen mit Tools wie dem ROCm Debugger und ROCm Profiler
- Optimieren 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 mittels Benchmarks und Metriken
- Erlernen von Best Practices und Tipps für die GPU-Programmierung
- Erkunden aktueller und zukünftiger Trends sowie Herausforderungen der GPU-Programmierung
Zusammenfassung und nächste Schritte
Voraussetzungen
- Verständnis der C/C++-Sprache und paralleler Programmierungskonzepte
- Grundkenntnisse in Computerarchitektur und Speicherhierarchie
- Erfahrung mit Kommandozeilen-Tools und Code-Editoren
Zielgruppe
- 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
- Entwickler, die portablen und skalierbaren Code schreiben möchten, der auf verschiedenen Plattformen und Geräten läuft
- Programmierer, die die Vor- und Nachteile sowie Herausforderungen der GPU-Programmierung und Optimierung erkunden wollen
28 Stunden