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

Numero di Partecipanti



Prezzo per Partecipante

Recensioni (1)

Corsi relativi

GPU Programming with CUDA

28 ore

GPU Programming - OpenCL vs CUDA vs ROCm

28 ore

ROCm for Windows

21 ore

Categorie relative