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
- Klasyczny wzór indeksu
- Ochrona przed wyjściem poza zakres
- Zaokrąglanie liczby bloków w górę
- Pętle z krokiem siatki