Stencil och glidande fönster
Dela upp omgivande områden med halo-celler.
Stencil och glidande fönster är en gratis lektion i CUDA Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för CUDA Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i CUDA Academy innehåller totalt 4 lektioner.
Vad en stencil är
En stencil beräknar varje utdata från ett fast närområde av indata, till exempel genom att beräkna medelvärdet av en pixel och cellerna runt den.
Det glidande fönstret
När du förflyttar dig längs arrayen glider indataset ett steg. På varandra följande utdata delar de flesta av sina indata, så återanvändningen är stor.
Perfekt för tiling
Eftersom grannområden överlappar varandra kan en tile som lästs in en gång ge många utdata. Stenciler är ett typexempel där tiling gör stor skillnad.
Möt halon
För att beräkna kanterna på en tile behöver du också några element precis utanför den. Dessa extra kantceller kallas halo.
Varför halon behövs
Den första tråden i en tile behöver sin vänstra granne, som tillhör den föregående tilen. Utan haloceller blir den läsningen fel.
Bestäm halons storlek
För en stencil med radien r läser du in r extra celler på varje sida. En suddning med tre punkter har radien 1, så en halocell per sida räcker.
En tile med utfyllnad
Deklarera delat minne som blockDim plus 2 * radius så att det rymmer det inre området och båda haloområdena i en enda tydlig buffer.
__shared__ float tile[BLOCK + 2 * RADIUS];Läsa in det inre området
Varje tråd läser först in sitt eget element i tilen med förskjutningen radius, så att det finns plats för den vänstra halon framför.
tile[threadIdx.x + RADIUS] = in[gid];Läsa in haloområdena
De första trådarna gör dubbelt arbete och hämtar även de vänstra och högra halocellerna innan blocket synkroniseras.
Sedan synkronisering och stencil
Efter __syncthreads läser varje tråd sina grannar helt från tilen och rör aldrig globalt minne igen under det steget.
Återanvändningsfaktor
Varje värde i det inre området används nu av 2r + 1 utdata efter en enda läsning från delat minne. Det är exakt den överflödiga datatrafik som tiling tar bort.
Snabb kontroll
Varför behöver en stencil med tiling haloceller?
Sammanfattning
Stenciler använder glidande, överlappande fönster, så en halo med r extra celler per sida gör att en tile kan ge alla utdata med en enda inläsning per cell. ✅
Lär dig C++ med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 30
- Lektioner
- 120
Vanliga frågor
Är lektionen ”Stencil och glidande fönster” gratis?
Ja – hela texten till ”Stencil och glidande fönster” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i CUDA Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i CUDA Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Stencil och glidande fönster”?
Dela upp omgivande områden med halo-celler. Ni övar på CUDA Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig CUDA Academy?
Du behöver inga förkunskaper. Utbildningen i CUDA Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Stencil och glidande fönster”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här CUDA Academy-lektionen?
Ja. Varje CUDA Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Problemet med dataåteranvändning
- Mönstret läs–synkronisera–beräkna
- Stencil och glidande fönster
- Hantera kantblock