L’elaborazione del flusso è un concetto di programmazione e ingegneria informatica che può essere utilizzato per progettare applicazioni e sistemi hardware. Quando viene utilizzata l’elaborazione del flusso, i dati vengono organizzati in flussi che vengono quindi inviati a nodi o processori che manipolano i dati nel flusso, dopodiché i dati continuano lungo il percorso in modo che altri nodi possano manipolarli. Alla fine del flusso, i dati vengono inseriti in memoria o passati a un’applicazione dell’utente finale per l’uso. Un sistema o un’applicazione che utilizza l’elaborazione del flusso funziona in modo più efficace quando le informazioni sul flusso vengono generate in modo coerente da una o più fonti, rendendolo efficace per l’elaborazione del segnale digitale (DSP), l’imaging e la grafica o il traffico di rete a larghezza di banda elevata. L’applicazione pratica più diffusa dell’elaborazione del flusso è nella produzione di schede grafiche per computer, in cui i processori di flusso sono integrati nell’hardware grafico per aiutare a eseguire più operazioni sui dati grafici in ingresso come gli array di vertici.
La base per l’elaborazione del flusso ruota attorno al concetto di dati come flusso. Invece di estrarre informazioni da fonti disparate o intercettare messaggi da un meccanismo di interruzione, si forma un flusso di dati quando le informazioni vengono raccolte da un processo in un’unica riga chiamata flusso. Gli elementi dei dati possono variare, ma il flusso è generalmente costituito da blocchi degli stessi tipi di elementi che possono essere elaborati in sequenza.
I processori oi nodi utilizzati nell’elaborazione del flusso accettano un flusso ed eseguono una determinata operazione sui dati, dopodiché i dati possono essere passati a un altro nodo per ulteriori elaborazioni. Per la massima efficienza, i nodi sono intesi come piccole funzioni che vengono caricate ed eseguite direttamente sull’unità di elaborazione centrale (CPU), utilizzando registri e accesso diretto alla memoria (DMA) per la velocità. Se le informazioni all’interno del flusso possono stare da sole e non dipendono dal risultato delle operazioni di un singolo nodo, è possibile eseguire più operazioni contemporaneamente sul flusso, fornendo anche al compilatore del programma suggerimenti che possono consentire ottimizzazioni molto efficaci.
L’elaborazione del flusso è generalmente una buona soluzione per le situazioni in cui i dati vengono costantemente generati e inseriti nel flusso da un’applicazione o da un dispositivo, come una telecamera, un sensore esterno o una connessione di rete. Molte schede grafiche utilizzano processori di flusso per trasformare rapidamente i dati in arrivo attraverso una pipeline grafica in un’immagine renderizzata e rasterizzata. Alcune schede grafiche hanno più processori o nodi integrati nell’hardware della scheda, quindi l’elaborazione del flusso può avvenire rapidamente e talvolta contemporaneamente, come spesso è desiderabile quando gli shader vengono utilizzati per la grafica tridimensionale (3D).