Thank you for sending your enquiry! One of our team members will contact you shortly.
Thank you for sending your booking! One of our team members will contact you shortly.
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
Recensioni (2)
Molto interattivo con vari esempi, con una buona progressione di complessità tra l'inizio e la fine della formazione.
Jenny - Andheo
Corso - GPU Programming with CUDA and Python
Traduzione automatica
Allenatori, energia e umorismo.
Tadeusz Kaluba - Nokia Solutions and Networks Sp. z o.o.
Corso - NVIDIA GPU Programming - Extended
Traduzione automatica