__GNU_PARALLEL::_SETTINGS(3)

πŸ’– __gnu_parallel::_Settings(3) πŸ’–

okay so this is the __gnu_parallel::_Settings(3) page from the Library Functions Manual, and it's literally the settings class for parallel mode. No cap, it's giving β€œtunable parameters” energy ✨


🌸 NAME 🌸

__gnu_parallel::_Settings β€” class _Settings. Run-time settings for the parallel mode including all tunable parameters.


✨ SYNOPSIS ✨

#include <settings.h>

πŸ’… Static Public Member Functions

  • static const _Settings & get () throw () β€” Get the global settings.
  • static void set (_Settings &) throw () β€” Set the global settings.

πŸŽ€ Public Attributes

  • _SequenceIndex accumulate_minimal_n β€” Minimal input size for accumulate.
  • unsigned int adjacent_difference_minimal_n β€” Minimal input size for adjacent_difference.
  • _AlgorithmStrategy algorithm_strategy
  • unsigned int cache_line_size β€” Overestimation of cache line size. Used to avoid false sharing, i.e. elements of different threads are at least this amount apart.
  • _SequenceIndex count_minimal_n β€” Minimal input size for count and count_if.
  • _SequenceIndex fill_minimal_n β€” Minimal input size for fill.
  • _FindAlgorithm find_algorithm
  • double find_increasing_factor β€” Block size increase factor for find.
  • _SequenceIndex find_initial_block_size β€” Initial block size for find.
  • _SequenceIndex find_maximum_block_size β€” Maximal block size for find.
  • float find_scale_factor β€” Block size scale-down factor with respect to current position.
  • _SequenceIndex find_sequential_search_size β€” Start with looking for this many elements sequentially, for find.
  • _SequenceIndex for_each_minimal_n β€” Minimal input size for for_each.
  • _SequenceIndex generate_minimal_n β€” Minimal input size for generate.
  • unsigned long long L1_cache_size β€” size of the L1 cache in bytes (underestimation).
  • unsigned long long L2_cache_size β€” size of the L2 cache in bytes (underestimation).
  • _SequenceIndex max_element_minimal_n β€” Minimal input size for max_element.
  • _SequenceIndex merge_minimal_n β€” Minimal input size for merge.
  • unsigned int merge_oversampling β€” Oversampling factor for merge.
  • _SplittingAlgorithm merge_splitting
  • _SequenceIndex min_element_minimal_n β€” Minimal input size for min_element.
  • _MultiwayMergeAlgorithm multiway_merge_algorithm
  • int multiway_merge_minimal_k β€” Oversampling factor for multiway_merge.
  • _SequenceIndex multiway_merge_minimal_n β€” Minimal input size for multiway_merge.
  • unsigned int multiway_merge_oversampling β€” Oversampling factor for multiway_merge.
  • _SplittingAlgorithm multiway_merge_splitting
  • _SequenceIndex nth_element_minimal_n β€” Minimal input size for nth_element.
  • _SequenceIndex partial_sort_minimal_n β€” Minimal input size for partial_sort.
  • _PartialSumAlgorithm partial_sum_algorithm
  • float partial_sum_dilation β€” Ratio for partial_sum. Assume sumandwriteresult"tobethisfactorslowerthanjustsum.
  • unsigned int partial_sum_minimal_n β€” Minimal input size for partial_sum.
  • double partition_chunk_share β€” Chunk size for partition, relative to input size. If > 0.0, this value overrides partition_chunk_size.
  • _SequenceIndex partition_chunk_size β€” Chunk size for partition.
  • _SequenceIndex partition_minimal_n β€” Minimal input size for partition.
  • _SequenceIndex qsb_steals β€” The number of stolen ranges in load-balanced quicksort.
  • unsigned int random_shuffle_minimal_n β€” Minimal input size for random_shuffle.
  • _SequenceIndex replace_minimal_n β€” Minimal input size for replace and replace_if.
  • _SequenceIndex search_minimal_n β€” Minimal input size for search and search_n.
  • _SequenceIndex set_difference_minimal_n β€” Minimal input size for set_difference.
  • _SequenceIndex set_intersection_minimal_n β€” Minimal input size for set_intersection.
  • _SequenceIndex set_symmetric_difference_minimal_n β€” Minimal input size for set_symmetric_difference.
  • _SequenceIndex set_union_minimal_n β€” Minimal input size for set_union.
  • _SortAlgorithm sort_algorithm
  • _SequenceIndex sort_minimal_n β€” Minimal input size for parallel sorting.
  • unsigned int sort_mwms_oversampling β€” Oversampling factor for parallel std::sort (MWMS).
  • unsigned int sort_qs_num_samples_preset β€” Such many samples to take to find a good pivot (quicksort).
  • _SequenceIndex sort_qsb_base_case_maximal_n β€” Maximal subsequence __length to switch to unbalanced __base case. Applies to std::sort with dynamically load-balanced quicksort.
  • _SplittingAlgorithm sort_splitting
  • unsigned int TLB_size β€” size of the Translation Lookaside Buffer (underestimation).
  • _SequenceIndex transform_minimal_n β€” Minimal input size for parallel std::transform.
  • _SequenceIndex unique_copy_minimal_n β€” Minimal input size for unique_copy.
  • _SequenceIndex workstealing_chunk_size

πŸ”₯ Detailed Description πŸ”₯

class _Settings Run-time settings for the parallel mode including all tunable parameters.


πŸ‘‘ Member Function Documentation πŸ‘‘

πŸ’– const _Settings & __gnu_parallel::_Settings::get () [static]

Get the global settings.

Referenced by:

  • __gnu_parallel::__find_template()
  • __gnu_parallel::__find_template()
  • __gnu_parallel::__find_template()
  • __gnu_parallel::__for_each_template_random_access_workstealing()
  • __gnu_parallel::__parallel_nth_element()
  • __gnu_parallel::__parallel_partial_sum()
  • __gnu_parallel::__parallel_partial_sum_linear()
  • __gnu_parallel::__parallel_partition()
  • __gnu_parallel::__parallel_random_shuffle_drs()
  • __gnu_parallel::__parallel_sort()
  • __gnu_parallel::__parallel_sort()
  • __gnu_parallel::__parallel_sort_qs_conquer()
  • __gnu_parallel::__qsb_local_sort_with_helping()
  • __gnu_parallel::__sequential_random_shuffle()
  • __gnu_parallel::multiway_merge_sampling_splitting()
  • __gnu_parallel::parallel_multiway_merge()
  • __gnu_parallel::parallel_sort_mwms()
  • __gnu_parallel::parallel_sort_mwms_pu()

πŸ’… void __gnu_parallel::_Settings::set (_Settings & ) [static]

Set the global settings.

References:

  • accumulate_minimal_n
  • adjacent_difference_minimal_n
  • cache_line_size
  • count_minimal_n
  • fill_minimal_n
  • find_increasing_factor
  • find_initial_block_size
  • find_maximum_block_size
  • find_scale_factor
  • find_sequential_search_size
  • for_each_minimal_n
  • generate_minimal_n
  • L1_cache_size
  • L2_cache_size
  • max_element_minimal_n
  • merge_minimal_n
  • merge_oversampling
  • min_element_minimal_n
  • multiway_merge_minimal_k
  • multiway_merge_minimal_n
  • multiway_merge_oversampling
  • nth_element_minimal_n
  • partial_sort_minimal_n
  • partial_sum_dilation
  • partial_sum_minimal_n
  • partition_chunk_share
  • partition_chunk_size
  • partition_minimal_n
  • qsb_steals
  • random_shuffle_minimal_n
  • replace_minimal_n
  • search_minimal_n
  • set()
  • set_difference_minimal_n
  • set_intersection_minimal_n
  • set_symmetric_difference_minimal_n
  • set_union_minimal_n
  • sort_minimal_n
  • sort_mwms_oversampling
  • sort_qs_num_samples_preset
  • sort_qsb_base_case_maximal_n
  • TLB_size
  • transform_minimal_n
  • unique_copy_minimal_n

Referenced by set().

✨ Member Data Documentation ✨

okay bestie, THIS is the part everyone actually came for πŸ’– β€” every single knob on _Settings, what it controls, and which internal function is out here reading it. These are the fields set() goes and fills in. No skipping, we're doing all of them, periodt. 🫢


  • _SequenceIndex __gnu_parallel::_Settings::accumulate_minimal_n β€” the smallest input size that's even worth it for accumulate. Under this? it's not gonna bother. Referenced by set(). πŸŽ€
  • unsigned int __gnu_parallel::_Settings::adjacent_difference_minimal_n β€” minimal input size for adjacent_difference. Referenced by set(). ✨
  • unsigned int __gnu_parallel::_Settings::cache_line_size β€” a lil overestimate of the cache line size. It's there to dodge false sharing β€” basically, elements belonging to different threads get kept at least this far apart so they stop fighting over the same cache line 😀. Referenced by __gnu_parallel::__for_each_template_random_access_workstealing(), and set(). πŸ”₯
  • _SequenceIndex __gnu_parallel::_Settings::count_minimal_n β€” minimal input size for count and count_if. Referenced by set(). πŸ’…
  • _SequenceIndex __gnu_parallel::_Settings::fill_minimal_n β€” minimal input size for fill. Referenced by set(). 🌸
  • double __gnu_parallel::_Settings::find_increasing_factor β€” the block size increase factor for find. Referenced by set(). πŸ¦‹
  • _SequenceIndex __gnu_parallel::_Settings::find_initial_block_size β€” the initial block size for find. Referenced by __gnu_parallel::__find_template(), and set(). ⭐
  • _SequenceIndex __gnu_parallel::_Settings::find_maximum_block_size β€” the maximal block size for find. Referenced by set(). 🌈
  • float __gnu_parallel::_Settings::find_scale_factor β€” block size scale-down factor, relative to where you currently are. Referenced by __gnu_parallel::__find_template(), and set(). 🧚
  • _SequenceIndex __gnu_parallel::_Settings::find_sequential_search_size β€” start off by looking for this many elements sequentially, for find. Referenced by __gnu_parallel::__find_template(), __gnu_parallel::__find_template(), and set() (yep, __find_template() is listed twice in the source, that's just how it is, don't @ me πŸ’€). πŸ‘‘
  • _SequenceIndex __gnu_parallel::_Settings::for_each_minimal_n β€” minimal input size for for_each. Referenced by set(). πŸ’œ
  • _SequenceIndex __gnu_parallel::_Settings::generate_minimal_n β€” minimal input size for generate. Referenced by set(). πŸ“
  • unsigned long long __gnu_parallel::_Settings::L1_cache_size β€” the size of the L1 cache in bytes (and it's an *under*estimation, so we're being modest here πŸ₯Ί). Referenced by set(). ✨
  • unsigned long long __gnu_parallel::_Settings::L2_cache_size β€” the size of the L2 cache in bytes (also an underestimation). Referenced by __gnu_parallel::__parallel_random_shuffle_drs(), __gnu_parallel::__sequential_random_shuffle(), and set(). πŸ”₯
  • _SequenceIndex __gnu_parallel::_Settings::max_element_minimal_n β€” minimal input size for max_element. Referenced by set(). πŸŽ€
  • _SequenceIndex __gnu_parallel::_Settings::merge_minimal_n β€” minimal input size for merge. Referenced by set(). 🌸
  • unsigned int __gnu_parallel::_Settings::merge_oversampling β€” the oversampling factor for merge. Referenced by __gnu_parallel::multiway_merge_sampling_splitting(), __gnu_parallel::parallel_multiway_merge(), and set(). πŸ¦‹
  • _SequenceIndex __gnu_parallel::_Settings::min_element_minimal_n β€” minimal input size for min_element. Referenced by set(). ⭐
  • int __gnu_parallel::_Settings::multiway_merge_minimal_k β€” oversampling factor for multiway_merge. Referenced by set(). 🌈
  • _SequenceIndex __gnu_parallel::_Settings::multiway_merge_minimal_n β€” minimal input size for multiway_merge. Referenced by set(). 🧚
  • unsigned int __gnu_parallel::_Settings::multiway_merge_oversampling β€” oversampling factor for multiway_merge. Referenced by set(). πŸ‘‘
  • _SequenceIndex __gnu_parallel::_Settings::nth_element_minimal_n β€” minimal input size for nth_element. Referenced by __gnu_parallel::__parallel_nth_element(), and set(). πŸ’œ
  • _SequenceIndex __gnu_parallel::_Settings::partial_sort_minimal_n β€” minimal input size for partial_sort. Referenced by set(). πŸ“
  • float __gnu_parallel::_Settings::partial_sum_dilation β€” a ratio for partial_sum. It assumes that "sum and write result" is this factor slower than just plain "sum". Referenced by __gnu_parallel::__parallel_partial_sum_linear(), and set(). ✨
  • unsigned int __gnu_parallel::_Settings::partial_sum_minimal_n β€” minimal input size for partial_sum. Referenced by set(). πŸ”₯
  • double __gnu_parallel::_Settings::partition_chunk_share β€” the chunk size for partition, relative to the input size. And listen: if it's > 0.0, this value overrides partition_chunk_size. Main character energy, honestly πŸ’…. Referenced by __gnu_parallel::__parallel_partition(), and set(). πŸŽ€
  • _SequenceIndex __gnu_parallel::_Settings::partition_chunk_size β€” the chunk size for partition. Referenced by __gnu_parallel::__parallel_partition(), and set(). 🌸
  • _SequenceIndex __gnu_parallel::_Settings::partition_minimal_n β€” minimal input size for partition. Referenced by __gnu_parallel::__parallel_nth_element(), and set(). πŸ¦‹
  • _SequenceIndex __gnu_parallel::_Settings::qsb_steals β€” the number of stolen ranges in load-balanced quicksort. Referenced by set(). ⭐
  • unsigned int __gnu_parallel::_Settings::random_shuffle_minimal_n β€” minimal input size for random_shuffle. Referenced by set(). 🌈
  • _SequenceIndex __gnu_parallel::_Settings::replace_minimal_n β€” minimal input size for replace and replace_if. Referenced by set(). 🧚
  • _SequenceIndex __gnu_parallel::_Settings::search_minimal_n β€” minimal input size for search and search_n. Referenced by set(). πŸ‘‘
  • _SequenceIndex __gnu_parallel::_Settings::set_difference_minimal_n β€” minimal input size for set_difference. Referenced by set(). πŸ’œ
  • _SequenceIndex __gnu_parallel::_Settings::set_intersection_minimal_n β€” minimal input size for set_intersection. Referenced by set(). πŸ“
  • _SequenceIndex __gnu_parallel::_Settings::set_symmetric_difference_minimal_n β€” minimal input size for set_symmetric_difference. Referenced by set(). ✨
  • _SequenceIndex __gnu_parallel::_Settings::set_union_minimal_n β€” minimal input size for set_union. Referenced by set(). πŸ”₯
  • _SequenceIndex __gnu_parallel::_Settings::sort_minimal_n β€” minimal input size for parallel sorting. Referenced by set(). πŸŽ€
  • unsigned int __gnu_parallel::_Settings::sort_mwms_oversampling β€” oversampling factor for parallel std::sort (MWMS). Referenced by __gnu_parallel::parallel_sort_mwms(), __gnu_parallel::parallel_sort_mwms_pu(), and set(). 🌸
  • unsigned int __gnu_parallel::_Settings::sort_qs_num_samples_preset β€” take this many samples to go find a good pivot (quicksort). Referenced by set(). πŸ¦‹
  • _SequenceIndex __gnu_parallel::_Settings::sort_qsb_base_case_maximal_n β€” the maximal subsequence __length to switch over to the unbalanced __base case. This one applies to std::sort with dynamically load-balanced quicksort. Referenced by __gnu_parallel::__qsb_local_sort_with_helping(), and set(). ⭐
  • unsigned int __gnu_parallel::_Settings::TLB_size β€” the size of the Translation Lookaside Buffer (underestimation again, humble queen πŸ₯Ί). Referenced by __gnu_parallel::__parallel_random_shuffle_drs(), __gnu_parallel::__sequential_random_shuffle(), and set(). 🌈
  • _SequenceIndex __gnu_parallel::_Settings::transform_minimal_n β€” minimal input size for parallel std::transform. Referenced by set(). 🧚
  • _SequenceIndex __gnu_parallel::_Settings::unique_copy_minimal_n β€” minimal input size for unique_copy. Referenced by set(). πŸ‘‘

πŸ‘‘ Author πŸ‘‘

Generated automatically by Doxygen for libstdc++ from the source code. πŸ’– (yes, the docs literally wrote themselves, and they ate 🍽️)


and that's a wrap on __gnu_para...::_Settings(3), bestie πŸŽ€ that lil footer down there is just the libstdc++ manpage stamp with the page name and its date β€” you made it to the end, so go take a nap, you've earned it βœ¨πŸ’…πŸ«Ά
πŸ“¦ where this page comes from
  • arch rolling: gcc 16.2.1+r23+gd564253eb6c8-1 Β· GPL-3.0-or-later WITH GCC-exception-3.1 AND GFDL-1.3-or-later
  • fedora 44: libstdc++-docs 16.0.1-0.10.fc44 Β· GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel
  • fedora 44: libstdc++-docs 16.2.1-2.fc44
  • fedora 44: libstdc++-docs 16.2.1-3.fc44 Β· GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms