commit | b5ae71e6955400f7f1eea5982650a134430a76e4 | [log] [tgz] |
---|---|---|
author | Louis Dionne <ldionne@apple.com> | Wed Apr 24 20:12:36 2019 +0000 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Sep 01 14:42:12 2020 -0700 |
tree | e223f7bfecc064c87b11458e657efdb3ec838f4f | |
parent | 64330b568e645fb947c116344258d0976a844ab4 [diff] |
[pstl] Make the default backend be the serial backend and always provide parallel policies Summary: Before this change, the default backend was TBB but one could disable anything related to TBB by removing the parallel policies. This change uses the serial backend by default and removes the ability to disable parallel policies, which is not useful anymore. Reviewers: rodgert, MikeDvorskiy Subscribers: mgorny, jkorous, dexonsmith, jdoerfert, libcxx-commits Differential Revision: https://reviews.llvm.org/D59792 llvm-svn: 359134 GitOrigin-RevId: 65a422c81c99a616f4b2eb502108907460265f51
Parallel STL is an implementation of the C++ standard library algorithms with support for execution policies, as specified in ISO/IEC 14882:2017 standard, commonly called C++17. The implementation also supports the unsequenced execution policy specified in Parallelism TS version 2 and proposed for the next version of the C++ standard in the C++ working group paper P1001. Parallel STL offers efficient support for both parallel and vectorized execution of algorithms. For sequential execution, it relies on an available implementation of the C++ standard library.
To use Parallel STL, you must have the following software installed:
unseq
and par_unseq
policies only have effect with compilers that support #pragma omp simd
or #pragma simd
.includes
, inplace_merge
, merge
, nth_element
, partial_sort
, partial_sort_copy
, set_difference
, set_intersection
, set_symmetric_difference
, set_union
, sort
, stable_partition
, stable_sort
, unique
.exclusive_scan
, inclusive_scan
, transform_exclusive_scan
, transform_inclusive_scan
shall be DefaultConstructible. A default constructed-instance of the initial value type shall be the identity element for the specified binary operation.max_element
, min_element
, minmax_element
, partial_sort
, partial_sort_copy
, sort
, stable_sort
the dereferenced value type of the provided iterators shall be DefaultConstructible.remove
, remove_if
, unique
the dereferenced value type of the provided iterators shall be MoveConstructible.copy_if
, inplace_merge
, partial_sort
, partial_sort_copy
, partition_copy
, remove
, remove_if
, rotate
, sort
, stable_sort
, unique
, unique_copy
.