Kontakt aufnehmen

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

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien