Kontakt aufnehmen
 Dauer 28 Stunden

Schulungsübersicht

Einführung

  • Was ist CUDA?
  • CUDA vs. OpenCL vs. SYCL
  • Überblick über CUDA-Funktionen und -Architektur
  • Einrichtung der Entwicklungsumgebung

Erste Schritte

  • Erstellen eines neuen CUDA-Projekts mit Visual Studio Code
  • Untersuchen der Projektstruktur und -dateien
  • Kompilieren und Ausführen des Programms
  • Ausgabe des Ergebnisses mit printf und fprintf

CUDA-API

  • Verständnis der Rolle der CUDA-API im Host-Programm
  • Verwendung der CUDA-API zum Abfragen von Geräteinformationen und -fähigkeiten
  • Verwendung der CUDA-API zum Zuweisen und Freigeben von Gerätespeicher
  • Verwendung der CUDA-API zum Kopieren von Daten zwischen Host und Gerät
  • Verwendung der CUDA-API zum Starten von Kernen und Synchronisieren von Threads
  • Verwendung der CUDA-API zur Fehlerbehandlung und Ausnahmebehandlung

CUDA C/C++

  • Verständnis der Rolle von CUDA C/C++ im Geräteprogramm
  • Verwendung von CUDA C/C++ zum Schreiben von Kernen, die auf der GPU ausgeführt werden und Daten manipulieren
  • Verwendung von CUDA C/C++-Datentypen, Qualifikatoren, Operatoren und Ausdrücken
  • Verwendung von eingebauten CUDA C/C++-Funktionen, wie z. B. Mathematik, atomare Operationen, Warp usw.
  • Verwendung von eingebauten CUDA C/C++-Variablen, wie z. B. threadIdx, blockIdx, blockDim usw.
  • Verwendung von CUDA C/C++-Bibliotheken, wie z. B. cuBLAS, cuFFT, cuRAND usw.

CUDA-Speichermodell

  • Verständnis des Unterschieds zwischen Host- und Geräte-Speichermodellen
  • Verwendung von CUDA-Speicherräumen wie global, gemeinsam genutzt, konstant und lokal
  • Verwendung von CUDA-Speicherobjekten wie Zeigern, Arrays, Texturen und Oberflächen
  • Verwendung von CUDA-Speicherzugriffsmodi wie nur Lese, nur Schreib, Lesen/Schreiben usw.
  • Verwendung des CUDA-Speicherkonsistenzmodells und von Synchronisationsmechanismen

CUDA-Ausführungsmodell

  • Verständnis des Unterschieds zwischen Host- und Geräte-Ausführungsmodellen
  • Verwendung von CUDA-Threads, Blöcken und Rastern zur Definition der Parallelität
  • Verwendung von CUDA-Thread-Funktionen wie threadIdx, blockIdx, blockDim usw.
  • Verwendung von CUDA-Block-Funktionen wie __syncthreads, __threadfence_block usw.
  • Verwendung von CUDA-Raster-Funktionen wie gridDim, gridSync, cooperative groups usw.

Debugging

  • Verständnis häufiger Fehler und Probleme in CUDA-Programmen
  • Verwendung des Visual Studio Code-Debuggers zur Inspektion von Variablen, Haltepunkten, Aufrufstapel usw.
  • Verwendung von CUDA-GDB zum Debuggen von CUDA-Programmen unter Linux
  • Verwendung von CUDA-MEMCHECK zur Erkennung von Speicherfehlern und -lecks
  • Verwendung von NVIDIA Nsight zum Debuggen und Analysieren von CUDA-Programmen unter Windows

Optimierung

  • Verständnis der Faktoren, die die Leistung von CUDA-Programmen beeinflussen
  • Verwendung von CUDA-Coalescing-Techniken zur Verbesserung der Speicherbandbreite
  • Verwendung von CUDA-Caching- und Prefetching-Techniken zur Reduzierung der Speicherlatenz
  • Verwendung von Techniken für CUDA-Gemeinsamen-Speicher und Lokalspeicher zur Optimierung von Speicherzugriffen und Bandbreite
  • Verwendung von CUDA-Profilierung und Profiling-Werkzeugen zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung

Voraussetzungen

  • Kenntnisse der Sprache C/C++ und Konzepte der Parallelprogrammierung
  • Grundkenntnisse der Computerarchitektur und der Speicherebenen
  • Erfahrung mit Kommandozeilentools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie man CUDA verwendet, um NVIDIA-GPUs zu programmieren und deren Parallelität auszunutzen
  • Entwickler, die hochperformanten und skalierbaren Code schreiben möchten, der auf verschiedenen CUDA-Geräten ausgeführt werden kann
  • Programmierer, die die tieferen Ebenen der GPU-Programmierung erkunden und die Performance ihres Codes optimieren möchten

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien