Kontakt aufnehmen

Schulungsübersicht

Einführung

  • Was ist ROCm?
  • Was ist HIP?
  • ROCm vs. CUDA vs. OpenCL
  • Übersicht ü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 Dateien
  • Kompilieren und Ausführen des Programms
  • Ausgabe anzeigen mit printf und fprintf

ROCm-API

  • Verständnis der Rolle der ROCm-API im Host-Programm
  • Nutzung der ROCm-API zum Abfragen von Geräteinformationen und -fähigkeiten
  • Nutzung der ROCm-API zur Allokation und Freigabe 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 zum Behandeln von Fehlern und Ausnahmen

HIP-Sprache

  • Verständnis der Rolle der HIP-Sprache im Gerät-Programm
  • Nutzung der HIP-Sprache zum Schreiben von Kernels, die auf der GPU ausgeführt werden und Daten manipulieren
  • Nutzung von HIP-Datentypen, Qualifiern, Operatoren und Ausdrücken
  • Nutzung von HIP-eingebauten Funktionen, Variablen und Bibliotheken zur Durchführung häufiger Aufgaben und Operationen

ROCm- und HIP-Speichermodell

  • Verständnis des Unterschieds zwischen Host- und Gerätespeichermodellen
  • Nutzung von ROCm- und HIP-Speicherräumen wie global, gemeinsam genutzt, konstant und lokal
  • Nutzung von ROCm- und HIP-Speicherobjekten wie Zeigern, Arrays, Texturen und Oberflächen
  • Nutzung von ROCm- und HIP-Speicherzugriffsmodi wie schreibgeschützt, schreibgeschützt, lesen-schreiben usw.
  • Verständnis des ROCm- und HIP-Speicherkonsistenzmodells und der Synchronisationsmechanismen

ROCm- und HIP-Ausführungsmodell

  • Verständnis des Unterschieds zwischen Host- und Geräteausführungsmodellen
  • Nutzung von ROCm- und HIP-Threads, Blöcken und Grids zur Definition der Parallelität
  • Nutzung von ROCm- und HIP-Thread-Funktionen wie hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x usw.
  • Nutzung von ROCm- und HIP-Block-Funktionen wie __syncthreads, __threadfence_block usw.
  • Nutzung von ROCm- und HIP-Grid-Funktionen wie hipGridDim_x, hipGridSync, kooperative Gruppen usw.

Fehlersuche

  • Verständnis häufiger Fehler und Bugs in ROCm- und HIP-Programmen
  • Nutzung des Visual Studio Code-Debuggers zum Untersuchen von Variablen, Haltepunkten, Aufrufstapel usw.
  • Nutzung des ROCm Debuggers zum Debuggen von ROCm- und HIP-Programmen auf AMD-Geräten
  • Nutzung des ROCm Profilers zum Analysieren von ROCm- und HIP-Programmen auf AMD-Geräten

Optimierung

  • Verständnis der Faktoren, die die Leistung von ROCm- und HIP-Programmen beeinflussen
  • Nutzung von ROCm- und HIP-Coalescing-Techniken zur Verbesserung des Speicher-Durchsatzes
  • Nutzung von ROCm- und HIP-Caching- und Prefetching-Techniken zur Reduzierung der Speicherlatenz
  • Nutzung von ROCm- und HIP-Sharing-Memory- und lokalem Memory-Techniken zur Optimierung von Speicherzugriffen und Bandbreite
  • Nutzung von ROCm- und HIP-Profilings und Profiling-Tools zum Messen und Verbessern der Ausführungszeit und Ressourcenauslastung

Zusammenfassung und nächste Schritte

Voraussetzungen

  • Verständnis der C/C++-Sprache und paralleler Programmierkonzepte
  • Grundlegende Kenntnisse in Computerarchitektur und Speicherprioritäten
  • Erfahrung mit Kommandozeilen-Tools und Code-Editoren

Zielgruppe

  • Entwickler, die lernen möchten, wie man ROCm und HIP zur Programmierung von AMD-GPUs verwendet und deren Parallelität ausnutzt
  • Entwickler, die hochleistungsfähigen 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 erkunden und die Leistung ihres Codes optimieren möchten
 28 Stunden

Teilnehmerzahl


Preis je Teilnehmer (exkl. USt)

Kommende Kurse

Verwandte Kategorien