__device__- en __host__-functies
Waar elk type functie mag worden uitgevoerd.
__device__- en __host__-functies is een gratis CUDA Academy-les op CoddyKit. Dit is les 2 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.
Verder dan de kernel
Kernels zijn toegangspunten, maar de meeste code staat in hulpfuncties. CUDA biedt nog twee kwalificaties om aan te geven waar een gewone functie mag draaien. Laten we daarmee kennismaken.
De kwalificatie __device__
Een functie met __device__ draait op de GPU en kan alleen vanuit andere GPU-code worden aangeroepen, zoals een kernel of een andere apparaatfunctie.
__device__ int square(int x) {
return x * x;
}Hulpfuncties voor kernels
Zie functies met __device__ als je GPU-gereedschapskist. Ze houden kernels overzichtelijk door logica te bevatten die de threads op het apparaat hergebruiken.
De kwalificatie __host__
De kwalificatie __host__ betekent gewone CPU-code. Dit is de standaard, dus gewone C++-functies zijn al hostfuncties.
__host__ void setup() {
// runs on the CPU
}Standaard is host
Laat je alle kwalificaties weg, dan is je functie standaard alleen voor de host. Daarom wordt normale C++ nog steeds gecompileerd binnen een .cu-bestand.
Beide tegelijk
Combineer de twee en een functie wordt voor beide kanten gecompileerd. nvcc bouwt één versie voor de CPU en één voor de GPU.
__host__ __device__ int dbl(int x) {
return x + x;
}Waarom voor beide compileren?
Als je een hulpfunctie markeert met __host__ __device__, kan dezelfde wiskunde in referentiecode voor de CPU en binnen kernels worden uitgevoerd, zonder dubbele code. ✨
Aanroepregels
Hostcode mag geen functie met __device__ aanroepen, en apparaatcode mag geen functie aanroepen die alleen voor de host bedoeld is. De compiler dwingt deze grens af.
Geen __global__ vanaf het apparaat
Een functie met __device__ kan niet worden gestart. Alleen __global__-kernels accepteren de start met drie punthaken vanuit de host.
Inline voor snelheid
De compiler voegt kleine functies met __device__ vaak inline in, waardoor het verpakken van logica in hulpfuncties tijdens het uitvoeren meestal niets kost.
Kies de juiste markering
Kies op basis van waar de code draait: __device__ voor GPU-hulpfuncties, __host__ voor CPU-code en beide wanneer de logica wordt gedeeld.
Snelle controle
Het is tijd om de kwalificaties voor het apparaat en de host te testen.
Samenvatting
Je hebt geleerd dat __device__ op de GPU draait, __host__ op de CPU draait, de standaard host is en dat je beide kunt combineren om één functie in beide werelden te delen. 🎯
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 “__device__- en __host__-functies” gratis?
Ja — de volledige tekst van “__device__- en __host__-functies” 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 “__device__- en __host__-functies”?
Waar elk type functie mag worden uitgevoerd. 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 2 van 4.
Hoe lang duurt de les “__device__- en __host__-functies”?
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
- De functiekwalificatie __global__
- __device__- en __host__-functies
- Gescheiden adresruimten
- De levenscyclus van een CUDA-programma