Grazie per aver inviato la tua richiesta! Uno dei nostri team membri ti contatterà a breve.
Grazie per aver inviato il tuo prenotazione! Uno dei nostri team membri ti contatterà a breve.
Struttura del corso
Introduzione
- Che cos'è ROCm?
- Che cos'è l'HIP?
- ROCm vs CUDA vs OpenCL
- Panoramica delle funzionalità e dell'architettura di ROCm e HIP
- Impostazione dell'ambiente di sviluppo
Introduttiva
- Creazione di un nuovo progetto ROCm utilizzando Visual Studio Code
- Esplorazione della struttura e dei file del progetto
- Compilazione ed esecuzione del programma
- Visualizzazione dell'output con printf e fprintf
ROCm API
- Comprendere il ruolo dell'API ROCm nel programma host
- Utilizzo dell'API ROCm per eseguire query sulle informazioni e sulle funzionalità del dispositivo
- Utilizzo dell'API ROCm per allocare e deallocare la memoria del dispositivo
- Utilizzo dell'API ROCm per copiare i dati tra host e dispositivo
- Utilizzo dell'API ROCm per avviare i kernel e sincronizzare i thread
- Utilizzo dell'API ROCm per gestire errori ed eccezioni
Lingua HIP
- Comprendere il ruolo del linguaggio HIP nel programma del dispositivo
- Utilizzo del linguaggio HIP per scrivere kernel che vengono eseguiti su GPU e manipolano i dati
- Utilizzo di tipi di dati, qualificatori, operatori ed espressioni HIP
- Utilizzo di funzioni, variabili e librerie predefinite HIP per eseguire attività e operazioni comuni
Modello di memoria ROCm e HIP
- Comprendere la differenza tra i modelli di memoria host e dispositivo
- Utilizzo degli spazi di memoria ROCm e HIP, ad esempio globale, condiviso, costante e locale
- Utilizzo di oggetti di memoria ROCm e HIP, ad esempio puntatori, matrici, trame e superfici
- Utilizzo delle modalità di accesso alla memoria ROCm e HIP, ad esempio sola lettura, sola scrittura, lettura/scrittura, ecc.
- Utilizzo del modello di coerenza della memoria ROCm e HIP e dei meccanismi di sincronizzazione
Modello di esecuzione ROCm e HIP
- Comprendere la differenza tra i modelli di esecuzione host e dispositivo
- Utilizzo di thread, blocchi e griglie ROCm e HIP per definire il parallelismo
- Utilizzo delle funzioni di thread ROCm e HIP, ad esempio hipThreadIdx_x, hipBlockIdx_x, hipBlockDim_x e così via.
- Utilizzo delle funzioni di blocco ROCm e HIP, come __syncthreads, __threadfence_block, ecc.
- Utilizzo delle funzioni di griglia ROCm e HIP, ad esempio hipGridDim_x, hipGridSync, gruppi cooperativi, ecc.
Debug
- Comprendere gli errori e i bug più comuni nei programmi ROCm e HIP
- Utilizzo di Visual Studio Debugger di codice per ispezionare variabili, punti di interruzione, stack di chiamate e così via.
- Utilizzo di ROCm Debugger per eseguire il debug di programmi ROCm e HIP su dispositivi AMD
- Utilizzo di ROCm Profiler per analizzare i programmi ROCm e HIP sui dispositivi AMD
Ottimizzazione
- Comprendere i fattori che influenzano le prestazioni dei programmi ROCm e HIP
- Utilizzo di tecniche di coalescenza ROCm e HIP per migliorare il throughput della memoria
- Utilizzo di tecniche di caching e prelettura ROCm e HIP per ridurre la latenza della memoria
- Utilizzo della memoria condivisa ROCm e HIP e delle tecniche di memoria locale per ottimizzare gli accessi alla memoria e la larghezza di banda
- Utilizzo di strumenti di profilazione e profilazione ROCm e HIP per misurare e migliorare il tempo di esecuzione e l'utilizzo delle risorse
Riepilogo e passo successivo
Requisiti
- Comprensione del linguaggio C/C++ e dei concetti di programmazione parallela
- Conoscenza di base dell'architettura dei calcolatori e della gerarchia della memoria
- Esperienza con gli strumenti da riga di comando e gli editor di codice
Pubblico
- Sviluppatori che desiderano imparare ad usare ROCm e HIP per programmare AMD GPU e sfruttarne il parallelismo
- Sviluppatori che desiderano scrivere codice scalabile e ad alte prestazioni che può essere eseguito su diversi dispositivi AMD
- Programmatori che desiderano esplorare gli aspetti di basso livello della programmazione GPU e ottimizzare le prestazioni del codice
28 ore