Kontakt aufnehmen
 Dauer 28 Stunden

Schulungsübersicht

Einführung

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

Einstieg

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

CUDA-API

  • Verständnis der Rolle der CUDA-API im Host-Programm
  • Verwendung der CUDA-API zur Abfrage von Geräteinformationen und -fähigkeiten
  • Verwendung der CUDA-API zur Zuweisung und Freigabe 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 der Synchronisation von Threads
  • Verwendung der CUDA-API zur Fehlerbehandlung und zum Umgang mit Ausnahmen

CUDA C/C++

  • Verständnis der Rolle von CUDA C/C++ im Geräteprogramm
  • Verwendung von CUDA C/C++, um Kerne zu schreiben, 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 Mathematik, atomare Operationen, Warp usw.
  • Verwendung von eingebauten CUDA C/C++-Variablen wie threadIdx, blockIdx, blockDim usw.
  • Verwendung von CUDA C/C++-Bibliotheken wie cuBLAS, cuFFT, cuRAND usw.

CUDA-Speichermodell

  • Verständnis des Unterschieds zwischen Host- und Gerätespeichermodellen
  • Verwendung von CUDA-Speicherbereichen wie global, gemeinsam genutzt, konstant und lokal
  • Verwendung von CUDA-Speicherobjekten wie Zeigern, Arrays, Texturen und Oberflächen
  • Verwendung von CUDA-Speicherzugriffsmodi wie Nur Lesen, Nur Schreiben, Lesen und Schreiben usw.
  • Verwendung des CUDA-Speicherkonsistenzmodells und von Synchronisationsmechanismen

CUDA-Ausführungsmodell

  • Verständnis des Unterschieds zwischen Host- und Geräteausführungsmodellen
  • Verwendung von CUDA-Threads, -Blöcken und -Rastern zur Definition der Parallelität
  • Verwendung von CUDA-Threadfunktionen wie threadIdx, blockIdx, blockDim usw.
  • Verwendung von CUDA-Blockfunktionen wie __syncthreads, __threadfence_block usw.
  • Verwendung von CUDA-Rasterfunktionen wie gridDim, gridSync, cooperative groups usw.

Debugging

  • Verständnis von häufigen Fehlern und Bugs in CUDA-Programmen
  • Verwendung des Visual Studio Code-Debuggers zur Inspektion von Variablen, Breakpoints, 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 Speicherdurchsatzleistung
  • Verwendung von CUDA-Caching- und Prefetching-Techniken zur Reduzierung der Speicherlatenz
  • Verwendung von Techniken für CUDA-Shared Memory und lokalen Speicher zur Optimierung von Speicherzugriffen und -bandbreite
  • Verwendung von CUDA-Profiling und Profiling-Tools zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung

Voraussetzungen

  • Verständnis der C/C++-Programmiersprache und von Konzepten der parallelen Programmierung
  • Grundlegende Kenntnisse der Computerarchitektur und der Speichhierarchie
  • Erfahrung mit Befehlszeilentools 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 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 erkunden und die Leistung ihres Codes optimieren möchten

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien