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

レデューサー

インテル® Cilk™ Plus は古い機能 (非推奨) です。代わりに、OpenMP* またはインテル® TBB を使用してください。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」を参照してください。

レデューサーは、データ競合を引き起こすことなく、並列コードで変数を段階的に更新して値を計算します。概念的には、レデューサーとは、並列に実行している複数のストランドが安全に使用できる変数です。ランタイムシステムは、各ワーカーが変数のプライベート・コピーにアクセスすることを保証し、ロックを使用せずにデータ競合の可能性を排除します。ストランドが同期するときに、それぞれの変数のインスタンスは 1 つの変数にマージ (レデュース) されます。

レデューサーには、いくつかのメリットがあります。

レデューサーは、ランタイムシステムにインターフェイスを提供する C++ テンプレートで定義されます。

独自のレデューサーを記述する場合は、「上級者向けトピック: 新しいレデューサーの記述方法」に詳細があります。