cudaGetLastError po uruchomieniu
Wykrywać nieprawidłowe konfiguracje uruchomienia.
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 countCzyś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. 🎉
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
- Kody zwrotne a błędy asynchroniczne
- cudaGetLastError po uruchomieniu
- Wielokrotnego użytku makro CUDA_CHECK
- Dekodowanie cudaGetErrorString