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 nutzen?
- Welche Herausforderungen und Zielkonflikte bringt die GPU-Programmierung mit sich?
- Welche Frameworks und Tools stehen für die GPU-Programmierung zur Verfügung?
- Auswahl des richtigen Frameworks und Tools für die eigene Anwendung
OpenCL
- Was ist OpenCL?
- Welche Vor- und Nachteile bietet OpenCL?
- Einrichten der Entwicklungsumgebung für OpenCL
- Erstellen eines grundlegenden OpenCL-Programms zur Vektoraddition
- Nutzung der OpenCL-API zum Abfragen von Geräteinformationen, Zuweisen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Ausführen 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 integrierter OpenCL-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
- Verwendung von OpenCL-Speicherbereichen wie global, lokal, konstant und privat zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Parallelität durch das OpenCL-Ausführungsmodell für Work-Items, Work-Groups und ND-Ranges
- 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 grundlegenden CUDA-Programms zur Vektoraddition
- Nutzung der CUDA-API zum Abfragen von Geräteinformationen, Zuweisen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Ausführen 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 integrierter CUDA-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
- Verwendung von CUDA-Speicherbereichen wie global, shared, konstant und lokal zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Parallelität durch das CUDA-Ausführungsmodell für Threads, Blöcke und Grids
- 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 grundlegenden ROCm-Programms zur Vektoraddition
- Nutzung der ROCm-API zum Abfragen von Geräteinformationen, Zuweisen und Freigeben von Gerätespeicher, Kopieren von Daten zwischen Host und Gerät, Ausführen 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 integrierter ROCm-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
- Verwendung von ROCm-Speicherbereichen wie global, lokal, konstant und privat zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Parallelität durch das ROCm-Ausführungsmodell für Threads, Blöcke und Grids
- 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
HIP
- Was ist HIP?
- Welche Vor- und Nachteile bietet HIP?
- Einrichten der Entwicklungsumgebung für HIP
- Erstellen eines grundlegenden HIP-Programms zur Vektoraddition
- Schreiben von Kernels mit der HIP-Sprache, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Nutzung integrierter HIP-Funktionen, -Variablen und -Bibliotheken zur Ausführung häufiger Aufgaben und Operationen
- Verwendung von HIP-Speicherbereichen wie global, shared, konstant und lokal zur Optimierung von Datenübertragungen und Speicherzugriffen
- Steuerung der Parallelität durch das HIP-Ausführungsmodell für Threads, Blöcke und Grids
- Debugging und Testen von HIP-Programmen mit Tools wie ROCm Debugger und ROCm Profiler
- Optimierung von HIP-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling
Vergleich
- Vergleich der Funktionen, Leistungsfähigkeit und Kompatibilität von OpenCL, CUDA, ROCm und HIP
- Bewertung von GPU-Programmen mittels Benchmarks und Metriken
- Lernen der Best Practices und Tipps für die GPU-Programmierung
- Erkundung aktueller und zukünftiger Trends sowie Herausforderungen in der GPU-Programmierung
Zusammenfassung und nächste Schritte
Voraussetzungen
- Kenntnisse in der C/C++-Sprache und Konzepten der parallelen Programmierung
- Basiswissen über Computerarchitektur und Speicherschichten
- Erfahrung mit Kommandozeilen-Tools und Code-Editoren
Zielgruppe
- Entwicklerinnen und Entwickler, die die Grundlagen der GPU-Programmierung sowie die wichtigsten Frameworks und Tools für die Entwicklung von GPU-Anwendungen erlernen möchten.
- Entwicklerinnen und Entwickler, die portablen und skalierbaren Code schreiben wollen, der auf verschiedenen Plattformen und Geräten läuft.
- Programmiererinnen und Programmierer, die die Vorteile und Herausforderungen der GPU-Programmierung sowie Optimierungsmöglichkeiten erkunden möchten.
21 Stunden