並列処理のための拡張
From cppreference.com
< cpp | experimental
C++ 並列処理のための拡張、ISO/IEC TS 19570:2015 は、C++ 標準ライブラリの以下の新しいコンポーネントを定義しています。
目次 |
[編集] 実行ポリシー
並列処理 TS は、3つの実行ポリシーを記述しています: sequential (逐次)、 parallel (並列)、および parallel+vector (並列+ベクトル) であり、対応する実行ポリシー型とオブジェクトを提供します。ユーザーは、対応する型の実行ポリシーオブジェクトを用いて並列アルゴリズムを呼び出すことで静的に実行ポリシーを選択することも、型消去の execution_policy クラスを使用することで動的に選択することもできます。
実装は、拡張として追加の実行ポリシーを定義してもよいです。実装定義の型の実行ポリシーオブジェクトを用いて呼び出された並列アルゴリズムのセマンティクスは、実装定義です。
| ヘッダー
<experimental/execution_policy> で定義 | |
| 実行ポリシー型 (クラス) | |
| グローバル実行ポリシーオブジェクト (定数) | |
| 動的実行ポリシー (クラス) | |
| クラスが実行ポリシーを表すかどうかをテストする (クラステンプレート) | |
[編集] 例外リスト
| ヘッダー
<experimental/exception_list> で定義されています | |
| 並列実行中に発生した例外 (クラス) | |
[編集] 既存アルゴリズムの並列化バージョン
TS は、<algorithm>、<numeric>、<memory> の以下の69のアルゴリズムの 並列化バージョン を提供します。
[編集] 新規アルゴリズム
| ヘッダ
<experimental/algorithm> で定義 | |
| std::for_each に似ていますが、void を返します。 (関数テンプレート) | |
| シーケンスの最初の n 個の要素に関数オブジェクトを適用します。 (関数テンプレート) | |
| ヘッダ
<experimental/numeric> で定義 | |
| (並列処理 TS) |
std::accumulate に似ているが、順序不同 (関数テンプレート) |
| std::partial_sum に似ていますが、i 番目の合計から i 番目の入力要素を除外します。 (関数テンプレート) | |
| std::partial_sum に似ていますが、i 番目の合計に i 番目の入力要素を含めます。 (関数テンプレート) | |
| (並列処理 TS) |
ファンクタを適用し、順不同で reduce を行います。 (関数テンプレート) |
| ファンクタを適用し、exclusive scan を計算します。 (関数テンプレート) | |
| ファンクタを適用し、inclusive scan を計算します。 (関数テンプレート) | |