0Pricing
CUDA Academy · Lezione

Limiti di registri e memoria condivisa

Scopra come le risorse limitano i blocchi residenti.

Limiti di registri e memoria condivisa è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CUDA Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CUDA Academy include 4 lezioni in totale.

Il budget delle risorse

Ogni SM dispone di una quantità fissa di registri e memoria condivisa. Ogni blocco residente deve ricavare la propria parte da queste risorse.

Registri per thread

Il kernel utilizza un certo numero di registri per thread. Moltiplicandolo per il numero di thread per blocco si ottiene il costo in registri di un blocco.

I registri limitano i blocchi

Se ogni thread richiede molti registri, possono entrare meno thread e quindi rimangono residenti meno blocchi. I kernel che usano molti registri perdono occupazione.

Visualizzare l'uso dei registri

Compili con questo flag e nvcc stamperà il numero di registri per thread, consentendo di individuare quando un kernel è troppo esigente in termini di registri.

nvcc -Xptxas -v vecadd.cu

Limitare i registri

Può imporre un limite massimo con un launch bound, così il compilatore utilizza meno registri e consente a un numero maggiore di warp di rimanere residenti.

__launch_bounds__(256, 4) __global__ void k() {}

Memoria condivisa per blocco

Ogni blocco può richiedere memoria condivisa. L'SM può contenere solo il numero di blocchi consentito dalla propria memoria condivisa, spesso compreso tra 48 e 100 KB.

La memoria condivisa limita i blocchi

Se richiede un tile __shared__ di grandi dimensioni, su ogni SM potranno entrare solo uno o due blocchi. I tile grandi sacrificano occupazione in favore del riutilizzo dei dati.

Vince il limite più restrittivo

L'SM calcola il numero di blocchi consentito dai registri, dalla memoria condivisa e dal limite di warp. È il valore più piccolo a determinare l'occupazione.

Spill dei registri

Quando un thread richiede più registri di quelli consentiti, quelli in eccesso vengono trasferiti nella lenta memoria locale tramite spill. Gli spill possono danneggiare le prestazioni più di una bassa occupazione.

Ottimizzare l'equilibrio

Ridurre registri o memoria condivisa aumenta l'occupazione, ma una riduzione troppo aggressiva causa spill. Il punto ottimale è un equilibrio.

Misuri, non faccia supposizioni

Prima di ottimizzare, legga sempre l'effettivo utilizzo di registri e memoria condivisa riportato dal compilatore. Le supposizioni portano quasi sempre a intervenire sul parametro sbagliato.

Verifica rapida

Ricordi come l'SM decide quanti blocchi possono rimanere residenti.

Riepilogo

Ha visto che registri e memoria condivisa sono budget fissi dell'SM e che il limite più restrittivo limita l'occupazione. Faccia attenzione agli spill. 🧮

Domande Frequenti

La lezione «Limiti di registri e memoria condivisa» è gratuita?

Sì — il testo completo di «Limiti di registri e memoria condivisa» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CUDA Academy, passa a CoddyKit PRO. Il corso CUDA Academy include 4 lezioni in totale.

Cosa imparerò in «Limiti di registri e memoria condivisa»?

Scopra come le risorse limitano i blocchi residenti. Eserciti CUDA Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare CUDA Academy?

Non è richiesta alcuna esperienza precedente. CUDA Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Limiti di registri e memoria condivisa»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione CUDA Academy?

Sì. Ogni lezione CUDA Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Che cosa significa davvero occupancy
  2. Limiti di registri e memoria condivisa
  3. API del calcolatore dell'occupancy
  4. L'occupancy non è tutto
← Torna a CUDA Academy