Guida alla Programmazione CUDA
La risorsa ufficiale e completa per gli sviluppatori per imparare il modello di programmazione CUDA e come scrivere codice ad alte prestazioni che si esegue su GPU NVIDIA. Questa guida copre l'architettura della piattaforma, l'interfaccia di programmazione, le funzionalità hardware avanzate e le specifiche tecniche.
Panoramica del corso
Riepilogo del contenuto
La risorsa ufficiale e completa per gli sviluppatori che desiderano apprendere il modello di programmazione CUDA e come scrivere codice ad alte prestazioni eseguito su GPU NVIDIA. Questa guida copre l'architettura della piattaforma, l'interfaccia di programmazione, le caratteristiche hardware avanzate e le specifiche tecniche.
Padroneggia l'arte del calcolo parallelo con la guida standard dell'industria per NVIDIA CUDA.
Autore: NVIDIA Corporation
Ringraziamenti: Copyright © 2007-2024 NVIDIA Corporation & affiliate. Tutti i diritti riservati.
Obiettivi didattici
- Definire i ruoli dell'host (CPU) e del dispositivo (GPU) all'interno di un sistema eterogeneo.
- Spiegare il modello di programmazione SIMT e l'organizzazione gerarchica di thread, blocchi e griglie.
- Distinguere tra PTX (Parallel Thread Execution) e codice binario (cubins) e spiegare come la compilazione Just-in-Time (JIT) faciliti la compatibilità.
- Sviluppare e compilare kernel CUDA: scrivere funzioni global, configurare l'esecuzione con la notazione a tripla freccia e gestire il flusso di compilazione NVCC.
- Ottimizzare la memoria e il movimento dei dati: distinguere tra modelli di memoria Unified, Esplicita e Mappata, e implementare la memoria host bloccata a pagina per trasferimenti efficienti.
- Gestire l'esecuzione parallela: utilizzare CUDA Streams, Eventi e Cooperative Groups per gestire compiti asincroni e sincronizzare operazioni CPU-GPU.
- Eseguire aritmetica di puntatori complessa e identificare i collo di bottiglia architettonici (von Neumann vs. Harvard).
- Implementare pattern di esecuzione CUDA avanzati, inclusi lanci kernel dipendenti dal programma e trasferimenti batch multipli eterogenei.
- Utilizzare funzionalità specifiche dell'hardware come Thread Scopes, Proxy asincroni e Pipeline per massimizzare la concorrenza.
- Configurare e ottimizzare le prestazioni della memoria Unified tramite prefetching, suggerimenti d'uso e gestione delle dimensioni delle pagine.