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 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