ストリーム・プロセッシング
別の並列データの演算に対するストリームプロセッシングのパラダイムとして、(通常はハードワイヤーの)シストリック・アレイ(英語版)というものがあり、広く認知された Data stream と Super systolic array (再構成可能: 例えばrDPA: Reconfigurable datapath array) という用語の定義を含む。 この文章はSystolic arrayから派生したこれらのパラダイムについて十分考慮したものではない。
初期のCPUは、1回に演算操作を1つ行うSingle Instruction, Single Dataが基本であった。その後、急速な計算量の増大に対しそのような逐次計算モデルでは要求を満たすことができないため、一つの命令で複数の値を計算するSingle Instruction, Multiple Dataが考案された。ほとんどの期間において、SIMDはSWAR環境 (SIMD Within A Register) で利用された。また、より複雑な構造を採用することにより、MIMD並列性をも備えるようになった。
これらの2つの方式は有効ではあるものの、実際に適用するとメモリアライメント問題から同期問題、並列性の制約に渡る様々な制約に悩まされた。2008年現在、SIMD専門のプロセッサはほとんどなく、汎用プロセッサにおける命令セットの一部として実装される場合が多い。
具体例として、100個の4次元ベクトルを順に並べ、400個の要素を持つ配列同士を加算するプログラムを考える。
大半のストリームプロセッサ用言語はCやC++から出発し、アプリケーション開発者にカーネルやストリームをタグする特定の命令を追加している。これにはシェーディング言語も当てはまり、一定の範囲内のストリームプログラミング言語の一種だと考えることができる。また多くの並行論理プログラミング言語はストリームを使って並行計算を行う。
商用のものでないストリームプログラミング言語の例としては以下のものがある。
スタンフォード大学の Brook 言語
ウォータールー大学 の Sh ライブラリ
MIT の StreamIt
オープンソースの Shallows プロジェクト
Concurrent Prolog
GHCとKL1
PARLOG
Strand
商用の実装は、汎用であるか、あるいはベンダーのハードウェア専用である。汎用の言語の例としては以下のものがある。
PeakStream。
ストリーム・プロセッシング (英: stream processing) は、並列処理を実現するプログラミング手法の一つである。ストリームプロセッシングを用いることにより、コンピュータープログラマーはチップ上の多数の'コア'(あるいは、演算の単位)や、それぞれに接続されたバスやメモリ、I/Oなどを別々に管理せずにアクセスできる能力の恩恵を受けることができる。