Profiluj, optymalizuj, wdrażaj
Domknięcie pętli za pomocą metryk Nsight
Profiluj, optymalizuj, wdrażaj 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.
Mierz, nie zgaduj
Optymalizacja zaczyna się od danych, a nie od przeczuć. Zawsze najpierw wykonaj profilowanie, aby dowiedzieć się, gdzie rzeczywiście znika czas, zanim zmienisz choć jedną linię. 🔍
Zacznij od osi czasu
Otwórz Nsight Systems, aby zobaczyć całe wykonanie: kernele, kopie i przerwy. Oś czasu pokazuje, czy transfery i obliczenia rzeczywiście się nakładają.
Znajdź najbardziej obciążający kernel
Zwykle dominuje jeden etap. Oś czasu ujawnia kernel o najdłuższym czasie wykonania i właśnie od niego należy rozpocząć dostrajanie.
Przyjrzyj się bliżej za pomocą Nsight Compute
W przypadku najbardziej obciążającego kernela przełącz się na Nsight Compute. Narzędzie podaje metryki dla poszczególnych kerneli, takie jak przepustowość pamięci, przestoje i osiągnięte obłożenie.
Odczytaj wykres Roofline
Wykres Roofline informuje, czy kernel jest ograniczony przez pamięć, czy przez obliczenia. Ta jedna odpowiedź decyduje, które optymalizacje w ogóle warto wypróbować.
Napraw kernele ograniczone przez pamięć
Jeśli ograniczeniem jest pamięć, należy skupić się na koalescencji, kafelkowaniu w pamięci współdzielonej i wektorowych odczytach. Szybsze dostarczanie danych to jedyna droga do dalszego przyspieszenia.
Napraw kernele ograniczone przez obliczenia
Jeśli ograniczeniem są obliczenia, należy zwiększyć ILP przez rozwijanie pętli, usunąć zbędne działania matematyczne albo przejść na niższą precyzję. W tym przypadku ograniczeniem są jednostki arytmetyczne.
Oznacz kod za pomocą NVTX
Otocz etapy potoku zakresami NVTX, aby na osi czasu pojawiały się nazwane paski zamiast anonimowych kerneli. Czytelne profile szybciej się analizuje.
nvtxRangePush("blur");
blurKernel<<<grid, block>>>(d_in, d_out);
nvtxRangePop();Zmieniaj jedną rzecz naraz
Zastosuj jedną optymalizację, a następnie ponownie wykonaj profilowanie. Ta ścisła pętla potwierdza, że każda zmiana przyniosła korzyść, i zapobiega jednoczesnemu analizowaniu dwóch efektów.
Wiedz, kiedy zakończyć
Gdy kernel zbliża się do limitu wyznaczonego przez wykres Roofline, dalsze dostrajanie daje niewiele. Należy rozpoznać malejące korzyści i przeznaczyć czas na usunięcie kolejnego wąskiego gardła.
Zweryfikuj, a potem wdrażaj
Przed wydaniem należy potwierdzić poprawność względem implementacji referencyjnej i sprawdzić, czy przyspieszenie jest stabilne. Szybki, ale błędny potok nie nadaje się do wdrożenia. 🚢
Szybki test
Nsight Compute informuje, że najbardziej obciążający kernel jest ograniczony przez pamięć. Którą poprawkę należy wypróbować najpierw?
Podsumowanie
Nauczył(a) się Pan/Pani profilować za pomocą Nsight, odczytywać wykres Roofline w celu klasyfikowania kerneli, stosować ukierunkowane poprawki pojedynczo oraz weryfikować wynik przed wdrożeniem szybkiego i poprawnego potoku. 🏁
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 „Profiluj, optymalizuj, wdrażaj” jest bezpłatna?
Tak — pełny tekst „Profiluj, optymalizuj, wdrażaj” 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 „Profiluj, optymalizuj, wdrażaj”?
Domknięcie pętli za pomocą metryk Nsight Ć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 „Profiluj, optymalizuj, wdrażaj”?
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
- Projektowanie potoku przetwarzania
- Łączenie filtrów w jeden kernel
- Strumieniowe przetwarzanie kafelków dużych obrazów
- Profiluj, optymalizuj, wdrażaj