Stream Processing
Hard Drive Recovery - Stream Processing
Stream processing is a computer-programming paradigm that allows some computer applications to more easily exploit a limited form of parallel processing. The process simplifies parallel software and hardware by restricting the parallel computation.
Stream processing is essentially a compromise, driven by a data-centric model that works very well for traditional DSP or GPU-type applications such as image, video and digital signal processing but less so for general purpose processing with more randomized data access (such as databases). By sacrificing some flexibility in the model, the implications allow easier, faster and more efficient execution. Depending on the context, processor design may be tuned for maximum efficiency or a trade-off for flexibility.
Stream processing is suitable for applications that demonstrate three characteristics: compute intensity, data parallelism, and data locality. Compute intensity refers to the number of arithmetic operations per I/O or global memory reference. In many signal-processing applications today it is well over 50:1 and increasing with algorithmic complexity.
Data Parallelism exists in a kernel if the same function is applied to all records of an input stream and a number of records can be processed simultaneously without waiting for results from previous records.
Data Locality is a specific type of temporal locality common in signal and media processing applications where data is produced once, read once or twice later in the application, and never read again. Intermediate streams passed between kernels as well as intermediate data within kernel functions can capture this locality directly using the stream processing programming model.
These applications can use multiple computational units, such as the floating-point units on a GPU, without explicitly managing allocation, synchronization, or communication among those units.


