CUDA Academy · Lekcja

Ponowne odtwarzanie grafów w celu ograniczenia narzutu

Rozłożenie kosztu uruchamiania na kolejne iteracje

Lekcja 4 z 413 kroki

Ponowne odtwarzanie grafów w celu ograniczenia narzutu 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.

Sedno sprawy: odtwarzanie

Graphy służą do tego, aby je odtwarzać. Jedno wywołanie uruchomienia przesyła całą zarejestrowaną sekwencję do GPU jednocześnie.

Uruchom obiekt exec

Odtwarzanie odbywa się za pomocą cudaGraphLaunch, któremu przekazuje się utworzony obiekt exec i strumień. To całe przesłanie pracy.

cudaGraphLaunch(exec, stream);

Jedno wywołanie, wiele kerneli

Zamiast dziesięciu uruchomień na krok ponosi się koszt uruchomienia po stronie CPU tylko raz dla całego grapha.

Wykonuj w pętli i powtarzaj

W solverze iteracyjnym wywołuje się uruchomienie w każdym kroku. Oszczędności amortyzują się w tysiącach identycznych iteracji.

for (int i = 0; i < steps; i++)
    cudaGraphLaunch(exec, stream);

Koszt tworzenia instancji ponosi się raz

Drogi etap instantiate odbywa się przed pętlą, więc każde odtworzenie w pętli pozostaje tanie.

Aktualizowanie bez ponownego budowania

Jeśli zmieniają się tylko parametry, należy użyć cudaGraphExecUpdate, aby zmodyfikować obiekt exec zamiast budować go od początku.

cudaGraphExecUpdate(exec, newGraph, NULL, &res);

Gdzie widać przyspieszenie

Korzyść jest największa w przypadku krótkich kerneli: gdy praca GPU trwa krótko, dominuje narzut uruchamiania, a graphy go eliminują.

Mniej zakłóceń, większe nakładanie pracy

Przesyłanie pracy partiami zmniejsza również zakłócenia po stronie CPU, dzięki czemu GPU pozostaje zajęte, a na osi czasu pojawia się mniej przerw.

Pamiętaj o kompromisach

Graphy zakładają stabilną strukturę. Jeśli wzorzec pracy zmienia się w każdym kroku, koszt ponownego budowania może przewyższyć oszczędności.

Zwolnij zasoby

Po zakończeniu należy zwolnić oba obiekty za pomocą cudaGraphExecDestroy i cudaGraphDestroy, aby uniknąć wycieków.

cudaGraphExecDestroy(exec);
cudaGraphDestroy(graph);

Przechwyć, utwórz instancję, odtwarzaj

Pełny cykl życia obejmuje trzy etapy: przechwycenie pracy, jednokrotne jej utworzenie instancji, a następnie wielokrotne odtwarzanie.

Szybkie sprawdzenie

Dlaczego graphy zmniejszają narzut uruchamiania?

Podsumowanie: odtwarzanie graphów

Do uruchomienia całej sekwencji jednym wywołaniem należy użyć cudaGraphLaunch, amortyzując koszt konfiguracji w kolejnych iteracjach. Obiekt można aktualizować bezpośrednio, a po zakończeniu należy go zwolnić. Dobra robota! 🏁

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 „Ponowne odtwarzanie grafów w celu ograniczenia narzutu” jest bezpłatna?

Tak — pełny tekst „Ponowne odtwarzanie grafów w celu ograniczenia narzutu” 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 „Ponowne odtwarzanie grafów w celu ograniczenia narzutu”?

Rozłożenie kosztu uruchamiania na kolejne iteracje Ć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 „Ponowne odtwarzanie grafów w celu ograniczenia narzutu”?

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. Uruchamianie kernelów z poziomu kernela
  2. Kiedy opłaca się dynamic parallelism
  3. Przechwytywanie pracy do grafu
  4. Ponowne odtwarzanie grafów w celu ograniczenia narzutu
← Powrót do CUDA Academy