0Pricing
CUDA Academy · Lekcja

Pętle z krokiem siatki

Obsługiwać tablice większe niż siatka.

Pętle z krokiem siatki 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.

Gdy tablica jest ogromna

Czasami dane są znacznie większe niż liczba uruchamianych wątków. Jeden wątek na element przestaje wystarczać, więc każdy wątek musi obsługiwać kilka elementów.

Siatka ma swój rozmiar

Całkowita liczba wątków to rozmiar siatki: liczba bloków pomnożona przez liczbę wątków w bloku. Ten krok określa odległość między elementami obsługiwanymi przez poszczególne wątki.

int stride = blockDim.x * gridDim.x;

Początek, a potem krok

Każdy wątek zaczyna od swojego zwykłego globalnego indeksu, a następnie wielokrotnie przeskakuje do przodu o rozmiar siatki, aż wyjdzie poza tablicę.

Pętla grid-stride

Ta pętla stanowi cały schemat: zacznij od i, zwiększaj o stride i zatrzymaj się przy n. Zostanie obsłużony każdy rozmiar tablicy, niezależnie od liczby uruchomionych wątków.

for (int i = blockIdx.x * blockDim.x + threadIdx.x;
     i < n;
     i += stride) {
    out[i] = a[i] + b[i];
}

Wbudowane zabezpieczenie

Zwróć uwagę, że warunek pętli i < n sam jest sprawdzeniem zakresu. Wątki, które zaczynają za końcem tablicy, po prostu nigdy nie wchodzą do pętli.

Podział pracy

Przy kroku równym 4 wątkom wątek 0 obsługuje elementy 0, 4, 8, a wątek 1 — 1, 5, 9. Praca jest przeplatana, a nie dzielona na fragmenty.

Przeplatanie pomaga w koalescencji

Ponieważ sąsiednie wątki w każdym kroku nadal odwołują się do sąsiednich adresów, dostęp pozostaje koalescencyjny, a przepustowość pamięci utrzymuje się na wysokim poziomie.

Oddzielenie wątków od danych

Od tej pory rozmiar konfiguracji uruchomienia nie zależy już od n. Możesz wybrać liczbę wątków odpowiednią dla GPU, a pętla obsłuży dowolne obciążenie.

Dostosowanie do sprzętu

Typowy wybór to liczba bloków wystarczająca do zapełnienia każdego multiprocesora, a następnie wykonywanie pętli przez każdy wątek. Dzięki temu GPU pozostaje zajęty bez uruchamiania nadmiarowych wątków.

Działa także dla małych danych

Jeśli n jest mniejsze niż rozmiar siatki, każdy wątek wykona ciało pętli najwyżej raz. Ten schemat łagodnie przechodzi do prostego przypadku.

Solidny domyślny wybór

Wielu specjalistów od CUDA zapisuje każde jądro działające element po elemencie jako pętlę grid-stride. Jest elastyczna, bezpieczna i rzadko okazuje się niewłaściwym wyborem. 🚀

Szybkie sprawdzenie

Wskaż krok.

Podsumowanie

Nauczyłeś się korzystać z pętli grid-stride: rozpocząć od globalnego indeksu i zwiększać go o blockDim.x * gridDim.x, aż i osiągnie n. Jedno jądro obsługuje teraz tablicę dowolnego rozmiaru. 🎉

Często zadawane pytania

Czy lekcja „Pętle z krokiem siatki” jest bezpłatna?

Tak — pełny tekst „Pętle z krokiem siatki” 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 „Pętle z krokiem siatki”?

Obsługiwać tablice większe niż siatka. Ć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 „Pętle z krokiem siatki”?

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. Klasyczny wzór indeksu
  2. Ochrona przed wyjściem poza zakres
  3. Zaokrąglanie liczby bloków w górę
  4. Pętle z krokiem siatki
← Powrót do CUDA Academy