Accesso peer-to-peer alla memoria
Copie dirette da GPU a GPU tramite NVLink
Accesso peer-to-peer alla memoria è 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.
La deviazione lenta
Lo spostamento di dati da una GPU a un'altra passa solitamente prima dalla memoria della CPU. Questo viaggio di andata e ritorno è lento e spreca la larghezza di banda dell'host.
Le GPU comunicano direttamente
Le GPU moderne possono evitare completamente la CPU. L'accesso peer-to-peer consente a una GPU di leggere e scrivere nella memoria di un'altra tramite un collegamento diretto.
L'autostrada NVLink
Il collegamento veloce tra le schede è spesso NVLink, molto più rapido del bus PCIe condiviso. Quando disponibile, i trasferimenti P2P utilizzano questa autostrada.
Verificare prima di fare affidamento
Non tutte le coppie di GPU supportano il P2P. Verifichi prima con cudaDeviceCanAccessPeer, che indica se un dispositivo può raggiungerne un altro.
int can;
cudaDeviceCanAccessPeer(&can, 0, 1);Abilitare l'accesso
L'autorizzazione è disabilitata per impostazione predefinita. Mentre la GPU 0 è corrente, chiami cudaDeviceEnablePeerAccess per consentirle di accedere alla memoria della GPU 1.
cudaSetDevice(0);
cudaDeviceEnablePeerAccess(1, 0);L'accesso è unidirezionale
L'abilitazione dell'accesso peer concede solo la direzione richiesta. Affinché la GPU 1 possa leggere dalla GPU 0, deve abilitare anche quella direzione, dal device 1.
Copiare da peer a peer
Per trasferire direttamente un buffer tra due schede, usi cudaMemcpyPeer. Indichi il puntatore e il dispositivo di destinazione, quindi il puntatore e il dispositivo di origine.
cudaMemcpyPeer(dst, 1, src, 0, bytes);Kernel che leggono tra GPU
Con l'accesso abilitato, un kernel sulla GPU 0 può dereferenziare un puntatore che risiede sulla GPU 1. L'hardware lo recupera in modo trasparente attraverso il collegamento peer.
Quando il P2P non è disponibile
Se due schede non possono comunicare in modalità peer, il runtime ricorre silenziosamente al passaggio attraverso la memoria host. La copia viene comunque eseguita, ma alla velocità inferiore del PCIe.
Copie peer asincrone
I trasferimenti peer possono sovrapporsi ad altro lavoro. Abbini cudaMemcpyPeerAsync a uno stream, così la copia viene eseguita mentre i kernel continuano a calcolare.
cudaMemcpyPeerAsync(dst, 1, src, 0, bytes, stream);Disabilitare al termine
L'accesso peer utilizza risorse, quindi lo rilasci al termine. cudaDeviceDisablePeerAccess smantella il collegamento aperto in precedenza.
cudaDeviceDisablePeerAccess(1);Controllo rapido
Ricordi il vantaggio dell'accesso peer-to-peer tra due GPU.
Riepilogo
Il P2P consente alle GPU di condividere direttamente la memoria, idealmente tramite NVLink. Verifichi il supporto, abiliti l'accesso per ogni direzione e usi quindi cudaMemcpyPeer. Prossimo argomento: scalare con NCCL. ✨
Domande Frequenti
La lezione «Accesso peer-to-peer alla memoria» è gratuita?
Sì — il testo completo di «Accesso peer-to-peer alla memoria» è 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 «Accesso peer-to-peer alla memoria»?
Copie dirette da GPU a GPU tramite NVLink 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 «Accesso peer-to-peer alla memoria»?
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
- Enumerare e selezionare i dispositivi
- Partizionare il lavoro tra le GPU
- Accesso peer-to-peer alla memoria
- Multi-GPU con NCCL