CUDA Academy · Lekcja

Dlaczego istnieją bloki

Niezależność, harmonogramowanie i skalowalność.

Lekcja 3 z 413 kroki

Dlaczego istnieją bloki 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.

Dlaczego nie tylko wątki?

Być może zastanawiasz się, dlaczego CUDA w ogóle grupuje wątki w bloki. Odpowiedź wiąże się z planowaniem i skalowaniem. 🤔

Bloki są jednostką planowania

GPU przydziela całe bloki swoim multiprocesorom strumieniowym. Blok to fragment pracy planowany przez sprzęt jako jedna całość.

Niezależność z założenia

Bloki muszą działać niezależnie, w dowolnej kolejności i bez gwarantowanej komunikacji. Ta zasada sprawia, że kernel można przenosić między różnymi GPU.

Skalowanie bez dodatkowego wysiłku

Małe GPU uruchamia jednocześnie kilka bloków, a duże — wiele. Niezależność pozwala temu samemu kodowi skalować się bez zmiany choćby jednej linii.

Współpraca wewnątrz bloku

Wątki w tym samym bloku współdzielą szybką pamięć układową i mogą się synchronizować. Taka ścisła współpraca jest możliwa tylko dlatego, że pozostają razem.

Granica synchronizacji

Bariera taka jak __syncthreads działa tylko wewnątrz bloku. W trakcie działania kernela nie ma wbudowanego sposobu na synchronizację całej siatki.

__syncthreads();

Dlaczego nie ma globalnej synchronizacji?

Gdyby bloki mogły czekać na siebie nawzajem, GPU mogłoby się zakleszczyć, jeśli nie byłoby w stanie zmieścić ich jednocześnie. Zachowanie niezależności bloków temu zapobiega.

Bloki ukrywają opóźnienia

Gdy jeden blok czeka na dane z pamięci, planista przełącza się na inny gotowy blok. Duża liczba bloków pozwala utrzymać rdzenie w ciągłej pracy.

Zasoby są przydzielane na blok

Rejestry i pamięć współdzielona są przydzielane na blok. Mniejsze bloki pozwalają umieścić ich więcej jednocześnie na jednym multiprocesorze.

Duża liczba bloków to zaleta

Dobre uruchomienie wykorzystuje znacznie więcej bloków, niż GPU ma multiprocesorów. Dodatkowe bloki dają planiście możliwość równoważenia pracy.

Najważniejszy kompromis

Bloki poświęcają więc globalną współpracę na rzecz ogromnej skalowalności. Rezygnujesz z synchronizacji między blokami, ale zyskujesz kod działający na dowolnym GPU.

Szybkie sprawdzenie

Zastanów się, co daje Ci niezależność bloków.

Podsumowanie: cel bloków

Wiesz już, dlaczego istnieją bloki: są jednostką, którą można planować niezależnie, zapewniają skalowalność, a wątki wewnątrz nich mogą ściśle współpracować. 🚀

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 „Dlaczego istnieją bloki” jest bezpłatna?

Tak — pełny tekst „Dlaczego istnieją bloki” 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 „Dlaczego istnieją bloki”?

Niezależność, harmonogramowanie i skalowalność. Ć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 „Dlaczego istnieją bloki”?

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. Hierarchia wątków
  2. threadIdx, blockIdx, blockDim
  3. Dlaczego istnieją bloki
  4. Dobór liczby wątków w bloku
← Powrót do CUDA Academy