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
- Cos’è ROCm?
- Cos’è HIP?
- ROCm rispetto a CUDA ed OpenCL
- Panoramica sulle caratteristiche e sull’architettura di ROCm e HIP
- Differenze tra ROCm per Windows e ROCm per Linux
Installazione
- Procedura di installazione di ROCm su Windows
- Verifica dell’installazione e controllo della compatibilità dei dispositivi
- Aggiornamento o disinstallazione di ROCm da Windows
- Risoluzione dei problemi più comuni durante l’installazione
Primi passi
- Creare un nuovo progetto ROCm con Visual Studio Code su Windows
- Esplorazione della struttura e dei file del progetto
- Compilazione ed esecuzione del programma
- Visualizzazione dei risultati tramite printf e fprintf
API di ROCm
- Utilizzo dell’API di ROCm all’interno dei programmi host.
- Interrogazione delle informazioni e delle capacità del dispositivo.
- Allocazione e deallocazione della memoria del device.
- Copia dati tra host e device.
- Lancio di kernel e sincronizzazione dei thread.
- Gestione degli errori ed eccezioni.
Linguaggio HIP
- Scrittura del codice per il device in linguaggio HIP.
- Creazione di kernel che vengono eseguiti sulla GPU e manipolano i dati.
- Utilizzo dei tipi di dati, degli operatori e delle espressioni previsti da HIP.
- Impiego delle funzioni integrate, delle variabili e delle librerie fornite da HIP.
Modello di memoria di ROCm e HIP
- Adozione degli spazi di memoria globale, condiviso, costante e locale.
- Impiego di oggetti della memoria quali puntatori, array, texture e superfici.
- Definizione dei diversi modi di accesso alla memoria: in sola lettura, in solo scrittura, lettura/scrittura.
- Gestione del modello di coerenza della memoria e dei meccanismi di sincronizzazione.
Modelli di esecuzione di ROCm e HIP
- Gestione dei thread, dei blocchi e delle griglie che definiscono la parallelizzazione.
- Utilizzo delle funzioni relative ai thread, come hipThreadIdx_x, hipBlockIdx_x e hipBlockDim_x.
- Impiego delle funzioni di blocco quali __syncthreads e __threadfence_block.
- Applicazione delle funzioni legate alle griglie, ad esempio hipGridDim_x, hipGridSync e i gruppi cooperativi.
Depurazione
- Debug dei programmi ROCm e HIP su Windows.
- Osservazione di variabili, punti di interruzione e dello stack delle chiamate mediante il debugger di Visual Studio Code.
- Utilizzo del Debugger di ROCm per analizzare i programmi eseguiti su dispositivi AMD.
- Analisi prestazionale con il Profiler di ROCm sui software sviluppati.
Ottimizzazione
- Tehniche per migliorare le performance dei programmi basati su ROCm e HIP su Windows.
- Adozione della coalescenza per aumentare il throughput della memoria.
- Utilizzo della memorizzazione temporanea e del prefetching al fine di ridurre la latenza.
- Sfruttamento della memoria condivisa e locale per ottimizzare l’accesso ai dati.
- Adozione degli strumenti di analisi delle prestazioni per misurare il tempo d’esecuzione e l’utilizzo delle risorse.
Conclusione e prossimi passi
Requisiti
- Conoscenza della programmazione in C/C++ e dei concetti legati alla parallelizzazione
- Conoscenze di base sull’architettura dei computer e sulla gerarchia della memoria
- Esperienza nell’utilizzo di strumenti a riga di comando e editor di codice
- Familiarità con il sistema operativo Windows e con PowerShell
Destinatari del corso
- Sviluppatori interessati ad apprendere l’installazione e l’utilizzo di ROCm su Windows per programmare le GPU AMD e sfruttarne la potenza parallela.
- Programmatori desiderosi di sviluppare codice ad alta performance e scalabile in grado di funzionare su diversi dispositivi AMD.
- Programmatori intenzionati a esplorare gli aspetti più profondi della programmazione delle GPU al fine di ottimizzarne le prestazioni.
21 ore