並列アルゴリズムの実行ポリシーについて説明します。
構文
namespace std {
template<class T> inline constexpr bool is_execution_policy_v = is_execution_policy<T>::value;
}
namespace std::execution {
inline constexpr sequenced_policy seq { unspecified };
inline constexpr parallel_policy par { unspecified };
inline constexpr parallel_unsequenced_policy par_unseq { unspecified };
}
クラスと構造体
名前 | 説明 |
---|---|
is_execution_policy 構造体 |
そうしなければあいまいなオーバーロード解決の参加から特定の関数シグネチャを除外するために、実行ポリシーを検出します。 |
parallel_policy クラス |
並列アルゴリズムのオーバーロードのあいまいさを解消するために使用されます。 並列アルゴリズムの実行が並列化される可能性があることを示します。 |
parallel_unsequenced_policy クラス |
並列アルゴリズムのオーバーロードのあいまいさをなくすための一意の型として使用されます。 並列アルゴリズムの実行が並列化およびベクター化される可能性があることを示します。 |
sequenced_policy クラス |
並列アルゴリズムのオーバーロードのあいまいさをなくすための一意の型として使用されます。 並列アルゴリズムの実行を並列化できないことを指定します。 |
Microsoft 固有の仕様
並列アルゴリズムは、指定されていない数のスレッドで実行され、処理を未指定の数のデータ パーティション分割 "チャンク" に分割します。Windows スレッド プールは、スレッドの数を管理します。 この実装では、使用可能な論理プロセッサを使用しようとします。これは、同時に実行できるハードウェア スレッドの数に対応します。
parallel_policy
またはparallel_unsequenced_policy
を指定すると、標準ライブラリ アルゴリズムが Windows スレッド プールを使用して並列で実行されます。 同時実行スレッドの数、およびデータパーティション分割の "チャンク" の数は、スレッド プール スレッドの既定の数であるため、500 スレッドに制限されます。 詳細については、「 スレッド プール」を参照してください。
Windows 11 および Windows Server 2022 より前では、アプリケーションは既定で最大 64 個の論理プロセッサを持つ 1 つのプロセッサ グループに制限されていました。 これにより、同時に実行されるスレッドの数が 64 に制限されます。 詳細については、「 Processor グループ」を参照してください。
Windows 11 および Windows Server 2022 以降では、プロセスとそのスレッドにはプロセッサ アフィニティがあり、既定では、システム内のすべてのプロセッサと、64 を超えるプロセッサを持つマシン上の複数のグループにまたがっています。 同時実行スレッドの数の制限は、システム内の論理プロセッサの合計数になりました。
要件
ヘッダー: <execution>
名前空間: std