0Pricing
CUDA Academy · Lezione

Puntatori alla memoria GPU

I puntatori device risiedono in variabili host.

Puntatori alla memoria GPU è 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.

Un puntatore che vive sulla CPU

cudaMalloc Le fornisce una normale variabile puntatore C++. Questa si trova nella memoria host, ma l'indirizzo che contiene punta alla memoria della GPU. 🔗

L'indirizzo indica il dispositivo

Un device pointer contiene un numero valido solo nello spazio degli indirizzi della GPU. Per la CPU è semplicemente un intero, non vera RAM.

float* d_data;  // host variable, device address

L'abitudine di usare d_ nei nomi

I programmatori antepongono d_ ai puntatori del dispositivo e h_ ai puntatori host. Il solo nome ricorda a quale lato appartiene ciascun puntatore.

float* h_data;
float* d_data;

Non lo dereferenzi sull'host

Scrivere *d_data nel codice CPU è una trappola. L'host non può accedere direttamente alla memoria della GPU, quindi il programma va in crash o legge dati senza senso.

I kernel lo dereferenziano liberamente

All'interno di un kernel lo stesso device pointer è perfettamente valido. Lì, d_data[i] legge e scrive la memoria reale della GPU come previsto.

__global__ void k(float* d) {
    d[0] = 1.0f;
}

Passarlo al kernel

Si passa il device pointer a un kernel come argomento. La GPU usa quindi quell'indirizzo per trovare i dati.

myKernel<<<grid, block>>>(d_data);

Due puntatori, due spazi

Tenga rigorosamente separati i puntatori host e device. Un host pointer non ha significato sulla GPU, mentre un device pointer non ha significato sulla CPU.

cudaMemcpy colma il divario

Per trasferire i dati tra i due lati, li copi. cudaMemcpy accetta entrambi i puntatori e sposta per Lei i byte da una parte all'altra.

L'aritmetica dei puntatori funziona comunque

Può spostare un device pointer sull'host, ad esempio con d_data + n, per puntare a una porzione. Tuttavia, non deve leggerne il contenuto da lì.

float* d_tail = d_data + 100;

Confonderli è insidioso

Il compilatore non Le impedirà di confonderli. Molti bug CUDA consistono semplicemente nel passare un host pointer dove serviva un device pointer.

La disciplina è meglio del debugging

Nomi chiari e una convenzione fissa fanno risparmiare ore. Definisca presto lo schema d_ e h_ e non lo modifichi mai. 🧹

Verifica rapida

Verifichiamo dove è possibile dereferenziare in sicurezza un device pointer.

Riepilogo

Ha imparato che un device pointer risiede in una variabile host ma indirizza la memoria della GPU: è utilizzabile nei kernel, ma non è accessibile direttamente dall'host. 🎉

Domande Frequenti

La lezione «Puntatori alla memoria GPU» è gratuita?

Sì — il testo completo di «Puntatori alla memoria GPU» è 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 «Puntatori alla memoria GPU»?

I puntatori device risiedono in variabili host. 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 «Puntatori alla memoria GPU»?

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. cudaMalloc e cudaFree
  2. Puntatori alla memoria GPU
  3. Inizializzare con cudaMemset
  4. Evitare perdite e doppi free
← Torna a CUDA Academy