0Pricing
CUDA Academy · Lekcja

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

  1. Kernel dodawania wektorów
  2. Konfigurowanie części hosta
  3. Weryfikowanie wyniku na CPU
  4. Pomiar pierwszego przyspieszenia
← Powrót do CUDA Academy