Introduzione alla programmazione ROCm e HIP: Un tutorial pratico
Una guida pratica e moderna alla programmazione GPU AMD con ROCm e HIP. Copre l'intero stack software, l'installazione, i flussi di build, la programmazione dei kernel, la gestione della memoria, l'ingegneria delle prestazioni, l'uso delle librerie, il porting da CUDA e le pratiche di debug in produzione.
Panoramica del corso
Riepilogo del contenuto
Una guida pratica e moderna alla programmazione GPU AMD con ROCm e HIP. Copre l'intero stack software, l'installazione, i flussi di compilazione, la programmazione dei kernel, la gestione della memoria, l'ingegneria delle prestazioni, l'uso delle librerie, il porting da CUDA e le pratiche di debug in produzione.
Padroneggia la programmazione GPU AMD e la portabilità da CUDA a HIP con questo approfondimento tecnico.
Autore: EvoClass
Ringraziamenti: Documentazione ufficiale AMD su ROCm e HIP, inclusi progetti come ROCm, HIP e ROCm LLVM.
Obiettivi di apprendimento
- Definire HIP e il suo ruolo nell'ecosistema ROCm in una singola frase concisa.
- Distinguere tra ROCm (piattaforma), HIP (interfaccia) e le librerie ROCm (elementi costitutivi).
- Identificare i livelli gerarchici dell'architettura ROCm dal hardware ai framework applicativi.
- Definire il rapporto tra l'SDK HIP e la piattaforma ROCm su diverse sistemi operativi.
- Eseguire un flusso di installazione sistematico, compresa la verifica della matrice di supporto e la configurazione dei percorsi post-installazione.
- Compilare ed eseguire un programma di verifica minimo per risolvere problemi comuni di driver e accesso all'ambiente.
- Comprendere perché una strategia di build robusta è essenziale per conciliare la portabilità del codice sorgente con le prestazioni specifiche dell'architettura.
- Implementare lanci di kernel portabili utilizzando il macro
hipLaunchKernelGGLcome alternativa alla sintassi a triple parentesi angolari di CUDA. - Configurare progetti CMake di livello produttivo che mirino a architetture ROCm specifiche e gestiscano dipendenze esterne.
- Definire l'anatomia di un kernel HIP e applicare la formula base per l'indicizzazione dei thread.