Stream processing
Stream Processing (ou Processamento de Fluxo em tradução livre), consistem em um modelo de processamento semelhante a SIMD (single instruction, multiple data), possibilitando que aplicações possam explorar limitadas formas de processamento paralelo. Essas aplicações podem usar múltiplas unidades de processamento, como FPU's (unidade de ponto flutuante) de uma GPU ou Field-programmable gate array, sem gerir explicitamente a alocação, sincronização ou comunicação entre as unidades.[1]
O stream processing simplifica softwares e hardwares paralelos restringindo a computação paralela que pode ser executada. Dado um conjunto de dados (um fluxo ou stream), uma série de operações (funções do kernel) é aplicada a cada elemento na corrente, ou seja, um streaming uniforme, onde uma operação é aplicada a todos os elementos do fluxo. Hardware de stream processing podem usar scoreboarding, por exemplo, para lançar DMA em tempo de execução, quando dependências tornam-se conhecidas. A eliminação de gestão manual do DMA reduz a complexidade do software.[1]
Aplicações
Processamento de fluxo é essencialmente um compromisso, impulsionado por um modelo centrado em dados, que funciona muito bem para DSP ou aplicações tradicionais da GPU (como imagem, vídeo e processamento de sinal digital), mas nem tanto para o processamento de uso geral com acesso a dados mais randomizado (como bancos de dados). Ao sacrificar alguma flexibilidade no modelo, as implicações permitem a execução mais fácil mais rápida e eficiente. Dependendo do contexto, o design do processador pode ser ajustado para o máximo de eficiência ou de um trade-off para a flexibilidade.