データ並列性
下記の擬似コードでデータ並列性を示す。データは下記に示すようなif文で割り当てることができる。
このプログラムの目標は、(たとえば)サイズ 100 のデータの配列 "d" を処理することである。上記のようなコードを記述し、2プロセッサシステム上で動作させると、ランタイムではそれを下記のように実行する。
並列演算環境では、両方の CPU が "d" にアクセスしなければならない。
各 CPU が互いに独立な lower_limit と upper_limit のコピーを作成する機構があることを仮定する。
"if" 節が CPU ごとの処理を変化させる。CPU "a" では、"if" 節で真となり、CPU "b" では、"else if" 節で真となる。結果として、それぞれ独自の lower_limit と upper_limit を持つ。
ここで、いずれの CPU も "d(i)のタスク" を実行するが、各 CPU が異なる "limits" を持っているため、"d" の異なる部分を同時に演算することができ、プロセッサ間にタスクをうまく配分することができる。
CPU "a" で実行されるコード:
CPU "b" で実行されるコード:
この概念は、任意の数のプロセッサに対して一般化できる。