0Pricing
CUDA Academy · Lezione

Prefetching con cudaMemPrefetchAsync

Sposti le pagine prima che siano necessarie.

Prefetching con cudaMemPrefetchAsync è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 3 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.

Smettere di pagare il costo dei fault

Invece di attendere i lenti fault al primo accesso, può spostare le pagine in anticipo. cudaMemPrefetchAsync invia i dati gestiti a un dispositivo prima che il kernel ne abbia bisogno.

La chiamata di base

Indichi il puntatore, il numero di byte e il dispositivo di destinazione. Questo prefetch trasferisce in anticipo l'intero intervallo con un'unica operazione efficiente.

cudaMemPrefetchAsync(data, n * sizeof(float), 0);

Scelga la destinazione

Il terzo argomento è l'identificatore del device. Passi il numero di una GPU per predisporre i dati su quella GPU, pronti per il kernel che sta per avviare.

int dev = 0;
cudaMemPrefetchAsync(data, bytes, dev);

Esegua il prefetch verso la CPU

Usi l'identificatore speciale cudaCpuDeviceId per riportare i risultati sull'host. Lo faccia prima che il codice della CPU li legga, così eviterà una raffica di page fault.

cudaMemPrefetchAsync(data, bytes, cudaCpuDeviceId);

È asincrono

L'Async nel nome è reale: la chiamata restituisce immediatamente e viene eseguita in uno stream. La CPU continua a lavorare mentre le pagine vengono trasferite in background.

Si sovrappone al calcolo

Poiché utilizza uno stream, un prefetch può sovrapporsi ad altri kernel. Predisponga il blocco successivo mentre quello corrente è ancora in elaborazione.

cudaMemPrefetchAsync(next, bytes, dev, stream);

Un'unica operazione è meglio di molti fault

Un singolo prefetch in blocco è molto meno costoso di migliaia di fault di piccole dimensioni. Sostituisce l'overhead frammentato con un unico trasferimento contiguo ad alta larghezza di banda.

Esegua il prefetch dell'intervallo corretto

Predisponga solo ciò a cui il kernel accede davvero. Eseguire il prefetch di un buffer enorme che il kernel legge appena spreca larghezza di banda e memoria della GPU.

Uno schema a due direzioni

Si delinea un ritmo semplice: prefetch verso la GPU, avvio del kernel, prefetch dei risultati all'indietro. In questo modo la migrazione resta fuori dal percorso critico a entrambe le estremità.

Misuri, non faccia supposizioni

Aggiunga un prefetch, poi controlli Nsight per verificare la riduzione dei fault e una timeline più compatta. Lasci che il profiling confermi il miglioramento, invece di affidarsi all'intuizione.

Comodità e controllo

Il prefetch conserva la semplicità del singolo puntatore della memoria gestita, restituendo al contempo il controllo sulla tempistica. Ottiene il meglio di entrambi gli approcci.

Verifica rapida

Verifichiamo quali vantaggi offre il prefetch.

Riepilogo: prefetch

Ha imparato a predisporre in anticipo le pagine con cudaMemPrefetchAsync, scegliendo una GPU o cudaCpuDeviceId. L'operazione si sovrappone alle attività negli stream ed è più efficiente dei fault. Ottimo lavoro! ✨

Domande Frequenti

La lezione «Prefetching con cudaMemPrefetchAsync» è gratuita?

Sì — il testo completo di «Prefetching con cudaMemPrefetchAsync» è 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 «Prefetching con cudaMemPrefetchAsync»?

Sposti le pagine prima che siano necessarie. 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 3 di 4.

Quanto tempo richiede la lezione «Prefetching con cudaMemPrefetchAsync»?

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. Un puntatore, entrambi i lati
  2. Migrazione delle pagine su richiesta
  3. Prefetching con cudaMemPrefetchAsync
  4. Suggerimenti tramite cudaMemAdvise
← Torna a CUDA Academy