インテル® C++ コンパイラー 17.0 デベロッパー・ガイドおよびリファレンス

ホルダーについて

ホルダーは、異なる並列ストランドからの変更を保持する必要がない場合に、共通変数の並列使用を分離するハイパーオブジェクトです。レデューサーと同じように、各並列ストランドはホルダーの異なるビューを確認して操作します。

ホルダーはスレッド・ローカル・ストレージに似ていますが、インテル® Cilk™ Plus の fork-join 構造で動作するように特別に設計されたものです。

ホルダーには次の特性があります。

ホルダーは大規模なリファクタリングを行うことなくローカル以外の変数を置き換えることができるため、引数の引き渡しの代わりとして使用することができます。多くの場合、スポーンの後や並列 for ループの反復間においてホルダーのビューは変わりません (ただし、スチールは除く)。ホルダーはこの利点を利用しています。ホルダーのビューが大きなオブジェクトで、構築にコストがかかる場合、ビューごとに個別のローカル・オブジェクトを作成しないようにすることで時間を大幅に節約できます。

さらに、最後の値を保持するホルダーでは、同じプログラムのシリアル部分と同期後の値が同じになります。この特性により、プログラムは値を再計算しなくて済みます。