Returncodes versus asynchrone fouten
Waarom kernels standaard stilletjes mislukken.
Returncodes versus asynchrone fouten 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.
Twee manieren waarop CUDA faalt
CUDA meldt problemen op twee manieren: een directe retourcode van API-aanroepen en vertraagde asynchrone fouten van kernels. Beide kennen is essentieel. 🧭
API-aanroepen geven een code terug
De meeste CUDA-runtimeaanroepen geven een cudaError_t terug. De waarde cudaSuccess betekent dat alles goed is; elke andere waarde wijst op een probleem waarop je kunt reageren.
cudaError_t err = cudaMalloc(&d, n);Controleer die meteen
Bij synchrone aanroepen zoals cudaMalloc is de teruggegeven code definitief. Vergelijk die onmiddellijk met cudaSuccess en reageer voordat je verdergaat.
if (err != cudaSuccess) return 1;Kernels geven niets terug
Een kernelstart met triple brackets heeft geen retourwaarde die je kunt controleren. Startfouten kunnen dus niet op dezelfde eenvoudige manier worden gemeld.
myKernel<<<g, b>>>(d); // no code to checkWaarom kernels asynchroon zijn
Starts zijn asynchroon: de CPU zet het werk in de wachtrij en gaat meteen verder. De GPU is mogelijk nog niet eens begonnen wanneer je volgende regel wordt uitgevoerd.
Fouten komen later
Omdat het werk later wordt uitgevoerd, wordt een crash van een kernel een asynchrone fout. Die verschijnt bij een latere aanroep, niet op de regel van de start zelf.
Standaard stil
Als je nooit controleert, faalt een kapotte kernel stil. Je programma lijkt te werken, terwijl het onzin of nullen als uitvoer produceert.
Twee soorten startfouten
Starts kunnen op twee momenten falen: een slechte configuratie die bij de start wordt ontdekt, en een runtimefout zoals een toegang buiten de grenzen die tijdens de uitvoering wordt ontdekt.
Blijvende fouten
Een ernstige fout laat de context achter in een blijvende fouttoestand. Elke latere CUDA-aanroep geeft dan dezelfde fout terug totdat je opnieuw start.
Synchroniseer om asynchrone fouten af te dwingen
Roep cudaDeviceSynchronize aan om een verborgen fout zichtbaar te maken. De aanroep wacht op de kernel en geeft elke runtimefout terug die deze tegenkwam.
cudaError_t e = cudaDeviceSynchronize();Een betrouwbare gewoonte
Vuistregel: controleer de retourcode van elke API-aanroep en synchroniseer om kernels te controleren. Samen laten ze geen fout onopgemerkt.
Snelle controle
Test of je begrijpt hoe kernels fouten melden.
Samenvatting: twee foutpaden
API-aanroepen geven direct een retourcode, terwijl kernels asynchroon falen. Controleer codes en synchroniseer, zodat niets onopgemerkt blijft. 🎉
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 “Returncodes versus asynchrone fouten” gratis?
Ja — de volledige tekst van “Returncodes versus asynchrone fouten” 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 “Returncodes versus asynchrone fouten”?
Waarom kernels standaard stilletjes mislukken. 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 “Returncodes versus asynchrone fouten”?
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
- Returncodes versus asynchrone fouten
- cudaGetLastError na het starten
- Een herbruikbare CUDA_CHECK-macro
- cudaGetErrorString decoderen