データ並列性
並列計算が可能な環境、例えばマルチソケットあるいはマルチコアによるマルチプロセッサのシステムにおいて、データ並列性は、各プロセッサが分配された各データ領域(データ中の別々の部分)に対して同じタスクを処理することによって得られる。
ある状況では、一つの実行スレッドがすべてのデータの演算を制御し、またある状況では、複数のスレッドが演算を制御するが、すべて同じコードを実行している。
たとえば、CPU A と B を持つ2プロセッサシステム上にて、あるデータ D に対してコードを実行する場合、CPU A に D の前半部分を処理させ、同時に CPU B に D の残り後半部分を処理させることで、実行時間を削減することができる。
より具体的な例として、二つの行列の加算を考える。データ並列性を実現するためには、CPU A は行列の前半のすべての要素を加算し、CPU B は行列の後半のすべての要素を加算する。二つのプロセッサが並列に動作するため、行列の加算は(理想的な場合)単一の CPU で同じ処理を実行する場合の半分の時間で完了する。
データ並列性は、データの処理(タスク並列性)ではなくデータの分散した(並列化された)性質に焦点を置く。