Peer-to-peer-minnetilgang
Direkte kopiering mellom GPU-er over NVLink
Peer-to-peer-minnetilgang er en gratis leksjon i CUDA Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i CUDA Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i CUDA Academy inneholder totalt 4 leksjoner.
Den langsomme omveien
Når data flyttes fra én GPU til en annen, går de vanligvis først via CPU-ens minne. Denne turen frem og tilbake er langsom og sløser med vertens båndbredde.
GPU-er kommuniserer direkte
Moderne GPU-er kan hoppe over CPU-en helt. Peer-to-peer-tilgang lar én GPU lese og skrive til minnet på en annen GPU via en direkte forbindelse.
NVLink-motorveien
Den raske forbindelsen mellom kortene er ofte NVLink, som er langt raskere enn den delte PCIe-bussen. P2P-overføringer bruker denne motorveien når den er tilgjengelig.
Kontroller før De stoler på det
Ikke alle GPU-par støtter P2P. Spør først med cudaDeviceCanAccessPeer, som rapporterer om én enhet kan nå en annen.
int can;
cudaDeviceCanAccessPeer(&can, 0, 1);Slå på tilgang
Tilgang er deaktivert som standard. Når GPU 0 er aktuell, kaller De cudaDeviceEnablePeerAccess for å la den få tilgang til minnet på GPU 1.
cudaSetDevice(0);
cudaDeviceEnablePeerAccess(1, 0);Tilgang går én vei
Aktivering av peer-tilgang gir bare den retningen De ber om. For at GPU 1 skal kunne lese GPU 0, må De også aktivere denne retningen fra enhet 1.
Kopier fra peer til peer
For å flytte en buffer direkte mellom kort bruker De cudaMemcpyPeer. De angir målpeker og målenhet samt kildepeker og kildeenhet.
cudaMemcpyPeer(dst, 1, src, 0, bytes);Kerneler leser på tvers
Når tilgangen er aktivert, kan en kernel på GPU 0 avreferere en peker som ligger på GPU 1. Maskinvaren henter den transparent over peer-forbindelsen.
Når P2P ikke er tilgjengelig
Hvis to kort ikke kan kommunisere som peer, faller kjøretidsmiljøet stille tilbake til mellomlagring via vertens minne. De får fortsatt en kopiering, men med den langsommere PCIe-hastigheten.
Asynkrone peer-kopieringer
Peer-overføringer kan overlappe annet arbeid. Kombiner cudaMemcpyPeerAsync med en strøm, slik at kopieringen kjører mens kerneler fortsetter å beregne.
cudaMemcpyPeerAsync(dst, 1, src, 0, bytes, stream);Slå det av når De er ferdig
Peer-tilgang bruker ressurser, så frigjør den når De er ferdig. cudaDeviceDisablePeerAccess river ned forbindelsen De åpnet tidligere.
cudaDeviceDisablePeerAccess(1);Rask kontroll
Husk fordelen med peer-to-peer-tilgang mellom to GPU-er.
Oppsummering
P2P lar GPU-er dele minne direkte, helst via NVLink. Kontroller støtte, aktiver tilgang i hver retning, og bruk deretter cudaMemcpyPeer. Neste trinn er skalering med NCCL. ✨
Lær deg C++ med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Peer-to-peer-minnetilgang» gratis?
Ja – hele teksten i «Peer-to-peer-minnetilgang» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av CUDA Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i CUDA Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Peer-to-peer-minnetilgang»?
Direkte kopiering mellom GPU-er over NVLink Du øver på CUDA Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med CUDA Academy?
Ingen tidligere erfaring er nødvendig. CUDA Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Peer-to-peer-minnetilgang»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne CUDA Academy-leksjonen?
Ja. Alle CUDA Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Oppregning og valg av enheter
- Fordeling av arbeid på tvers av GPU-er
- Peer-to-peer-minnetilgang
- Multi-GPU med NCCL