Weryfikowanie wyniku na CPU
Porównywać wynik z referencyjną odpowiedzią.
Weryfikowanie wyniku na CPU to bezpłatna lekcja CUDA Academy na CoddyKit. To lekcja 3 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.
Ufaj, ale sprawdzaj
Jądro, które działa bez awarii, nie musi być poprawne. Trzeba sprawdzić wyniki, ponieważ ciche błędy logiczne łatwo przeoczyć. 🔍
Oblicz wynik referencyjny
Najprostsza kontrola to zwykła pętla CPU wykonująca te same obliczenia. Otrzymany wynik referencyjny jest zaufanym punktem odniesienia.
for (int i = 0; i < n; i++)
ref[i] = h_A[i] + h_B[i];Porównuj element po elemencie
Przejdź po obu tablicach i porównaj każdy wynik GPU z wynikiem referencyjnym. Jedna pętla obejmująca wszystkie n elementów wykryje każdą nieprawidłową wartość.
for (int i = 0; i < n; i++)
if (h_C[i] != ref[i]) { /* mismatch */ }Liczby zmiennoprzecinkowe nie są dokładne
W przypadku liczb zmiennoprzecinkowych nigdy nie porównuj wartości zwykłą równością. Minimalne różnice zaokrągleń oznaczają, że należy użyć niewielkiej tolerancji.
if (fabs(h_C[i] - ref[i]) > 1e-5f) { /* fail */ }Dlaczego tolerancja, a nie równość
GPU i CPU mogą zaokrąglać wyniki w innej kolejności, dlatego mogą się one nieznacznie różnić. Niewielka wartość epsilon, na przykład 1e-5, pochłania ten nieistotny szum.
Policz błędy
Zamiast kończyć działanie przy pierwszej niezgodności, należy prowadzić licznik błędów. Liczba błędnych elementów może wskazać rodzaj występującego błędu.
int errors = 0;
if (fabs(h_C[i] - ref[i]) > 1e-5f) errors++;Wyświetl jasny werdykt
Na końcu wyświetl jeden jednoznaczny i zgodny z prawdą komunikat. Czytelny wiersz PASS lub FAIL oszczędza konieczności wpatrywania się w surowe tablice.
printf(errors == 0 ? "PASS\n" : "FAIL: %d\n", errors);Sprawdź wartości na brzegach
Błędy graniczne często dotyczą pierwszego i ostatniego elementu. Wyświetlenie C[0] oraz C[n-1] to szybka kontrola przed wykonaniem pełnej pętli.
Wskazówka dotycząca błędu o jeden
Jeśli nieprawidłowy jest dokładnie ostatni element, należy podejrzewać obliczenia zakresów. Błędna liczba bloków lub warunek ochronny często pomija ostatni wątek.
Sprawdź poprawność przed optymalizacją
Zawsze potwierdzaj poprawność przed dostrajaniem wydajności. Szybkie jądro zwracające błędne wyniki jest gorsze od wolnego, ale poprawnego.
Pozostaw kontrolę w kodzie
Podczas tworzenia programu pozostaw etap weryfikacji. Jest on testem regresji, który wykrywa błędy natychmiast po zmianie jądra.
Szybka kontrola
Jak należy porównywać zmiennoprzecinkowe wyniki GPU z wynikiem referencyjnym obliczonym na CPU?
Podsumowanie
Zweryfikował Pan/Pani wynik: wynik referencyjny z CPU, porównanie z tolerancją, licznik błędów oraz jednoznaczny komunikat PASS lub FAIL. Najważniejsza jest poprawność. Zawsze. ✅
Często zadawane pytania
Czy lekcja „Weryfikowanie wyniku na CPU” jest bezpłatna?
Tak — pełny tekst „Weryfikowanie wyniku na CPU” 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 „Weryfikowanie wyniku na CPU”?
Porównywać wynik z referencyjną odpowiedzią. Ć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 3 z 4.
Ile czasu zajmuje lekcja „Weryfikowanie wyniku na CPU”?
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
- Kernel dodawania wektorów
- Konfigurowanie części hosta
- Weryfikowanie wyniku na CPU
- Pomiar pierwszego przyspieszenia