Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist CUDA?
  • CUDA im Vergleich zu OpenCL und SYCL
  • Übersicht über CUDA-Funktionen und Architektur
  • Einrichten der Entwicklungsumgebung

Erste Schritte

  • Erstellen eines neuen CUDA-Projekts mit Visual Studio Code
  • Erforschen der Projektstruktur und Dateien
  • Kompilieren und Ausführen des Programms
  • Anzeigen der Ausgabe mittels printf und fprintf

CUDA API

  • Verstehen der Rolle der CUDA API im Host-Programm
  • Nutzen der CUDA API zur Abfrage von Geräteinformationen und Fähigkeiten
  • Nutzen der CUDA API zum Allokieren und Freigeben des Gerätespeichers
  • Nutzen der CUDA API zum Kopieren von Daten zwischen Host und Gerät
  • Nutzen der CUDA API zum Starten von Kernels und Synchronisieren von Threads
  • Verwalten von Fehlern und Ausnahmen mit der CUDA API

CUDA C/C++

  • Verstehen der Rolle von CUDA C/C++ im Geräteprogramm
  • Nutzen von CUDA C/C++ zur Erstellung von Kernels, die auf der GPU ausgeführt werden und Daten manipulieren
  • Nutzen von Datentypen, Qualifizierern, Operatoren und Ausdrücken in CUDA C/C++
  • Nutzen eingebauter Funktionen in CUDA C/C++, wie Mathematik-, Atom- und Warp-Funktionen
  • Nutzen eingebauter Variablen in CUDA C/C++, wie threadIdx, blockIdx, blockDim usw.
  • Nutzen von Bibliotheken in CUDA C/C++, wie cuBLAS, cuFFT, cuRAND usw.

CUDA-Speichermodell

  • Unterschied zwischen Host- und Gerätespeichermodellen verstehen
  • Nutzung von Speicherbereichen in CUDA, wie global, geteilt (shared), konstant (constant) und lokal
  • Nutzung von Speicherobjekten in CUDA, wie Zeiger, Arrays, Texturen und Surfaces
  • Nutzung von Speicherzugriffsmodi in CUDA, wie schreibgeschützt, write-only, read-write usw.
  • Verstehen des Speicherkonsistenzmodells und der Synchronisationsmechanismen in CUDA

Ausführungsmodell von CUDA

  • Unterschied zwischen Host- und Geräteausführungsmodellen verstehen
  • Definition der Parallelität mittels CUDA Threads, Blöcke und Grids
  • Nutzung von CUDA Thread-Funktionen, wie threadIdx, blockIdx, blockDim usw.
  • Nutzung von CUDA Block-Funktionen, wie __syncthreads, __threadfence_block usw.
  • Nutzung von CUDA Grid-Funktionen, wie gridDim, gridSync, Cooperative Groups usw.

Debuggen

  • Häufige Fehler und Bugs in CUDA-Programmen verstehen
  • Verwenden des Debuggers in Visual Studio Code zum Untersuchen von Variablen, Haltepunkten, Aufrufstapeln usw.
  • Verwenden von CUDA-GDB zum Debuggen von CUDA-Programmen unter Linux
  • Erkennen von Speicherfehlern und -lecks mittels CUDA-MEMCHECK
  • Debuggen und Analysieren von CUDA-Programmen unter Windows mit NVIDIA Nsight

Optimierung

  • Faktoren verstehen, die die Leistung von CUDA-Programmen beeinflussen
  • Verbesserung des Speicherdurchsatzes mittels Coalescing-Techniken in CUDA
  • Reduzierung der Speicherlatenz durch Caching- und Prefetching-Techniken in CUDA
  • Optimieren von Speicherzugriffen und Bandbreite mittels shared memory und lokalem Speicher in CUDA
  • Messen und Verbessern der Ausführungszeit und Ressourcennutzung mittels Profiling und entsprechenden Tools in CUDA

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Kenntnisse in der C/C++-Sprache und Konzepten der parallelen Programmierung
  • Grundlegende Kenntnisse über Computerarchitektur und Speicherebenen
  • Erfahrung mit Kommandozeilentools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie sie CUDA zur Programmierung von NVIDIA-GPUs nutzen und deren Parallelität ausnutzen können.
  • Entwickler, die leistungsstarke und skalierbaren Code schreiben möchten, der auf verschiedenen CUDA-Geräten ausgeführt werden kann.
  • Programmierer, die die Low-Level-Aspekte der GPU-Programmierung erkunden und die Leistung ihres Codes optimieren möchten.
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien