CUDA Academy · Lekcja

Pomiar efektywnej przepustowości

Porównywać osiągniętą przepustowość ze szczytową.

Lekcja 4 z 413 kroki

Pomiar efektywnej przepustowości to bezpłatna lekcja CUDA Academy na CoddyKit. To lekcja 4 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.

Od teorii do liczb

Koalescencja pomaga, ale warto to udowodnić. Miarą, która pokazuje prawdę, jest efektywna przepustowość jądra wyrażona w gigabajtach na sekundę.

Co oznacza „efektywna”

Efektywna przepustowość to liczba bajtów faktycznie potrzebnych jądru podzielona przez czas wykonania. Odzwierciedla użyteczną pracę, a nie zmarnowane linie.

Prosty wzór

Dodaj liczbę odczytanych bajtów do liczby zapisanych bajtów, a następnie podziel wynik przez czas wykonania w sekundach. Ten iloraz to osiągnięta przepustowość.

double gbps = (bytesRead + bytesWritten) / seconds / 1e9;

Mierz czas za pomocą zdarzeń

Użyj zdarzeń CUDA przed jądrem i po nim. Mierzą one dokładnie pracę GPU, bez zakłóceń powodowanych przez procesorowe zegary.

cudaEventRecord(start);
myKernel<<<g, b>>>(...);
cudaEventRecord(stop);

Odczytaj czas wykonania

Po zsynchronizowaniu ze zdarzeniem końcowym poproś CUDA o różnicę czasu. Otrzymasz milisekundy, więc przed podstawieniem do wzoru podziel wynik przez tysiąc.

float ms;
cudaEventElapsedTime(&ms, start, stop);

Policz bajty

Dla C = A + B złożonego z n liczb typu float odczytujesz 2n wartości i zapisujesz n, czyli przenosisz 3n liczb typu float. Pomnóż to przez cztery, aby otrzymać liczbę przeniesionych bajtów.

size_t bytes = 3 * n * sizeof(float);

Znajdź wartość szczytową

Każdy procesor GPU podaje teoretyczną szczytową przepustowość pamięci. Twoja efektywna wartość ma sens tylko jako ułamek tego limitu.

Współczynnik wydajności

Podziel efektywną przepustowość przez szczytową, aby otrzymać wartość procentową. Jądra ograniczone przepustowością pamięci i korzystające z koalescencji często osiągają 70–90% wartości szczytowej; jądra ze skokami wypadają znacznie gorzej.

Najpierw rozgrzej GPU

Pierwsze uruchomienie ponosi jednorazowe koszty przygotowania. Uruchom jądro raz na rozgrzewkę, a następnie uśrednij kilka mierzonych uruchomień, aby uzyskać stabilną wartość.

Potwierdź wyniki za pomocą profilerów

Nsight Compute bezpośrednio raportuje przepustowość pamięci, więc możesz sprawdzić obliczenia. Wskazuje również zmarnowane bajty wynikające ze słabej koalescencji. 🔧

Wykorzystaj wynik do podjęcia decyzji

Niski współczynnik oznacza, że pamięć jest wąskim gardłem, więc warto zająć się koalescencją i układem danych. Wysoki współczynnik oznacza, że należy szukać źródła wydajności gdzie indziej.

Szybki test

Oblicz efektywną przepustowość.

Podsumowanie

Potrafisz już mierzyć efektywną przepustowość za pomocą zdarzeń, porównywać ją z wartością szczytową i używać tego współczynnika do określania, czy pamięć jest wąskim gardłem. 🎉

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 „Pomiar efektywnej przepustowości” jest bezpłatna?

Tak — pełny tekst „Pomiar efektywnej przepustowości” 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 „Pomiar efektywnej przepustowości”?

Porównywać osiągniętą przepustowość ze szczytową. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Pomiar efektywnej przepustowości”?

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. Czym jest transakcja pamięci
  2. Odczyty łączone a skokowe
  3. Structure of Arrays a Array of Structs
  4. Pomiar efektywnej przepustowości
← Powrót do CUDA Academy