Pomiar efektywnej przepustowości
Porównywać osiągniętą przepustowość ze szczytową.
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. 🎉
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
- Czym jest transakcja pamięci
- Odczyty łączone a skokowe
- Structure of Arrays a Array of Structs
- Pomiar efektywnej przepustowości