Files of check-in [d26d71cd86] in directory wiki_references/2017/software/Rust/src_from_GitHub/the_repository_clones/rust/src/llvm-project/pstl [history]
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: * C++ compiler with: * Support for C++11 * Support for OpenMP* 4.0 SIMD constructs * Threading Building Blocks (TBB) which is available for download at https://github.com/01org/tbb/
Known issues and limitations
par_unseqpolicies only have effect with compilers that support
#pragma omp simdor
- Parallel and vector execution is only supported for the algorithms if random access iterators are provided, while for other iterator types the execution will remain serial.
- The following algorithms do not allow efficient SIMD execution:
- The initial value type for
transform_inclusive_scanshall be DefaultConstructible. A default constructed-instance of the initial value type shall be the identity element for the specified binary operation.
stable_sortthe dereferenced value type of the provided iterators shall be DefaultConstructible.
uniquethe dereferenced value type of the provided iterators shall be MoveConstructible.
- The following algorithms require additional O(n) memory space for parallel execution: