Kontakt aufnehmen

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

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien