CUDA Academy · Lekcja

cudaGetLastError po uruchomieniu

Wykrywać nieprawidłowe konfiguracje uruchomienia.

Lekcja 2 z 413 kroki

cudaGetLastError po uruchomieniu to bezpłatna lekcja CUDA Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CUDA Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CUDA Academy zawiera 4 lekcji w sumie.

Wykrywanie cichego uruchomienia

Ponieważ uruchomienie jądra niczego nie zwraca, potrzebujesz funkcji pomocniczej, która zapyta GPU, co właśnie się stało. Jest nią cudaGetLastError. 🔎

Co zwraca ta funkcja

cudaGetLastError zwraca ostatni kod błędu zarejestrowany przez środowisko uruchomieniowe albo cudaSuccess, jeśli do tej pory wszystko przebiegło poprawnie.

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

Wywołaj ją zaraz po uruchomieniu

Umieść sprawdzenie w następnym wierszu po uruchomieniu. Dzięki temu wykryjesz błędy konfiguracji, zanim inne wywołanie nadpisze stan.

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

Wykrywa błędy konfiguracji uruchomienia

Funkcja sprawdza etap konfiguracji: zbyt wiele wątków w bloku, zero bloków lub siatkę, której urządzenie po prostu nie może zaakceptować.

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

Czyści błąd

Odczyt błędu również go resetuje do cudaSuccess. Środowisko uruchomieniowe przechowuje tylko ostatni błąd, więc sprawdzenie go czyści stan.

Podejrzyj bez czyszczenia

Chcesz sprawdzić błąd bez resetowania? Użyj cudaPeekAtLastError. Funkcja zwraca ten sam kod, ale pozostawia stan błędu bez zmian.

cudaError_t e = cudaPeekAtLastError();

Nie wykrywa błędów wykonania

Samo to wywołanie sprawdza tylko uruchomienie, a nie wykonanie. Dostęp poza zakresem wewnątrz jądra nadal pozostanie niewykryty.

Połącz je z synchronizacją

Aby wykrywać błędy wykonania, wywołaj następnie cudaDeviceSynchronize. Sprawdzenie uruchomienia wraz z synchronizacją obejmuje oba etapy awarii.

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

Dlaczego warto wykonać oba sprawdzenia

Sprawdzenie uruchomienia informuje, że konfiguracja była poprawna, a synchronizacja potwierdza, że jądro zakończyło pracę bez awarii. Dzięki temu wiadomo, na którym etapie wystąpił problem.

Umieść sprawdzenie w makrze

Wpisywanie tego po każdym uruchomieniu szybko staje się uciążliwe. W większości projektów sprawdzenie uruchomienia umieszcza się w przejrzystym makrze, dzięki czemu wystarcza jeden krótki wiersz.

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

Niezastąpiona pomoc w debugowaniu

Gdy jądro w tajemniczy sposób niczego nie robi, szybkie wywołanie cudaGetLastError często ujawnia nieprawidłowe uruchomienie, którego inaczej nie dałoby się zauważyć.

Szybka kontrola

Sprawdź, czy rozumie Pan/Pani działanie cudaGetLastError.

Podsumowanie: sprawdź uruchomienie

Wywołaj cudaGetLastError zaraz po uruchomieniu, aby wykryć błędy konfiguracji, a następnie wykonaj synchronizację w celu wykrycia błędów wykonania. Dwa sprawdzenia ujawniają miejsce awarii. 🎉

Bezpłatny start

Ucz się C++ dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „cudaGetLastError po uruchomieniu” jest bezpłatna?

Tak — pełny tekst „cudaGetLastError po uruchomieniu” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CUDA Academy, przejdź na CoddyKit PRO. Kurs CUDA Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „cudaGetLastError po uruchomieniu”?

Wykrywać nieprawidłowe konfiguracje uruchomienia. Ćwiczysz CUDA Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć CUDA Academy?

Nie wymagamy żadnego doświadczenia. CUDA Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.

Ile czasu zajmuje lekcja „cudaGetLastError po uruchomieniu”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji CUDA Academy?

Tak. Każda lekcja CUDA Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Kody zwrotne a błędy asynchroniczne
  2. cudaGetLastError po uruchomieniu
  3. Wielokrotnego użytku makro CUDA_CHECK
  4. Dekodowanie cudaGetErrorString
← Powrót do CUDA Academy