Vielen Dank für die Zusendung Ihrer Anfrage! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
Vielen Dank, dass Sie Ihre Buchung abgeschickt haben! Eines unserer Teammitglieder wird Sie in Kürze kontaktieren.
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