Contattataci

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

Numero di Partecipanti


Prezzo per partecipante

Corsi in Arrivo

Categorie relative