32 #ifndef _GLIBCXX_PARALLEL_SORT_H
33 #define _GLIBCXX_PARALLEL_SORT_H 1
39 #if _GLIBCXX_ASSERTIONS
43 #if _GLIBCXX_MERGESORT
47 #if _GLIBCXX_QUICKSORT
51 #if _GLIBCXX_BAL_QUICKSORT
55 namespace __gnu_parallel
58 template<
bool __stable,
typename _RAIter,
73 template<
bool __stable,
typename _RAIter,
typename _Compare>
81 parallel_sort_mwms<__stable, true>
84 parallel_sort_mwms<__stable, false>
97 template<
bool __stable,
typename _RAIter,
typename _Compare>
105 parallel_sort_mwms<__stable, true>
118 template<
bool __stable,
typename _RAIter,
typename _Compare>
126 parallel_sort_mwms<__stable, false>
138 template<
bool __stable,
typename _RAIter,
typename _Compare>
159 template<
bool __stable,
typename _RAIter,
typename _Compare>
181 template<
bool __stable,
typename _RAIter,
typename _Compare>
188 __parallel_sort<__stable>
189 (__begin, __end, __comp,
201 template<
bool __stable,
typename _RAIter,
typename _Compare>
207 typedef std::iterator_traits<_RAIter> _TraitsType;
208 typedef typename _TraitsType::value_type _ValueType;
209 typedef typename _TraitsType::difference_type _DifferenceType;
212 #if _GLIBCXX_MERGESORT
216 parallel_sort_mwms<__stable, true>
219 parallel_sort_mwms<false, false>
223 #if _GLIBCXX_QUICKSORT
228 #if _GLIBCXX_BAL_QUICKSORT
234 __gnu_sequential::sort(__begin, __end, __comp);
Forces parallel sorting using multiway mergesort with splitting by sampling at compile time...
Definition: tags.h:146
Routines for checking the correctness of algorithm results. This file is a GNU parallel extension to ...
Implementation of a dynamically load-balanced parallel quicksort.
Forces parallel sorting using multiway mergesort at compile time.
Definition: tags.h:128
#define _GLIBCXX_CALL(__n)
Macro to produce log message when entering a function.
Definition: compiletime_settings.h:44
Parallel multiway merge sort. This file is a GNU parallel extension to the Standard C++ Library...
Recommends parallel execution using the default parallel algorithm.
Definition: tags.h:79
_Parallelism
Run-time equivalents for the compile-time tags.
Definition: types.h:44
Forces parallel sorting using multiway mergesort with exact splitting at compile time.
Definition: tags.h:137
void __parallel_sort_qsb(_RAIter __begin, _RAIter __end, _Compare __comp, _ThreadIndex __num_threads)
Top-level quicksort routine.
Definition: balanced_quicksort.h:430
_ThreadIndex __get_num_threads()
Find out desired number of threads.
Definition: tags.h:63
End-user include file. Provides advanced settings and tuning options. This file is a GNU parallel ext...
Includes the original header files concerned with iterators except for stream iterators. This file is a GNU parallel extension to the Standard C++ Library.
static _GLIBCXX_CONST const _Settings & get()
Get the global settings.
void __parallel_sort_qs(_RAIter __begin, _RAIter __end, _Compare __comp, _ThreadIndex __num_threads)
Unbalanced quicksort main call.
Definition: quicksort.h:154
Implementation of a unbalanced parallel quicksort (in-place). This file is a GNU parallel extension t...
#define _GLIBCXX_PARALLEL_ASSERT(_Condition)
Definition: base.h:422
Forces parallel sorting using balanced quicksort at compile time.
Definition: tags.h:164
void __parallel_sort(_RAIter __begin, _RAIter __end, _Compare __comp, _Parallelism __parallelism)
Defines on whether to include algorithm variants.
Recommends parallel execution at compile time, optionally using a user-specified number of threads...
Definition: tags.h:46
_SortAlgorithm sort_algorithm
Definition: settings.h:127
Forces parallel sorting using unbalanced quicksort at compile time.
Definition: tags.h:155