El procesamiento de flujo es un concepto de programación e ingeniería informática que se puede utilizar para diseñar aplicaciones y sistemas de hardware. Cuando se utiliza el procesamiento de flujo, los datos se organizan en flujos que luego se envían a los nodos o procesadores que manipulan los datos en el flujo, después de lo cual los datos continúan a lo largo de la ruta para que otros nodos puedan manipularlos. Al final de la transmisión, los datos se colocan en la memoria o se pasan a una aplicación de usuario final para su uso. Un sistema o aplicación que utiliza procesamiento de flujo funciona de manera más eficaz cuando la información del flujo se genera de manera constante por una o más fuentes, lo que lo hace efectivo para el procesamiento de señales digitales (DSP), imágenes y gráficos, o tráfico de red de gran ancho de banda. La aplicación práctica más extendida del procesamiento de flujo es la producción de tarjetas gráficas de computadora, en las que los procesadores de flujo están integrados en el hardware de gráficos para ayudar a realizar múltiples operaciones en los datos gráficos entrantes, como las matrices de vértices.
La base para el procesamiento de flujos gira en torno al concepto de datos como flujo. En lugar de extraer información de fuentes dispares o interceptar mensajes de un mecanismo de interrupción, se forma un flujo de datos cuando la información es recopilada por algún proceso en una sola línea llamada flujo. Los elementos de datos pueden variar, pero el flujo generalmente consta de bloques de los mismos tipos de elementos que se pueden procesar secuencialmente.
Los procesadores o nodos utilizados en el procesamiento de flujos aceptan un flujo y realizan una operación determinada en los datos, después de lo cual los datos se pueden pasar a otro nodo para su procesamiento posterior. Para una máxima eficiencia, los nodos están pensados para ser pequeñas funciones que se cargan y ejecutan directamente en la unidad central de procesamiento (CPU), utilizando registros y acceso directo a memoria (DMA) para la velocidad. Si la información dentro de la secuencia puede ser independiente y no depende del resultado de las operaciones de un solo nodo, entonces se pueden realizar múltiples operaciones en la secuencia simultáneamente, al mismo tiempo que proporciona al compilador del programa sugerencias que pueden permitir optimizaciones muy efectivas.
El procesamiento de transmisión generalmente es una buena solución para situaciones en las que una aplicación o dispositivo, como una cámara, un sensor externo o una conexión de red, genera y envía datos constantemente a la transmisión. Muchas tarjetas gráficas utilizan procesadores de flujo para convertir rápidamente los datos que ingresan a través de una canalización de gráficos en una imagen renderizada y rasterizada. Algunas tarjetas gráficas tienen varios procesadores o nodos integrados en el hardware de la tarjeta, por lo que el procesamiento de la transmisión puede ocurrir rápidamente y, a veces, simultáneamente, como suele ser deseable cuando se utilizan sombreadores para gráficos tridimensionales (3D).