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 und Tools stehen für die GPU-Programmierung zur Verfügung?
- Auswahl des richtigen Frameworks und Tools für Ihre Anwendung
OpenCL
- Was ist OpenCL?
- Was sind die Vor- und Nachteile von OpenCL?
- Einrichtung 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
- Verwendung der OpenCL-C-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Nutzung von in OpenCL integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
- Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der OpenCL-Speicherbereiche (global, lokal, konstant und privat)
- Kontrolle der Parallelität über das OpenCL-Ausführungsmodell (Work-Items, Work-Groups und ND-Ranges)
- Debugging und Testing von OpenCL-Programmen mit Tools wie CodeXL
- Optimierung von OpenCL-Programmen durch Techniken wie Coalescing, Caching, Prefetching und Profiling
CUDA
- Was ist CUDA?
- Was sind die Vor- und Nachteile von CUDA?
- Einrichtung 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
- Verwendung der CUDA C/C++-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Nutzung von in CUDA integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
- Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der CUDA-Speicherbereiche (global, shared, konstant und lokal)
- Kontrolle der Parallelität über das CUDA-Ausführungsmodell (Threads, Blöcke und Grids)
- Debugging und Testing 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?
- Was sind die Vor- und Nachteile von ROCm?
- Einrichtung 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
- Verwendung der ROCm C/C++-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Nutzung von in ROCm integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
- Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der ROCm-Speicherbereiche (global, lokal, konstant und privat)
- Kontrolle der Parallelität über das ROCm-Ausführungsmodell (Threads, Blöcke und Grids)
- Debugging und Testing 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?
- Was sind die Vor- und Nachteile von HIP?
- Einrichtung der Entwicklungsumgebung für HIP
- Erstellen eines grundlegenden HIP-Programms zur Vektoraddition
- Verwendung der HIP-Sprache zum Schreiben von Kernels, die auf dem Gerät ausgeführt werden und Daten manipulieren
- Nutzung von in HIP integrierten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen
- Optimierung von Datenübertragungen und Speicherzugriffen durch Verwendung der HIP-Speicherbereiche (global, shared, konstant und lokal)
- Kontrolle der Parallelität über das HIP-Ausführungsmodell (Threads, Blöcke und Grids)
- Debugging und Testing 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, Leistung und Kompatibilität von OpenCL, CUDA, ROCm und HIP
- Bewertung von GPU-Programmen anhand von Benchmarks und Metriken
- Lernen der besten Praktiken und Tipps für die GPU-Programmierung
- Erkunden aktueller und zukünftiger Trends sowie Herausforderungen in der GPU-Programmierung
Zusammenfassung und weitere Schritte
Voraussetzungen
- Verständnis der C/C++-Sprache und paralleler Programmierkonzepte
- Grundkenntnisse der Computerarchitektur und des Speicherhierarchieaufbaus
- Erfahrung mit Kommandozeilen-Tools und Code-Editoren
Zielgruppe
- Entwickler, die die Grundlagen der GPU-Programmierung sowie die wichtigsten Frameworks und Tools für die Entwicklung von GPU-Anwendungen lernen 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 sowie Optimierungsmöglichkeiten erkunden wollen.
21 Stunden