Oppregning og valg av enheter
cudaSetDevice og kontekster per GPU
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. ✨
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
- Oppregning og valg av enheter
- Fordeling av arbeid på tvers av GPU-er
- Peer-to-peer-minnetilgang
- Multi-GPU med NCCL