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

Teilnehmerzahl


Preis je Teilnehmer

Erfahrungsberichte (2)