¿Qué es el procesamiento de flujo?
El procesamiento de flujo es un concepto de programación informática 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 alimentan a nodos o procesadores que manipulan los datos en el flujo, después de lo cual los datos continúan a lo largo del camino para que otros nodos puedan manipularlos. Al final de la secuencia, 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 el procesamiento de flujo funciona de manera más efectiva cuando la información del flujo se genera de manera consistente por una o más fuentes, lo que lo hace efectivo para el procesamiento de señal digital (DSP), imágenes y gráficos, o tráfico de red de alto ancho de banda. La aplicación práctica más extendida del procesamiento de flujo es en la producción de tarjetas gráficas de computadora, en las cuales 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 los conjuntos de vértices.
La base para el procesamiento de flujo 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 algún proceso recopila información en una sola línea llamada flujo. Los elementos de datos pueden variar, pero la secuencia generalmente consiste en bloques de los mismos tipos de elementos que pueden procesarse secuencialmente.
Los procesadores o nodos utilizados en el procesamiento de flujo 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 un mayor procesamiento. Para una máxima eficiencia, los nodos están destinados a 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 varias operaciones en la secuencia simultáneamente, al tiempo que proporciona al compilador del programa sugerencias que pueden permitir optimizaciones muy efectivas.
El procesamiento de flujo por lo general es una buena solución para situaciones en las que los datos se generan y empujan de manera consistente por una aplicación o dispositivo, como una cámara, un sensor externo o una conexión de red. Muchas tarjetas gráficas usan procesadores de flujo para convertir rápidamente los datos que ingresan a través de una tubería de gráficos en una imagen renderizada y rasterizada. Ciertas tarjetas gráficas tienen múltiples procesadores o nodos integrados en el hardware de la tarjeta, por lo que el procesamiento continuo puede ocurrir de forma rápida y, a veces, simultáneamente, ya que a menudo es deseable cuando se usan sombreadores para gráficos tridimensionales (3D).