Schulungsübersicht

Einführung

  • Was ist CUDA?
  • CUDA im Vergleich zu OpenCL und SYCL
  • Überblick über die Funktionen und die Architektur von CUDA
  • Einrichten der Entwicklungsumgebung

Erste Schritte

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

CUDA-API

  • Verstehen der Rolle der CUDA API im Host-Programm
  • Verwendung der CUDA API zur Abfrage von Geräteinformationen und -fähigkeiten
  • Verwenden der CUDA API, um Gerätespeicher zuzuweisen und freizugeben
  • Verwenden der CUDA API zum Kopieren von Daten zwischen Host und Gerät
  • Verwendung der CUDA API zum Starten von Kerneln und Synchronisieren von Threads
  • Verwendung der CUDA API zur Behandlung von Fehlern und Ausnahmen

CUDA C/C++

  • Verstehen der Rolle von CUDA C/C++ im Geräteprogramm
  • Verwendung von CUDA C/C++ zum Schreiben von Kernels, die auf dem GPU ausgeführt werden und Daten manipulieren
  • Verwendung von CUDA C/C++ Datentypen, Qualifizierern, Operatoren und Ausdrücken
  • Verwendung der in CUDA C/C++ integrierten Funktionen, wie z. B. Mathematik, Atomic, Warp usw.
  • Verwendung von in CUDA C/C++ integrierten Variablen, wie threadIdx, blockIdx, blockDim, etc.
  • Verwendung von CUDA C/C++ Bibliotheken, wie cuBLAS, cuFFT, cuRAND, usw.

CUDA Speichermodell

  • Verstehen des Unterschieds zwischen Host- und Gerätespeichermodellen
  • Verwendung von CUDA-Speicherbereichen, z. B. global, gemeinsam genutzt, konstant und lokal
  • Verwendung von CUDA-Speicherobjekten, wie Zeigern, Arrays, Texturen und Oberflächen
  • Verwendung von CUDA-Speicherzugriffsmodi, wie z. B. Nur-Lesen, Nur-Schreiben, Lesen-Schreiben usw.
  • Verwendung des CUDA-Speicher-Konsistenzmodells und der Synchronisationsmechanismen

CUDA-Ausführungsmodell

  • Verstehen des Unterschieds zwischen Host- und Geräteausführungsmodellen
  • Verwendung von CUDA Threads, Blöcken und Grids zur Definition der Parallelität
  • Verwendung von CUDA-Thread-Funktionen, wie threadIdx, blockIdx, blockDim, usw.
  • Verwendung von CUDA-Blockfunktionen wie __syncthreads, __threadfence_block, usw.
  • Verwendung von CUDA-Grid-Funktionen wie gridDim, gridSync, kooperative Gruppen, usw.

Fehlersuche

  • Verstehen der häufigsten Fehler und Bugs in CUDA Programmen
  • Verwendung des Visual Studio Code-Debuggers zur Untersuchung von Variablen, Haltepunkten, Aufrufstapel usw.
  • Verwendung von CUDA-GDB zum Debuggen von CUDA-Programmen auf Linux
  • Verwendung von CUDA-MEMCHECK zur Erkennung von Speicherfehlern und Lecks
  • NVIDIA Nsight zum Debuggen und Analysieren von CUDA Programmen unter Windows

Optimierung

  • Verstehen der Faktoren, die die Leistung von CUDA Programmen beeinflussen
  • Verwendung von CUDA Coalescing-Techniken zur Verbesserung des Speicherdurchsatzes
  • Verwendung von CUDA Caching- und Prefetching-Techniken zur Reduzierung der Speicherlatenz
  • Verwendung von CUDA Shared-Memory- und Local-Memory-Techniken zur Optimierung von Speicherzugriffen und -bandbreite
  • Verwendung von CUDA-Profiling und Profiling-Tools zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Kenntnisse der Sprache C/C++ und paralleler Programmierkonzepte
  • Grundkenntnisse der Computerarchitektur und der Speicherhierarchie
  • Erfahrung im Umgang mit Befehlszeilentools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie man mit CUDA NVIDIA GPUs programmiert und deren Parallelität ausnutzt
  • Entwickler, die leistungsstarken 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 erforschen und die Leistung ihres Codes optimieren möchten
 28 Stunden

Teilnehmerzahl



Preis je Teilnehmer

Erfahrungsberichte (1)

Kombinierte Kurse

GPU Programming - OpenCL vs CUDA vs ROCm

28 Stunden

AMD GPU Programming

28 Stunden

ROCm for Windows

21 Stunden

Verwandte Kategorien