CUDA Academy · Les

Apparaten inventariseren en selecteren

cudaSetDevice en contexten per GPU

Les 1 van 413 stappen

Apparaten inventariseren en selecteren is een gratis CUDA Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject CUDA Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus CUDA Academy bevat in totaal 4 lessen.

Meer dan één GPU

Op één machine kunnen meerdere GPU's aanwezig zijn. Om ze allemaal te gebruiken, moet uw programma eerst vaststellen hoeveel apparaten aanwezig zijn voordat het werk verstuurt.

De apparaten tellen

Met één aanroep ziet u hoeveel GPU's de runtime kan zien. cudaGetDeviceCount schrijft dat aantal naar een int die u meegeeft.

int count;
cudaGetDeviceCount(&count);

Apparaten zijn genummerd

Elke GPU krijgt een geheel getal als id, van 0 tot en met het aantal min één. Met die device-id verwijst u de runtime naar één specifieke kaart.

Het actieve apparaat kiezen

Met cudaSetDevice kiest u op welke GPU uw volgende aanroepen gericht zijn. Daarna gaan geheugenreserveringen en kernelstarts naar die kaart.

cudaSetDevice(1);

Er is een huidig apparaat

Op elk moment is precies één GPU het huidige apparaat voor de aanroepende thread. Elke cudaMalloc of kernelstart komt terecht op het apparaat dat op dat moment actief is.

Een apparaat bekijken

Voordat u een GPU vertrouwt, kunt u de specificaties ervan uitlezen. cudaGetDeviceProperties vult een struct met de naam, geheugengrootte en rekenmogelijkheden.

cudaDeviceProp prop;
cudaGetDeviceProperties(&prop, 0);

De eigenschappen lezen

De eigenschappenstructuur bevat veel informatie. Velden zoals name en totalGlobalMem helpen u de beste kaart te kiezen of een kaart over te slaan die te klein is.

Elk apparaat beheert zijn eigen geheugen

Een pointer van cudaMalloc hoort bij de GPU die op dat moment actief was. Als u deze gebruikt terwijl een ander apparaat actief is, ontstaan er problemen.

Contexten per apparaat

Achter elke GPU bevindt zich een context met de geheugenreserveringen en streams ervan. Als u het huidige apparaat wisselt, schakelt u over naar de context van dat apparaat.

Alle GPU's doorlopen

Een veelgebruikt patroon is een lus die voor elke id cudaSetDevice aanroept en daarna de configuratie op die kaart uitvoert. Zo verdeelt u het werk over elk apparaat.

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

Herstel het apparaat voordat u verdergaat

Als een hulpfunctie het huidige apparaat wijzigt, schakelt u het na afloop terug. Als u het huidige apparaat gewijzigd achterlaat, kan de rest van uw code onverwacht gedrag vertonen.

Korte controle

Weet u nog welke aanroep de GPU kiest die uw volgende geheugenreserveringen en kernelstarts gebruiken?

Samenvatting

U telt GPU's, kiest er één met cudaSetDevice en bekijkt deze met de eigenschappen. Elk apparaat heeft zijn eigen geheugen en context. Volgende onderwerp: werk over meerdere apparaten verdelen. ✨

Gratis beginnen

Leer C++ met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
30
Lessen
120

Veelgestelde vragen

Is de les “Apparaten inventariseren en selecteren” gratis?

Ja — de volledige tekst van “Apparaten inventariseren en selecteren” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus CUDA Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus CUDA Academy bevat in totaal 4 lessen.

Wat leer ik in “Apparaten inventariseren en selecteren”?

cudaSetDevice en contexten per GPU Je oefent met CUDA Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met CUDA Academy te beginnen?

Ervaring vooraf is niet nodig. CUDA Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Apparaten inventariseren en selecteren”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over CUDA Academy?

Ja. Elke les over CUDA Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Apparaten inventariseren en selecteren
  2. Werk verdelen over GPU's
  3. Peer-to-peer-geheugentoegang
  4. Multi-GPU met NCCL
← Terug naar CUDA Academy