CUDA Academy · leksjon

Oppregning og valg av enheter

cudaSetDevice og kontekster per GPU

Leksjon 1 av 413 trinn

Oppregning og valg av enheter er en gratis leksjon i CUDA Academy på CoddyKit. Dette er leksjon 1 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.

Mer enn én GPU

Én maskin kan ha flere GPU-er. For å bruke dem alle må programmet først finne ut hvor mange enheter som finnes, før det sender ut arbeid.

Tell enhetene

Ett kall forteller Dem hvor mange GPU-er kjøretidsmiljøet kan se. cudaGetDeviceCount skriver dette tallet til en int som De sender inn.

int count;
cudaGetDeviceCount(&count);

Enheter har nummer

Hver GPU får en heltalls-ID fra 0 til og med antallet minus én. Denne enhets-ID-en brukes til å angi ett bestemt kort for kjøretidsmiljøet.

Velg den aktive enheten

De velger hvilken GPU de neste kallene skal bruke, med cudaSetDevice. Deretter går allokeringer og oppstarter til dette kortet.

cudaSetDevice(1);

Det finnes en aktuell enhet

Til enhver tid er nøyaktig én GPU aktuell enhet for tråden som kaller. Alle cudaMalloc-kall og kernel-opps starter på enheten som er aktuell.

Undersøk en enhet

Før De stoler på en GPU, kan De lese spesifikasjonene. cudaGetDeviceProperties fyller en struct med navn, minnestørrelse og compute capability.

cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);

Les egenskapene

Egenskapsstrukturen inneholder mye informasjon. Felt som name og totalGlobalMem hjelper Dem med å velge det beste kortet eller hoppe over et som er for lite.

Hver enhet eier sitt eget minne

En peker fra cudaMalloc tilhører GPU-en som var aktuell da. Hvis De bruker den mens en annen enhet er aktuell, kan det oppstå feil.

Kontekster per enhet

Bak hver GPU finnes en kontekst som inneholder allokeringene og strømmene dens. Når De bytter aktuell enhet, bytter De til konteksten for denne enheten.

Gå gjennom alle GPU-ene

Et vanlig mønster er en løkke som kaller cudaSetDevice for hver ID og deretter utfører oppsett på kortet. Slik fordeler De arbeidet på alle enheter.

for (int d = 0; d < count; d++) {
  cudaSetDevice(d);
}

Gjenopprett før De avslutter

Hvis en hjelpefunksjon endrer den aktuelle enheten, bør De bytte tilbake når den er ferdig. Hvis den aktuelle enheten forblir endret, kan resten av koden bli påvirket uventet.

Rask kontroll

Husk hvilket kall som velger GPU-en som de neste allokeringene og oppstartene skal bruke.

Oppsummering

De teller GPU-er, velger én med cudaSetDevice og undersøker den med egenskaper. Hver enhet har sitt eget minne og sin egen kontekst. Neste trinn er å dele arbeidet mellom dem. ✨

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 «Oppregning og valg av enheter» gratis?

Ja – hele teksten i «Oppregning og valg av enheter» 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 «Oppregning og valg av enheter»?

cudaSetDevice og kontekster per GPU 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 1 av 4.

Hvor lang tid tar leksjonen «Oppregning og valg av enheter»?

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