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
- Übersicht über Features und Architektur von ROCm und HIP
- Einrichten der Entwicklungsumgebung
Erste Schritte
- Erstellen eines neuen ROCm-Projekts mit Visual Studio Code
- Erkundung der Projektstruktur und Dateien
- Kompilieren und Ausführen des Programms
- Ausgabe darstellen mittels printf und fprintf
ROCm-API
- Verstehen der Rolle der ROCm-API im Host-Programm
- Nutzung der ROCm-API zum Abfragen von Gerätschaftsinformationen und Fähigkeiten
- Nutzung der ROCm-API zur Allokation und Deallokation des Gerätespeichers
- Nutzung der ROCm-API zum Kopieren von Daten zwischen Host und Gerät
- Nutzung der ROCm-API zum Starten von Kernels und Synchronisieren von Threads
- Nutzung der ROCm-API zur Fehlerbehandlung und Exception-Abfangung
HIP-Sprache
- Verstehen der Rolle der HIP-Sprache im Device-Programm
- Schreiben von Kernels mittels HIP-Sprache, die auf der GPU ausgeführt werden und Daten manipulieren
- Nutzung von HIP-Datentypen, Qualifikatoren, Operatoren und Ausdrücken
- Eingebaute Funktionen, Variablen und Bibliotheken von HIP für häufige Aufgaben und Operationen einsetzen
ROCm- und HIP-Speichermodell
- Verstehen der Unterschiede zwischen Host- und Device-Speichermodellen
- Nutzung von Speicherbereichen wie global, shared, constant und local
- Nutzung von Speicherkonzepten wie Zeiger, Arrays, Texturen und Surfaces
- Nutzung von Speicherzugriffsmodi, wie read-only, write-only, read-write usw.
- Verstehen des Speicher-Konsistenzmodells und der Synchronisierungsmechanismen
ROCm- und HIP-Ausführungsmodell
- Verstehen der Unterschiede zwischen Host- und Device-Ausführungsmodellen
- Definition der Parallelität mittels Threads, Blocks und Grids
- Nutzung von Thread-Funktionen, wie hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x usw.
- Nutzung von Block-Funktionen, wie __syncthreads, __threadfence_block usw.
- Nutzung von Grid-Funktionen, wie hipGridDim_x, hipGridSync, cooperative groups usw.
Debugging
- Verstehen häufiger Fehler und Bugs in ROCm- und HIP-Programmen
- Nutzung des Visual Studio Code Debuggers zum Untersuchen von Variablen, Breakpoints, Call Stack usw.
- Nutzung des ROCm Debuggers zum Debuggen von ROCm- und HIP-Programmen auf AMD-Geräten
- Nutzung des ROCm Profilers zur Analyse von ROCm- und HIP-Programmen auf AMD-Geräten
Optimierung
- Verstehen der Faktoren, die die Leistung von ROCm- und HIP-Programmen beeinflussen
- Anwendung von Coalescing-Techniken zur Verbesserung des Speicherdurchsatzes
- Einsatz von Caching- und Prefetching-Techniken zur Reduzierung der Speicherlatenz
- Optimierung von Speicherzugriffen und Bandbreite durch Shared Memory und Local Memory
- Messung und Verbesserung der Ausführungszeit und Ressourcennutzung mittels Profiling und entsprechenden Tools
Zusammenfassung und nächste Schritte
Voraussetzungen
- Kenntnisse in der C/C++-Sprache und Konzepten der parallelen Programmierung
- Grundlegendes Wissen über Computerarchitektur und Speicherhierarchie
- Erfahrung mit Befehlszeilentools und Code-Editoren
Zielgruppe
- Entwicklerinnen und Entwickler, die lernen möchten, wie man ROCm und HIP zur Programmierung von AMD-GPUs nutzt und deren Parallelität ausschöpft.
- Entwicklerinnen und Entwickler, die hochperformanten und skalierbaren Code schreiben möchten, der auf verschiedenen AMD-Geräten ausgeführt werden kann.
- Programmierende, die die Low-Level-Aspekte der GPU-Programmierung erkunden und ihre Code-Leistung optimieren möchten.
28 Stunden