CUDA Academy · Lektion

cudaGetLastError nach dem Start

Erkennen Sie ungültige Startkonfigurationen.

Lektion 2 von 413 Schritte

cudaGetLastError nach dem Start ist eine kostenlose CUDA Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des CUDA Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.

Den stillen Start abfangen

Da ein Kernel-Start nichts zurückgibt, benötigen Sie eine Hilfsfunktion, um die GPU nach dem gerade Geschehenen zu fragen. Diese Hilfsfunktion ist cudaGetLastError. 🔎

Was zurückgegeben wird

cudaGetLastError gibt den zuletzt von der Runtime aufgezeichneten Fehlercode zurück oder cudaSuccess, wenn bisher alles in Ordnung ist.

myKernel<<<g, b>>>(d);
cudaError_t e = cudaGetLastError();

Direkt nach dem Start aufrufen

Platzieren Sie die Prüfung direkt in der nächsten Zeile nach dem Start. So werden Konfigurationsfehler erfasst, bevor ein anderer Aufruf den Zustand überschreibt.

kernel<<<g, b>>>();
if (cudaGetLastError() != cudaSuccess) abort();

Erkennt Fehler in der Startkonfiguration

Damit wird die Phase der Konfiguration geprüft: zu viele Threads pro Block, null Blöcke oder ein Grid, das das Gerät schlicht nicht akzeptieren kann.

kernel<<<g, 99999>>>(); // invalid thread count

Setzt den Fehler zurück

Das Auslesen des Fehlers setzt ihn außerdem auf cudaSuccess zurück. Die Runtime speichert nur den letzten Fehler, daher leert die Prüfung den Fehlerzustand.

Ansehen, ohne zurückzusetzen

Möchten Sie den Fehler ansehen, ohne ihn zurückzusetzen? Verwenden Sie cudaPeekAtLastError. Der Aufruf gibt denselben Code zurück, lässt den Fehlerzustand aber unverändert.

cudaError_t e = cudaPeekAtLastError();

Erkennt keine Laufzeitfehler

Für sich allein erkennt dies nur den Start, nicht die Ausführung. Ein Zugriff außerhalb der Grenzen im Kernel wird dadurch weiterhin nicht erkannt.

Mit einer Synchronisierung kombinieren

Um Laufzeitfehler zu erkennen, rufen Sie anschließend cudaDeviceSynchronize auf. Die Startprüfung plus eine Synchronisierung deckt beide Fehlerphasen ab.

kernel<<<g, b>>>();
cudaGetLastError();
cudaDeviceSynchronize();

Warum zwei Prüfungen helfen

Die Startprüfung zeigt, dass die Konfiguration gültig war; die Synchronisierung zeigt, dass der Kernel tatsächlich ohne Absturz beendet wurde. So erkennen Sie, in welcher Phase der Fehler auftrat.

In ein Makro verpacken

Diese Prüfung nach jedem Start einzutippen, wird schnell lästig. Die meisten Projekte verpacken sie in ein übersichtliches Makro, sodass eine kurze Zeile genügt.

kernel<<<g, b>>>();
CHECK_LAUNCH();

Eine Rettung beim Debuggen

Wenn ein Kernel scheinbar nichts tut, zeigt ein schnelles cudaGetLastError oft einen ungültigen Start an, den Sie sonst nie entdeckt hätten.

Schnelltest

Testen Sie Ihr Verständnis von cudaGetLastError.

Zusammenfassung: Den Start prüfen

Rufen Sie cudaGetLastError direkt nach einem Start auf, um Konfigurationsfehler zu erkennen, und synchronisieren Sie anschließend, um Laufzeitfehler zu erfassen. Zwei Prüfungen zeigen, wo etwas schiefgelaufen ist. 🎉

Kostenlos starten

Lerne C++ mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
30
Lektionen
120

Häufig gestellte Fragen

Ist die Lektion „cudaGetLastError nach dem Start“ kostenlos?

Ja — der vollständige Text von „cudaGetLastError nach dem Start“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des CUDA Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der CUDA Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „cudaGetLastError nach dem Start“?

Erkennen Sie ungültige Startkonfigurationen. Du übst CUDA Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um CUDA Academy zu starten?

Keine Vorkenntnisse erforderlich. CUDA Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „cudaGetLastError nach dem Start“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser CUDA Academy-Lektion Code schreiben und ausführen?

Ja. Jede CUDA Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Rückgabecodes vs. asynchrone Fehler
  2. cudaGetLastError nach dem Start
  3. Ein wiederverwendbares CUDA_CHECK-Makro
  4. cudaGetErrorString entschlüsseln
← Zurück zu CUDA Academy