CUDA Academy · Lezione

Fondere i filtri in un unico kernel

Ridurre i lanci e il traffico globale

Lezione 2 di 413 passaggi

Fondere i filtri in un unico kernel è una lezione CUDA Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CUDA Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CUDA Academy include 4 lezioni in totale.

Perché fondere gli stadi

Eseguire cinque kernel significa effettuare cinque avvii e cinque andate e ritorni dalla memoria globale. La fusione dei filtri in un unico kernel riduce entrambi, offrendo spesso un notevole aumento delle prestazioni. 🚀

Il costo degli avvii si somma

Ogni avvio di un kernel costa alcuni microsecondi. Su un'immagine piccola, questo overhead di avvio fisso può superare di molto il lavoro effettivo; quindi, ridurre gli avvii significa dedicare più tempo utile all'elaborazione.

Il traffico globale è il nemico

Gli stadi separati scrivono un pixel nella memoria globale e subito dopo lo rileggono. La fusione mantiene quel valore in un registro, eliminando completamente questo inutile andata e ritorno.

Un solo caricamento per thread

In un kernel fuso, ogni thread legge il proprio pixel una sola volta. Questo unico caricamento alimenta poi ogni filtro in sequenza, senza accedere di nuovo alla memoria globale.

float v = input[idx];

Collegare le operazioni nei registri

Applichi ogni filtro al valore già disponibile. Il pixel passa attraverso luminosità, gamma e contrasto come semplici operazioni matematiche, mantenute interamente nei veloci registri.

v = v * brightness;
v = powf(v, gamma);
v = (v - 0.5f) * contrast + 0.5f;

Scrivere una sola volta alla fine

Al termine dell'intera catena, salvi il risultato finale. Una sola scrittura sostituisce le numerose scritture che avrebbero eseguito i kernel separati.

output[idx] = v;

I filtri puntuali si fondono facilmente

I filtri che operano su un solo pixel sono puntuali e si fondono senza difficoltà. Luminosità, gamma e regolazioni del colore sono i candidati più semplici da combinare.

I filtri di vicinato sono più complessi

Un filtro di sfocatura legge i pixel vicini, quindi per fonderlo servono riquadri nella memoria condivisa, non soltanto registri. Fondete liberamente gli stadi puntuali, ma trattate gli stencil con maggiore attenzione.

Tenere sotto controllo la pressione sui registri

Un kernel fuso di grandi dimensioni usa più registri per thread. Se sono troppi, l'occupancy diminuisce oppure i valori vengono riversati in memoria; quindi fondete in modo aggressivo, ma tenete d'occhio il costo.

Verificare dopo la fusione

La fusione riordina il lavoro, quindi confrontate sempre l'output fuso con quello della versione a stadi. Un rapido diff conferma che i calcoli coincidono ancora, prima di festeggiare.

Un kernel, molti filtri

Il vantaggio è concreto: un solo avvio legge, trasforma e scrive ogni pixel esattamente una volta. Questo è il cuore di un kernel per immagini fuso e ben ottimizzato.

Verifica rapida

Ha unito tre filtri puntuali in un unico kernel. Qual è il principale vantaggio in termini di prestazioni?

Riepilogo

Ha imparato a fondere i filtri: caricare una volta, concatenare nei registri le operazioni matematiche puntuali e scrivere una volta. In questo modo riduce gli avvii e il traffico nella memoria globale, ma deve tenere sotto controllo la pressione sui registri e verificare l'output. ✅

Gratis per iniziare

Impara C++ con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
30
Lezioni
120

Domande Frequenti

La lezione «Fondere i filtri in un unico kernel» è gratuita?

Sì — il testo completo di «Fondere i filtri in un unico kernel» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CUDA Academy, passa a CoddyKit PRO. Il corso CUDA Academy include 4 lezioni in totale.

Cosa imparerò in «Fondere i filtri in un unico kernel»?

Ridurre i lanci e il traffico globale Eserciti CUDA Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare CUDA Academy?

Non è richiesta alcuna esperienza precedente. CUDA Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Fondere i filtri in un unico kernel»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione CUDA Academy?

Sì. Ogni lezione CUDA Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Progettare la pipeline di elaborazione
  2. Fondere i filtri in un unico kernel
  3. Elaborare tile in streaming per immagini grandi
  4. Profilare, ottimizzare, distribuire
← Torna a CUDA Academy