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'è CUDA?
- CUDA contro OpenCL contro SYCL
- Panoramica delle funzionalità e dell'architettura di CUDA
- Impostazione dell'ambiente di sviluppo
Introduttiva
- Creazione di un nuovo progetto CUDA utilizzando Visual Studio Code
- Esplorazione della struttura e dei file del progetto
- Compilazione ed esecuzione del programma
- Visualizzazione dell'output con printf e fprintf
CUDA API
- Comprendere il ruolo dell'API CUDA nel programma host
- Utilizzo dell'API CUDA per eseguire query sulle informazioni e sulle funzionalità del dispositivo
- Utilizzo dell'API CUDA per allocare e deallocare la memoria del dispositivo
- Utilizzo dell'API CUDA per copiare i dati tra host e dispositivo
- Utilizzo dell'API CUDA per avviare kernel e sincronizzare i thread
- Utilizzo dell'API CUDA per gestire errori ed eccezioni
CUDA C/C++
- Informazioni sul ruolo di CUDA C/C++ nel programma del dispositivo
- Utilizzo di CUDA C/C++ per scrivere kernel che vengono eseguiti su GPU e manipolano i dati
- Utilizzo di tipi di dati, qualificatori, operatori ed espressioni CUDA C/C++
- Utilizzo delle funzioni integrate CUDA C/C++, ad esempio math, atomic, warp, ecc.
- Utilizzo di variabili predefinite CUDA C/C++, ad esempio threadIdx, blockIdx, blockDim e così via.
- Utilizzo di librerie CUDA C/C++, ad esempio cuBLAS, cuFFT, cuRAND, ecc.
Modello di memoria CUDA
- Comprendere la differenza tra i modelli di memoria host e dispositivo
- Utilizzo degli spazi di memoria CUDA, ad esempio globale, condivisa, costante e locale
- Utilizzo di oggetti di memoria CUDA, ad esempio puntatori, matrici, trame e superfici
- Utilizzo delle modalità di accesso alla memoria CUDA, ad esempio sola lettura, sola scrittura, lettura/scrittura, ecc.
- Utilizzo del modello di coerenza della memoria CUDA e dei meccanismi di sincronizzazione
Modello di esecuzione CUDA
- Comprendere la differenza tra i modelli di esecuzione host e dispositivo
- Utilizzo di thread, blocchi e griglie CUDA per definire il parallelismo
- Utilizzo delle funzioni di thread CUDA, ad esempio threadIdx, blockIdx, blockDim e così via.
- Utilizzo di funzioni di blocco CUDA, ad esempio __syncthreads, __threadfence_block, ecc.
- Utilizzo delle funzioni di griglia CUDA, ad esempio gridDim, gridSync, gruppi cooperativi, ecc.
Debug
- Comprendere gli errori e i bug più comuni nei programmi CUDA
- Utilizzo di Visual Studio Debugger di codice per ispezionare variabili, punti di interruzione, stack di chiamate e così via.
- Utilizzo di CUDA-GDB per eseguire il debug dei programmi CUDA su Linux
- Utilizzo di CUDA-MEMCHECK per rilevare errori e perdite di memoria
- Uso di NVIDIA Nsight per eseguire il debug e l'analisi dei programmi CUDA in Windows
Ottimizzazione
- Comprendere i fattori che influenzano le prestazioni dei programmi CUDA
- Utilizzo di tecniche di coalescenza CUDA per migliorare il throughput della memoria
- Utilizzo di tecniche di caching e prefetching CUDA per ridurre la latenza della memoria
- Utilizzo della memoria condivisa CUDA e delle tecniche di memoria locale per ottimizzare gli accessi alla memoria e la larghezza di banda
- Utilizzo di strumenti di profilatura e profilatura CUDA per misurare e migliorare il tempo di esecuzione e l'utilizzo delle risorse
Riepilogo e prossime tappe
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 a usare CUDA per programmare NVIDIA GPU e sfruttarne il parallelismo
- Sviluppatori che desiderano scrivere codice scalabile e ad alte prestazioni che può essere eseguito su diversi dispositivi CUDA
- 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