Slå sammen filtre i én kjerne
Reduser antallet oppstarter og global trafikk
Slå sammen filtre i én kjerne er en gratis leksjon i CUDA Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i CUDA Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i CUDA Academy inneholder totalt 4 leksjoner.
Hvorfor slå sammen i det hele tatt
Å kjøre fem kernels betyr fem oppstarter og fem tur-retur-operasjoner til globalt minne. Ved å slå sammen filtrene i én kernel reduseres begge deler, noe som ofte gir en betydelig hastighetsøkning. 🚀
Oppstartskostnaden summeres opp
Hver kernel-oppstart koster noen få mikrosekunder. På et lite bilde kan denne faste oppstartskostnaden være mye større enn selve arbeidet, så færre oppstarter betyr mer tid til nyttig arbeid.
Trafikk til globalt minne er fienden
Separate trinn skriver en piksel til globalt minne og leser den deretter tilbake med én gang. Ved å slå sammen trinnene beholdes verdien i et register, slik at den unødvendige tur-returen fjernes helt.
Last inn én gang per tråd
I en sammenslått kernel leser hver tråd pikselen sin bare én gang. Denne ene innlastingen brukes deretter av hvert filter i rekkefølge uten at globalt minne berøres igjen.
float v = input[idx];Kjed sammen operasjoner i registre
Bruk hvert filter på verdien som allerede er tilgjengelig. Pikselen går gjennom lysstyrke, gamma og kontrast som vanlig matematikk, og alt beholdes i raske registre.
v = v * brightness;
v = powf(v, gamma);
v = (v - 0.5f) * contrast + 0.5f;Skriv én gang til slutt
Når hele kjeden er kjørt, lagrer De det endelige resultatet. Én lagring erstatter de mange skrivingene som separate kerneler ville ha utført.
output[idx] = v;Punktvise filtre kan enkelt slås sammen
Filtre som bare berører én piksel, er punktvise og kan slås sammen uten problemer. Justeringer av lysstyrke, gamma og farge er de enkleste gevinstene å kombinere.
Nabofiltre er vanskeligere
En uskarphetsberegning leser piksler i nærheten, så det å slå den sammen krever fliser i delt minne, ikke bare registre. Slå gjerne sammen punktvise trinn, men behandle stencil-operasjoner med ekstra varsomhet.
Følg med på registertrykket
En stor, sammenslått kernel bruker flere registre per tråd. For mange registre reduserer okkuperingen eller fører til at verdier flyttes ut, så slå sammen så mye som mulig, men følg med på kostnaden.
Verifiser etter sammenslåing
Sammenslåing endrer rekkefølgen på arbeidet, så sammenlign alltid resultatet fra den sammenslåtte versjonen med den trinnvise versjonen. En rask diff bekrefter at matematikken fortsatt stemmer før De feirer.
Én kernel, mange filtre
Gevinsten er reell: Én enkelt oppstart leser, transformerer og skriver hver piksel nøyaktig én gang. Det er kjernen i en godt optimalisert sammenslått bildekernel.
Hurtigsjekk
De slo sammen tre punktvise filtre i én kernel. Hva er den viktigste ytelsesgevinsten?
Oppsummering
De lærte å slå sammen filtre: laste inn én gang, kjede punktvis matematikk i registre og skrive én gang. Det reduserer oppstarter og trafikk til globalt minne, men følg med på registertrykket og verifiser resultatet. ✅
Lær deg C++ med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 30
- Leksjoner
- 120
Ofte stilte spørsmål
Er leksjonen «Slå sammen filtre i én kjerne» gratis?
Ja – hele teksten i «Slå sammen filtre i én kjerne» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av CUDA Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i CUDA Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Slå sammen filtre i én kjerne»?
Reduser antallet oppstarter og global trafikk Du øver på CUDA Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med CUDA Academy?
Ingen tidligere erfaring er nødvendig. CUDA Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.
Hvor lang tid tar leksjonen «Slå sammen filtre i én kjerne»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne CUDA Academy-leksjonen?
Ja. Alle CUDA Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Utform behandlingspipen
- Slå sammen filtre i én kjerne
- Strømflislegging for store bilder
- Profiler, optimaliser, lever