非線形パイプライン

テンプレート関数 parallel_pipeline は、線形パイプラインのみをサポートします。次の図のようなバロック式の配管工事 (柔軟性のない構成) を直接処理することはありません。



しかし、パイプラインを使用することはできます。次のように、フィルターを線形順に位相的にソートするだけです。

薄い灰色の矢印は、ほかの矢印の遷移的プロセスを暗示するオリジナルの矢印です。並列処理がフィルターを線形順にすることで失われているように見えますが、実際には、唯一の損失は処理能力ではなくパイプラインのレイテンシー によるものです。レイテンシーは、トークンがパイプラインの最初から最後までを流れる時間です。十分な数のプロセッサーが提供されると、オリジナルの非線形パイプラインのレイテンシーは 3 フィルターになります。これは、フィルター A と B およびフィルター D と E が同時にトークンを処理できるためです。



この線形パイプラインでは、レイテンシーは 5 フィルターになります。上記のフィルター A、B、D および E の動作は、パイプラインの次のフィルターに渡すこと以外に、フィルターで動作する必要のないオブジェクトを適切に制御するように修正する必要があります。

位相に関係なく、処理能力は最も遅いシリアルフィルターによってまだ制限されているため、処理能力は同じままです。parallel_pipeline が非線形パイプラインをサポートした場合、プログラミングは複雑になりますが、処理能力はそれほど向上しません。parallel_pipeline の線形制限は、パフォーマンスとプログラミングの労力のバランスをうまく取っています。