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 im Vergleich zu CUDA und OpenCL
- Überblick über die Merkmale und Architektur von ROCm sowie HIP
- Einrichtung der Entwicklungsumgebung
Erste Schritte
- Erstellung eines neuen ROCm-Projekts mit Visual Studio Code.
- Betrachtung der Projektstruktur sowie der zugehörigen Dateien.
- Kompilieren und Ausführen des Programms.
- Ausgabe der Ergebnisse mithilfe von printf und fprintf.
ROCm-API
- Bedeutung der ROCm-API im Host-Programm verstehen.
- Mittels ROCm-API Geräteinformationen sowie -fähigkeiten abfragen.
- Speicher auf dem Gerät mithilfe der ROCm-API zuweisen bzw. freigeben.
- Datenübertragung zwischen Host- und Device-Speicher durch die ROCm-API steuern.
- Kernel starten sowie Threads synchronisieren per ROCm-API.
- Fehlerbehandlung in Programmen mit Hilfe der ROCm-API.
HIP-Sprache
- Bedeutung der HIP-Sprache im Device-Programm verstehen.
- Mit HIP-Kernel schreiben, die auf der GPU ausgeführt werden und Daten manipulieren können.
- Gewöhnung an HIP-Datentypen, Qualifizierer, Operatoren sowie Ausdrücke.
- HIP-interne Funktionen, Variablen und Bibliotheken nutzen, um alltägliche Aufgaben zu bewältigen.
Speichermodell von ROCm und HIP
- Unterschiede zwischen Host- und Device-Speichermodellen erkennen.
- Durch Verwendung der Speicherbereiche global, shared, constant und local in ROCm und HIP Datenübertragungen zu optimieren.
- Mithilfe von Objekten wie Zeigern, Arrays, Texturen und Surfaces im Speicher arbeiten.
- Speicherzugriffsmodi verstehen – etwa read-only, write-only oder read-write – in ROCm und HIP nutzen.
- Mit den Mechanismen der Speichersynchronisation sowie dem Konsistenzkonzept von ROCm und HIP arbeiten.
Ausführungsmodell von ROCm und HIP
- Unterschiede zwischen Host- und Device-Ausführungsmodellen kennenlernen.
- Threads, Blöcke sowie Gitter in ROCm und HIP zur Steuerung der Parallelität definieren.
- HIP-Funktionen wie hipThreadIdx_x, hipBlockIdx_x und hipBlockDim_x verstehen und nutzen.
- Blockfunktionen wie __syncthreads oder __threadfence_block in ROCm und HIP einbinden.
- Gitterfunktionen etwa hipGridDim_x, hipGridSync sowie Kooperationsgruppen korrekt einsetzen.
Debugging
- Häufige Fehler und Bugs in ROCm- sowie HIP-Programmen erkennen.
- Visual Studio Code Debugger nutzen, um Variablen zu prüfen, Breakpoints zu setzen sowie den Aufrufstapel zu analysieren.
- ROCm Debugger einsetzen, um Programme auf AMD-Hardware zu debuggen.
- Mit ROCm Profiler die Leistung von Programmen unter Verwendung von AMD-GPUs untersuchen.
Optimierung
- Faktoren erkennen, welche die Performance von ROCm- und HIP-Programmen beeinflussen.
- Coalescing-Techniken nutzen, um den Speicherdurchsatz zu verbessern.
- Caching sowie Prefetching zur Reduzierung der Speicherlatenz anwenden.
- Gemeinsamen Speicher und lokalen Speicher in ROCm und HIP gezielt für optimierten Zugriff einsetzen.
- Profiling-Werkzeuge nutzen, um Ausführungszeit sowie Ressourcennutzung zu analysieren und weiter zu verbessern.
Zusammenfassung und weitere Schritte
Voraussetzungen
- Grundverständnis der Programmiersprachen C/C++ sowie von Konzepten zur Parallelprogrammierung
- Grundsätzliche Kenntnisse der Computerarchitektur und des Speicherhierarchiekonzepts
- Erfahrung mit Kommandozeilenwerkzeugen sowie Code-Editoren
Zielgruppe
- Entwickler, die lernen möchten, wie man ROCm und HIP nutzt, um AMD-GPUs zu programmieren und deren Parallelisierungspotenzial auszuschöpfen.
- Entwickler, die hochleistungsfähigen und skalierbaren Code entwerfen möchten, der auf verschiedenen AMD-Hardwaren läuft.
- Programmierer, die tiefergehende Aspekte der GPU-Programmierung erkunden sowie die Leistung ihres Codes optimieren wollen.
28 Stunden