From 709310e7a4668cf9fad232bc970021eba07e9325 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Wed, 2 Oct 2019 15:56:57 +0100 Subject: [PATCH] Document non-conformance of parallel mode to recent C++ standards * doc/xml/manual/parallel_mode.xml: Add caveat about support for recent standards. * doc/html/*: Regenerate. From-SVN: r276463 --- libstdc++-v3/ChangeLog | 6 ++++++ .../doc/html/manual/parallel_mode.html | 20 ++++++++++++++----- libstdc++-v3/doc/xml/manual/parallel_mode.xml | 18 +++++++++++++++-- 3 files changed, 37 insertions(+), 7 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 9cf1c9a52c4..9b534cb2832 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,9 @@ +2019-10-02 Jonathan Wakely + + * doc/xml/manual/parallel_mode.xml: Add caveat about support for + recent standards. + * doc/html/*: Regenerate. + 2019-10-01 Jonathan Wakely * include/experimental/algorithm (experimental::sample): Qualify call diff --git a/libstdc++-v3/doc/html/manual/parallel_mode.html b/libstdc++-v3/doc/html/manual/parallel_mode.html index db64389b5b1..7ffa8bb606b 100644 --- a/libstdc++-v3/doc/html/manual/parallel_mode.html +++ b/libstdc++-v3/doc/html/manual/parallel_mode.html @@ -3,20 +3,30 @@ Extensions  Next

Chapter 18. Parallel Mode

The libstdc++ parallel mode is an experimental parallel -implementation of many algorithms the C++ Standard Library. +implementation of many algorithms of the C++ Standard Library.

Several of the standard algorithms, for instance std::sort, are made parallel using OpenMP -annotations. These parallel mode constructs and can be invoked by +annotations. These parallel mode constructs can be invoked by explicit source declaration or by compiling existing sources with a specific compiler flag. -

Intro

The following library components in the include +

Note

+ The parallel mode has not been kept up to date with recent C++ standards + and so it only conforms to the C++03 requirements. + That means that move-only predicates may not work with parallel mode + algorithms, and for C++20 most of the algorithms cannot be used in + constexpr functions. +

+ For C++17 and above there are new overloads of the standard algorithms + which take an execution policy argument. You should consider using those + instead of the non-standard parallel mode extensions. +

Intro

The following library components in the include numeric are included in the parallel mode:

  • std::accumulate

  • std::adjacent_difference

  • std::inner_product

  • std::partial_sum

The following library components in the include -algorithm are included in the parallel mode:

  • std::adjacent_find

  • std::count

  • std::count_if

  • std::equal

  • std::find

  • std::find_if

  • std::find_first_of

  • std::for_each

  • std::generate

  • std::generate_n

  • std::lexicographical_compare

  • std::mismatch

  • std::search

  • std::search_n

  • std::transform

  • std::replace

  • std::replace_if

  • std::max_element

  • std::merge

  • std::min_element

  • std::nth_element

  • std::partial_sort

  • std::partition

  • std::random_shuffle

  • std::set_union

  • std::set_intersection

  • std::set_symmetric_difference

  • std::set_difference

  • std::sort

  • std::stable_sort

  • std::unique_copy

Bibliography

+algorithm are included in the parallel mode:

  • std::adjacent_find

  • std::count

  • std::count_if

  • std::equal

  • std::find

  • std::find_if

  • std::find_first_of

  • std::for_each

  • std::generate

  • std::generate_n

  • std::lexicographical_compare

  • std::mismatch

  • std::search

  • std::search_n

  • std::transform

  • std::replace

  • std::replace_if

  • std::max_element

  • std::merge

  • std::min_element

  • std::nth_element

  • std::partial_sort

  • std::partition

  • std::random_shuffle

  • std::set_union

  • std::set_intersection

  • std::set_symmetric_difference

  • std::set_difference

  • std::sort

  • std::stable_sort

  • std::unique_copy

Bibliography

Parallelization of Bulk Operations for STL Dictionaries . Johannes Singler. Leonor Frias. Copyright © 2007 . Workshop on Highly Parallel Processing on a Chip (HPPC) 2007. (LNCS) - .

+ .

The Multi-Core Standard Template Library . Johannes Singler. Peter Sanders. Felix Putze. Copyright © 2007 . Euro-Par 2007: Parallel Processing. (LNCS 4641) diff --git a/libstdc++-v3/doc/xml/manual/parallel_mode.xml b/libstdc++-v3/doc/xml/manual/parallel_mode.xml index 60e2088b2a1..ab7d2f2b56b 100644 --- a/libstdc++-v3/doc/xml/manual/parallel_mode.xml +++ b/libstdc++-v3/doc/xml/manual/parallel_mode.xml @@ -13,17 +13,31 @@ The libstdc++ parallel mode is an experimental parallel -implementation of many algorithms the C++ Standard Library. +implementation of many algorithms of the C++ Standard Library. Several of the standard algorithms, for instance std::sort, are made parallel using OpenMP -annotations. These parallel mode constructs and can be invoked by +annotations. These parallel mode constructs can be invoked by explicit source declaration or by compiling existing sources with a specific compiler flag. + + + The parallel mode has not been kept up to date with recent C++ standards + and so it only conforms to the C++03 requirements. + That means that move-only predicates may not work with parallel mode + algorithms, and for C++20 most of the algorithms cannot be used in + constexpr functions. + + + For C++17 and above there are new overloads of the standard algorithms + which take an execution policy argument. You should consider using those + instead of the non-standard parallel mode extensions. + +

Intro -- 2.30.2