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 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