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 ROCm?
- Was ist HIP?
- ROCm vs. CUDA vs. OpenCL
- Überblick über die Funktionen und Architektur von ROCm und HIP
- Einrichten der Entwicklungsumgebung
Erste Schritte
- Erstellen eines neuen ROCm-Projekts mit Visual Studio Code
- Erkundung der Projektstruktur und der Dateien
- Kompilieren und Ausführen des Programms
- Anzeigen der Ausgabe mit printf und fprintf
ROCm-API
- Verstehen der Rolle der ROCm-API im Host-Programm
- Verwendung von ROCm API zur Abfrage von Geräteinformationen und -fähigkeiten
- Verwendung von ROCm API zum Zuweisen und Freigeben von Gerätespeicher
- Verwenden der ROCm API zum Kopieren von Daten zwischen Host und Gerät
- Verwendung der ROCm-API zum Starten von Kerneln und Synchronisieren von Threads
- Verwendung der ROCm-API zur Behandlung von Fehlern und Ausnahmen
HIP-Sprache
- Verstehen der Rolle der HIP-Sprache im Geräteprogramm
- Verwendung der HIP-Sprache zum Schreiben von Kernels, die auf dem GPU ausgeführt werden und Daten manipulieren
- Verwendung von HIP-Datentypen, Qualifizierern, Operatoren und Ausdrücken
- Verwendung der in HIP integrierten Funktionen, Variablen und Bibliotheken zur Durchführung allgemeiner Aufgaben und Operationen
ROCm und HIP-Speichermodell
- Verstehen des Unterschieds zwischen Host- und Gerätespeichermodellen
- Verwendung von ROCm- und HIP-Speicherbereichen, wie z. B. global, gemeinsam genutzt, konstant und lokal
- Verwendung von ROCm- und HIP-Speicherobjekten, wie Zeigern, Arrays, Texturen und Oberflächen
- Verwendung von ROCm- und HIP-Speicherzugriffsmodi, z. B. Nur-Lesen, Nur-Schreiben, Lesen-Schreiben usw.
- Verwendung des ROCm- und HIP-Speicherkonsistenzmodells und der Synchronisationsmechanismen
ROCm- und HIP-Ausführungsmodell
- Verstehen des Unterschieds zwischen Host- und Geräteausführungsmodellen
- Verwendung von ROCm- und HIP-Threads, -Blöcken und -Gittern zur Definition der Parallelität
- Verwendung von ROCm- und HIP-Thread-Funktionen, wie hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x usw.
- Verwendung von ROCm- und HIP-Blockfunktionen, wie __syncthreads, __threadfence_block, usw.
- Verwendung von ROCm- und HIP-Grid-Funktionen, z. B. hipGridDim_x, hipGridSync, kooperative Gruppen usw.
Fehlersuche
- Verstehen der häufigsten Fehler und Bugs in ROCm- und HIP-Programmen
- Verwendung des Visual Studio Code-Debuggers zur Untersuchung von Variablen, Haltepunkten, Aufrufstapel usw.
- Verwendung des ROCm Debuggers zum Debuggen von ROCm- und HIP-Programmen auf AMD-Geräten
- Verwendung von ROCm Profiler zur Analyse von ROCm- und HIP-Programmen auf AMD-Geräten
Optimierung
- Verstehen der Faktoren, die die Leistung von ROCm- und HIP-Programmen beeinflussen
- Verwendung von ROCm- und HIP-Koaleszenztechniken zur Verbesserung des Speicherdurchsatzes
- Verwendung von ROCm- und HIP-Caching- und Prefetching-Techniken zur Reduzierung der Speicherlatenz
- Verwendung von ROCm- und HIP-Techniken für gemeinsamen Speicher und lokalen Speicher zur Optimierung von Speicherzugriffen und Bandbreite
- Einsatz von ROCm- und HIP-Profiling und Profiling-Tools zur Messung und Verbesserung der Ausführungszeit und Ressourcennutzung
Zusammenfassung und nächster Schritt
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 ROCm und HIP verwendet, um AMD GPUs zu programmieren und deren Parallelität auszunutzen
- Entwickler, die leistungsstarken und skalierbaren Code schreiben möchten, der auf verschiedenen AMD-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