データ単位の定義は通常カーネルにおいて明示的であり、すなわち十分定義された入力 (たとえば構造体の使用が推奨されている) と出力を期待されている。いくつかの環境では、出力の値は固定である (たとえばGPUでは、特に条件を緩和しなければ固定された出力情報が存在する)。
それぞれの計算ブロックを明確に独立で定義づけられたものにすることで、まとまった量の読み込みや書き込みの操作が、キャッシュやメモリバスの効率性を著しく向上させる。
、CPU ベンダーがマルチコアやマルチスレッディングを推進している。このトレンドは平均的なユーザーにとっては役立つ物になるが、標準的な CPU が並列計算においてストリームプロセッサの性能に近づく余地はないだろう。
二つのカーネルインスタンスの並列性はスレッドレベル並列性と類似している。
各カーネルの内部で、さらに命令レベル並列性を用いることも可能である。
プログラミングモデルに関して.
// 三次元空間上の微粒子
 // ...以下、それ以外の属性が続く...
このような構造体はメモリにうまく配置されるように、配列にアセンブルされることになる。
オフセットは構造体の定義に依存する（ここでは考慮していないコンパイラの配置ポリシーなどもある）。
ストリームプロセッサに対しては、構造体を使うことが推奨されている。アプリケーションの観点から見ると、すべての属性が多少柔軟性を持って定義できる。
まとめると、アプリケーション側にはより大きな柔軟性があるが、ストリームプロセッサ側では非常に秩序だった形式である。
汎用的なプロセッサのアーキテクチャ.
ストリームプロセッサでも同様の機構は存在するが、新しいプログラミングモデルのおかげで、(計算を行わない) 管理部分にのみ使用されるトランジスタの量は実際には非常に少ない。
代表的なストリームプロセッサ.
ストリームプログラミング言語.
商用のものでないストリームプログラミング言語の例としては以下のものがある。
商用の実装は、汎用であるか、あるいはベンダーのハードウェア専用である。汎用の言語の例としては以下のものがある。
ベンダー固有の言語には以下のようなものがある。
ハードウェアを抽象化した標準規格には以下のようなものがある。
生涯.