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.
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
Erfahrungsberichte (2)
Sehr interaktiv mit verschiedenen Beispielen, mit einer guten Progression in der Komplexität zwischen dem Beginn und dem Ende des Trainings.
Jenny - Andheo
Kurs - GPU Programming with CUDA and Python
Maschinelle Übersetzung
Energie und Humor des Trainers.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Kurs - NVIDIA GPU Programming - Extended
Maschinelle Übersetzung