Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist CUDA?
  • CUDA im Vergleich zu OpenCL und SYCL
  • Übersicht über Funktionen sowie Architektur von CUDA
  • Einrichtung der Entwicklungsumgebung

Erste Schritte

  • Erstellung eines neuen CUDA-Projekts mittels Visual Studio Code
  • Betrachtung der Projektstruktur samt zugehörigen Dateien
  • Kompilierung und Ausführung des Programms
  • Ausgabeanzeige über printf bzw. fprintf veranlassen

CUDA-API

  • Rolle der CUDA-API im Host-Programm verstehen
  • Nutzung der API, um Geräteinformationen abzufragen
  • Dynamische Reservierung sowie Freigabe von Speicher auf dem Device per API
  • Übertragung von Daten zwischen Host und Device mittels API-Funktionen<\/li>
  • Ausführung von Kerneln sowie Synchronisation der Threads steuern
  • Behandlung von Fehlern und Ausnahmen durch Nutzung der API

CUDA C/C++

  • Bedeutung von CUDA C/C++ für Device-Programme erkennen
  • Verwendung der Sprache zur Entwicklung von Kerneln, die Daten auf der GPU verarbeiten.
  • Einsatz von Datentypen, Qualifikatoren, Operatoren und Ausdrücken in CUDA C/C++.
  • Nutzung integrierter Funktionen wie mathematischer Operationen oder Warp-Operationen.
  • Verwendung systemeigener Variablen wie threadIdx, blockIdx oder blockDim.
  • Einbindung von Bibliotheken wie cuBLAS, cuFFT sowie cuRAND in die Programmierung.

CUDA-Speichermodell

  • Unterschiede zwischen Host- und Device-Speicherstrukturen erkennen
  • Einsatz verschiedener Speicherbereiche wie global, shared, constant oder local zur Leistungssteigerung.
  • Nutzung von Objekten wie Zeigern, Arrays oder Texturen als Speicherelemente.
  • Auswahl passender Zugriffsmodi (Lesen nur, Schreiben nur etc.)
  • Verständnis des Konsistenzmodells sowie von Mechanismen zur Synchronisation des Speichers.

CUDA-Ausführungsmodell

  • Abgrenzung der Ausführungsmodelle auf Host- und Device-Ebene erkennen.
  • Verwendung von Threads, Blöcken sowie Gittern zur Konfiguration paralleler Berechnungen.
  • Bewusste Nutzung funktioneller Merkmale wie threadIdx oder blockDim im Rahmen der Programmierung.
  • Einsatz synchronisierender Funktionen auf Block-Ebene, etwa __syncthreads oder __threadfence_block.
  • Konfiguration von Netzstrukturen mit gridDim, gridSync sowie Kooperativen Gruppen im Hintergrund steuern.

Debugging

  • Häufige Fehlerquellen und Programmfehler in CUDA-Programmen verstehen.
  • Nutzung des Visual Studio Code Debuggers für das Inspektieren von Variablen, Breakpoints sowie Aufrufstapeln.
  • Anwendung von CUDA-GDB zur Analyse von Fehlern auf Linux-Systemen.
  • Erkennung fehlerhafter Speichervorgänge mittels CUDA-MEMCHECK.
  • Verwendung von NVIDIA Nsight zur Diagnose und Analyse von Programmen unter Windows.

Optimierung

  • Wesentliche Einflussfaktoren auf die Performance von CUDA-Programmen kennenlernen.
  • Coalescing-Methoden verwenden, um den Datendurchsatz zu steigern.
  • Caching und Prefetching zur Reduzierung der Zugriffszeiten effektiv einsetzen.
  • Nutzung von Shared Memory sowie lokalem Speicher zur Vermeidung von Engpässen im Datenfluss.
  • Anwendung von Profilwerkzeugen, um Laufzeit und Ressourcenverbrauch präzise zu ermitteln und zu verbessern.

Zusammenfassung sowie weitere Perspektiven

Voraussetzungen

  • Solides Wissen in der C/C++-Programmiersprache sowie Kenntnisse zu Konzepten des Parallelprogramms.
  • Grundsätzliche Einsicht in Computerarchitektur und Hierarchie der Speichersysteme.
  • Erfahrung mit Kommandozeilenwerkzeugen sowie Code-Editoren.

Zielgruppe

  • Entwickler, die CUDA erlernen möchten, um NVIDIA-GPUs effizient zu programmieren und Parallelität bestmöglich auszunutzen.
  • Programmierer, die leistungsfähigen und skalierbaren Code erstellen wollen, der auf unterschiedlichen CUDA-fähigen Geräten läuft.
  • Fachleute, die tiefergehende Einblicke in die GPU-Programmierung gewinnen sowie ihre Programme verbessern möchten.
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien