Stencil i przesuwane okna
Kafelkować sąsiedztwa za pomocą komórek halo.
Stencil i przesuwane okna 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.
Czym jest stencil
Stencil oblicza każdą wartość wynikową na podstawie ustalonego sąsiedztwa danych wejściowych, na przykład uśredniając piksel z otaczającymi go komórkami.
Przesuwne okno
Podczas przechodzenia wzdłuż tablicy okno danych wejściowych przesuwa się o jeden element. Kolejne wyniki mają większość danych wejściowych wspólną, więc ponowne użycie jest bardzo duże.
Idealne zastosowanie kafelkowania
Ponieważ sąsiednie obszary nakładają się na siebie, kafelek załadowany raz dostarcza dane do wielu wyników. Stencile są podręcznikowym przykładem skuteczności kafelkowania.
Poznaj halo
Aby obliczyć krawędzie kafelka, potrzebujesz także kilku elementów znajdujących się tuż poza nim. Te dodatkowe komórki brzegowe nazywają się halo.
Dlaczego istnieje halo
Pierwszy wątek kafelka potrzebuje lewego sąsiada, który należy do poprzedniego kafelka. Bez komórek halo ten odczyt byłby nieprawidłowy.
Ustalanie rozmiaru halo
W przypadku stencila o promieniu r załaduj po r dodatkowych komórek z każdej strony. Rozmycie 3-punktowe ma promień 1, więc wystarczy jedna komórka halo z każdej strony.
Kafelek z dopełnieniem
Zadeklaruj pamięć współdzieloną o rozmiarze blockDim plus 2 * radius, aby w jednym uporządkowanym buforze zmieścić część wewnętrzną i oba obszary halo.
__shared__ float tile[BLOCK + 2 * RADIUS];Ładowanie części wewnętrznej
Każdy wątek najpierw ładuje własny element do kafelka z przesunięciem równym radius, pozostawiając z przodu miejsce na lewe halo.
tile[threadIdx.x + RADIUS] = in[gid];Ładowanie obszarów halo
Pierwsze wątki wykonują podwójne zadanie, pobierając także komórki lewego i prawego halo, zanim blok zostanie zsynchronizowany.
Następnie synchronizacja i stencil
Po __syncthreads każdy wątek odczytuje sąsiadów wyłącznie z kafelka, nie dotykając ponownie pamięci globalnej w tym kroku.
Mnożnik ponownego użycia
Każda wartość wewnętrzna obsługuje teraz 2r + 1 wyników dzięki jednemu załadowaniu do pamięci współdzielonej. To właśnie ten nadmiarowy ruch eliminuje kafelkowanie.
Szybkie sprawdzenie
Dlaczego stencil z kafelkowaniem potrzebuje komórek halo?
Podsumowanie
Stencile wykorzystują przesuwające się, nakładające okna, więc halo złożone z r dodatkowych komórek z każdej strony pozwala kafelkowi obsłużyć każdy wynik, ładując każdą wartość tylko raz. ✅
Często zadawane pytania
Czy lekcja „Stencil i przesuwane okna” jest bezpłatna?
Tak — pełny tekst „Stencil i przesuwane okna” 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 „Stencil i przesuwane okna”?
Kafelkować sąsiedztwa za pomocą komórek halo. Ć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 „Stencil i przesuwane okna”?
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
- Problem ponownego użycia danych
- Wzorzec wczytaj–zsynchronizuj–oblicz
- Stencil i przesuwane okna
- Obsługa kafelków brzegowych