Stream programming
From Wikipedia, the free encyclopedia
Stream programming is the development paradigm required for stream processors. It may be thought of as SIMD with an emphasis on caching.
A "stream" is an array whose elements can be operated on in parallel. Unlike standard SIMD, in which single instructions may be independent, stream programming relies on a "kernel" of related instructions. Data is gathered from memory into a stream, operated on in the stream, and then scattered from the stream back into memory. Memory latency is thus minimized by accessing the data in chunks, similar in effect to caching.
Early research in this field led to the Brook language at Stanford and the Sh library at Waterloo. The work from both of these projects have been respectively commercialized by PeakStream and RapidMind. Both commercial platforms extend C++ programs to allow for stream programming. The platforms then schedule the user's application for execution on a CPU, GPU, or Cell BE given the appropriateness of particular resources.
The benefit of stream programming in this manner is that platform-independent software may take advantage of multi-core CPUs and various co-processors.