0Pricing
CUDA Academy · Lekcja

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

  1. Problem ponownego użycia danych
  2. Wzorzec wczytaj–zsynchronizuj–oblicz
  3. Stencil i przesuwane okna
  4. Obsługa kafelków brzegowych
← Powrót do CUDA Academy