CUDA Academy · leksjon

Peer-to-peer-minnetilgang

Direkte kopiering mellom GPU-er over NVLink

Leksjon 3 av 413 trinn

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. ✨

Gratis å komme i gang

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

  1. Oppregning og valg av enheter
  2. Fordeling av arbeid på tvers av GPU-er
  3. Peer-to-peer-minnetilgang
  4. Multi-GPU med NCCL
← Tilbake til CUDA Academy