Kontakt aufnehmen

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

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien