0Pricing
CUDA Academy · Lezione

Il problema del riutilizzo dei dati

Scopra perché i kernel ingenui rileggono la memoria globale.

Il problema del riutilizzo dei dati è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 1 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 costo nascosto

Un kernel può essere corretto ma lento perché continua a recuperare gli stessi dati dalla lenta memoria globale, ancora e ancora. 🐢

La memoria è il collo di bottiglia

Sulla GPU, i calcoli aritmetici sono economici, mentre accedere alla memoria globale è costoso. Molti kernel trascorrono molto più tempo in attesa della memoria che nell'esecuzione dei calcoli.

Definizione del riutilizzo dei dati

Il riutilizzo dei dati significa che un valore caricato dalla memoria globale viene usato da molti calcoli, invece di essere letto nuovamente ogni volta.

Uno stencil ingenuo

Immagini di sfocare un'immagine. Ogni pixel di output calcola la media dei propri vicini, quindi ogni pixel di input viene letto da diversi thread.

out[i] = (in[i-1] + in[i] + in[i+1]) / 3.0f;

Contare le letture

In questa sfocatura, il valore in[i] viene letto dai thread i-1, i e i+1. Lo stesso byte attraversa tre volte il lento bus alimentato tramite PCIe.

La ridondanza si accumula

Con una finestra più ampia o una griglia 2D, ogni elemento può essere riletto decine di volte. Questo traffico ridondante domina il tempo di esecuzione.

La larghezza di banda è limitata

La memoria globale ha una larghezza di banda massima fissa. Leggere ripetutamente gli stessi dati spreca questa risorsa trasferendo byte che erano già disponibili.

I calcoli restano inattivi

Mentre i warp si bloccano in attesa di caricamenti ripetuti dalla memoria globale, le unità di calcolo restano inattive. Ha pagato per core che sta usando appena. 😴

Intensità aritmetica

L'intensità aritmetica è il rapporto tra le operazioni matematiche e i byte trasferiti. Un'intensità bassa significa che il limite è imposto dalla memoria, non dai calcoli.

L'obiettivo: leggere una sola volta

La soluzione consiste nel caricare ogni valore necessario una sola volta in una memoria veloce on-chip, permettendo poi a molti thread di riutilizzarlo da lì.

Entra in gioco la shared memory

Questa memoria veloce on-chip è la shared memory. Precaricare i dati al suo interno è la base di tutte le ottimizzazioni basate sui tile che seguono.

Verifica rapida

Perché un kernel stencil ingenuo è spesso lento?

Riepilogo

I kernel ingenui rileggono i dati condivisi dalla memoria globale, sprecando larghezza di banda e bloccando i calcoli. Il tiling serve a caricare una volta e riutilizzare.

Domande Frequenti

La lezione «Il problema del riutilizzo dei dati» è gratuita?

Sì — il testo completo di «Il problema del riutilizzo dei dati» è 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 «Il problema del riutilizzo dei dati»?

Scopra perché i kernel ingenui rileggono la memoria globale. 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 1 di 4.

Quanto tempo richiede la lezione «Il problema del riutilizzo dei dati»?

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. Il problema del riutilizzo dei dati
  2. Il modello Load-Sync-Compute
  3. Stencil e finestre scorrevoli
  4. Gestire i tile ai bordi
← Torna a CUDA Academy