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
GPU-Berechnung und CUDA-Architektur
- Unterschiede zwischen CPU- und GPU-Architekturen
- Das Modell der Streaming Multiprocessors bei NVIDIA-GPUs
- Ein Überblick über das CUDA-Programmiermodell
- Heterogenes Rechnen sowie das Konzept von Host und Device
Einrichtung der CUDA-Entwicklungsumgebung
- Installation des CUDA Toolkits 13.x
- Nutzung des NVCC-Compilers sowie des Build-Prozesses
- Überprüfung der Umgebung mittels Systemabfragen zur Hardwareerkennung
- Integration in IDEs sowie weitere Entwicklungstools
Schreiben und Ausführen von CUDA-Kerneln
- Syntax und Spezifizierer für Kernel-Funktionen
- Konfiguration sowie Ausführung von Kernels
- Beispiele wie die Vektoraddition sowie weitere datenparallele Muster
- Nutzung von Makros zur Überprüfung auf CUDA-Fehler
CUDA-Thread-Hierarchie und Ausführungsmodell
- Aufbau aus Grids, Blöcken und Threads
- Berechnung von globalen IDs mittels Thread-Indexierung
- Warp-Ausführung sowie das SIMT-Programmiermodell
- Auslastungsgrad sowie Nutzung der Ressourcen der GPU
Speicherarchitektur und Speicherverwaltung auf der GPU
- Gängige Speicherarten: globaler Speicher, Shared Memory, Konstantenspeicher sowie Register
- Zuweisung und Freigabe von Gerätespeicher
- Datenübertragungen zwischen Host- und Device-Speicher
- Nutzung des Shared Memory für die Zusammenarbeit innerhalb eines Blocks
Unified Memory sowie Datentransferverwaltung
- Das Konzept des Unified Memory sowie zugehörige Speicherzuweisungen
- Datenmigration zwischen Speicherebeneen mittels Seitenüberwanderung und on-demand paging
- Asynchrone Vorabladeprozesse durch cudaMemPrefetchAsync
- Empfehlungen zur Speichernutzung basierend auf Zugriffsmustern
Systemweites Profiling mittels Nsight Systems
- Auswertung der Zeitverläufe in Nsight Systems
- Ermittlung von Synchronisationspunkten zwischen CPU und GPU
- Visualisierung des Kernel-Starts sowie von Datentransfers
- Interpretation der Leistungsdaten auf Systemebene
Optimierung von Kernels mit Nsight Compute
- Interaktives Profiling von Kernels mittels Nsight Compute
- Analyse der Speichernutzung und des Bandbreiteneinsatzes
- Auswertung der Rechenauslastung sowie der Status der Warps
- Richtlinien zur Optimierung basierend auf Profilergebnissen
Gleichzeitige CUDA-Streams und asynchrone Operationen
- Verwendung von CUDA-Streams sowie des Standardstreams
- Überlappung von Kernelausführungen mit Datenübertragungsvorgängen
- Synchronisierung zwischen mehreren Streams sowie Einsatz von CUDA-Events
- Gestaltung von Rechenpipelines mittels Multi-Stream-Konzepten
Fehlerbehandlung und Debugging-Werkzeuge
- Auswertung von Fehlercodes der CUDA-API sowie Maßnahmen zur Fehlerbehebung
- Nutzung des Compute Sanitizer zur Überprüfung auf fehlerhaften Speicherzugriff
- Einsatz von cuda-gdb zur Kernel-Debugging-Arbeit
- Verwendung von Assertionen sowie synchroner Fehlererkennung
Profilbasierter Optimierungsprozess
- Ein iteratives Vorgehen zur Profilanalyse
- Identifikation und Priorisierung von Leistungsengpässen
- Durchführung von Tests zur Messung von Performance-Regressionen
- Dokumentation der getroffenen Optimierungsentscheidungen
Entwicklung einer kompletten GPU-beschleunigten Anwendung
- Konzeption eines vollständigen, GPU-beschleunigten Lösungsansatzes
- Integration des Profilings in alle Phasen der Entwicklung
- Evaluierung sowie Dokumentation der erzielten Leistungswerte
- Überlegungen zur Produktionsbereitstellung der Anwendung
Voraussetzungen
- Grundsätzliche Kenntnisse in der C/C++-Programmierung – einschließlich Datentypen, Schleifen, bedingten Anweisungen, Funktionen sowie dem Umgang mit Arrays
- Vertrautheit mit dem Kompilieren und Ausführen von Programmen über die Kommandozeile
- Erfahrungen in der GPU- oder CUDA-Programmierung sind nicht erforderlich
Zielgruppe
- Softwareentwickler und Ingenieure, die C/C++-Anwendungen mittels GPUs beschleunigen möchten
- Wissenschaftliche Forscher sowie Experten im Bereich Hochleistungsrechnen, die vom rein CPU-basierten auf ein heterogenes Rechenmodell umsteigen wollen
- Technische Leiter, die eine GPU-Beschleunigung für Produktionsaufgaben bewerten möchten
8 Stunden