TPIE

11a2c2d
tpie::merge_sorter_base Class Reference

Inherited by tpie::merge_sorter< T, UseProgress, pred_t, store_t >.

Public Member Functions

 merge_sorter_base (linear_memory_usage fanout_memory_usage, memory_size_type item_size, memory_size_type element_file_stream_memory_usage)
 
void set_parameters (memory_size_type runLength, memory_size_type fanout)
 Enable setting run length and fanout manually (for testing purposes). More...
 
void set_available_files (memory_size_type f)
 Calculate parameters from given amount of files. More...
 
void set_available_files (memory_size_type f1, memory_size_type f2, memory_size_type f3)
 Calculate parameters from given amount of files. More...
 
void set_available_memory (memory_size_type m)
 Calculate parameters from given memory amount. More...
 
void set_available_memory (memory_size_type m1, memory_size_type m2, memory_size_type m3)
 Calculate parameters from given memory amount. More...
 
stream_size_type item_count ()
 
memory_size_type evacuated_memory_usage () const
 
void set_items (stream_size_type n)
 Set upper bound on number of items pushed. More...
 
void set_owner (tpie::pipelining::node *n)
 
void set_phase_1_files (memory_size_type f1)
 
void set_phase_2_files (memory_size_type f2)
 
void set_phase_3_files (memory_size_type f3)
 
void set_phase_1_memory (memory_size_type m1)
 
void set_phase_2_memory (memory_size_type m2)
 
void set_phase_3_memory (memory_size_type m3)
 
bool is_calc_free () const
 
memory_size_type minimum_memory_phase_1 () noexcept
 
memory_size_type minimum_memory_phase_2 () noexcept
 
memory_size_type minimum_memory_phase_3 () noexcept
 
memory_size_type maximum_memory_phase_3 () noexcept
 
memory_size_type phase_1_memory (const sort_parameters &params) noexcept
 
memory_size_type phase_2_memory (const sort_parameters &params) noexcept
 
memory_size_type phase_3_memory (const sort_parameters &params) noexcept
 
memory_size_type calculate_fanout (memory_size_type availableMemory, memory_size_type availableFiles) noexcept
 calculate_parameters helper More...
 

Static Public Attributes

static const memory_size_type defaultFiles = 253
 
static const memory_size_type minimumFilesPhase1 = 1
 
static const memory_size_type maximumFilesPhase1 = 1
 
static const memory_size_type minimumFilesPhase2 = 5
 
static const memory_size_type maximumFilesPhase2 = std::numeric_limits<memory_size_type>::max()
 
static const memory_size_type minimumFilesPhase3 = 5
 
static const memory_size_type maximumFilesPhase3 = std::numeric_limits<memory_size_type>::max()
 

Protected Types

enum  state_type { stNotStarted, stRunFormation, stMerge, stReport }
 

Protected Member Functions

void calculate_parameters ()
 Calculate parameters from given memory amount. More...
 
void check_not_started ()
 

Static Protected Member Functions

static stream_size_type calculate_run_length (stream_size_type initialRunLength, memory_size_type fanout, memory_size_type mergeLevel)
 initialize_merger helper. More...
 

Protected Attributes

const linear_memory_usage m_fanout_memory_usage
 
const memory_size_type m_item_size
 
const memory_size_type m_element_file_stream_memory_usage
 
std::unique_ptr< memory_bucketm_bucketPtr
 
memory_bucket_ref m_bucket
 
array< temp_filem_runFiles
 
state_type m_state
 
sort_parameters p
 
bool m_parametersSet
 
bits::run_positions m_runPositions
 
stream_size_type m_finishedRuns
 
memory_size_type m_currentRunItemCount
 
bool m_reportInternal
 
memory_size_type m_itemsPulled
 
stream_size_type m_itemCount
 
stream_size_type m_maxItems
 
bool m_evacuated
 
bool m_finalMergeInitialized
 
memory_size_type m_finalMergeLevel
 
memory_size_type m_finalRunCount
 
memory_size_type m_finalMergeSpecialRunNumber
 
tpie::pipelining::nodem_owning_node
 

Detailed Description

Definition at line 138 of file merge_sorter.h.

Member Function Documentation

◆ calculate_fanout()

memory_size_type tpie::merge_sorter_base::calculate_fanout ( memory_size_type  availableMemory,
memory_size_type  availableFiles 
)
noexcept

calculate_parameters helper

◆ calculate_parameters()

void tpie::merge_sorter_base::calculate_parameters ( )
protected

Calculate parameters from given memory amount.

Referenced by tpie::merge_sorter< T, UseProgress, pred_t, store_t >::begin().

◆ calculate_run_length()

static stream_size_type tpie::merge_sorter_base::calculate_run_length ( stream_size_type  initialRunLength,
memory_size_type  fanout,
memory_size_type  mergeLevel 
)
inlinestaticprotected

initialize_merger helper.

Definition at line 324 of file merge_sorter.h.

324  {
325  stream_size_type runLength = initialRunLength;
326  for (memory_size_type i = 0; i < mergeLevel; ++i) {
327  runLength *= fanout;
328  }
329  return runLength;
330  }

◆ set_available_files() [1/2]

void tpie::merge_sorter_base::set_available_files ( memory_size_type  f)
inline

Calculate parameters from given amount of files.

Parameters
fFiles available for phase 1, 2 and 3

Definition at line 163 of file merge_sorter.h.

163  {
164  p.filesPhase1 = p.filesPhase2 = p.filesPhase3 = f;
165  check_not_started();
166  }

◆ set_available_files() [2/2]

void tpie::merge_sorter_base::set_available_files ( memory_size_type  f1,
memory_size_type  f2,
memory_size_type  f3 
)
inline

Calculate parameters from given amount of files.

Parameters
f1Files available for phase 1
f2Files available for phase 2
f3Files available for phase 3

Definition at line 174 of file merge_sorter.h.

174  {
175  p.filesPhase1 = f1;
176  p.filesPhase2 = f2;
177  p.filesPhase3 = f3;
178  check_not_started();
179  }

◆ set_available_memory() [1/2]

void tpie::merge_sorter_base::set_available_memory ( memory_size_type  m)
inline

Calculate parameters from given memory amount.

Parameters
mMemory available for phase 1, 2 and 3

Definition at line 185 of file merge_sorter.h.

185  {
186  p.memoryPhase1 = p.memoryPhase2 = p.memoryPhase3 = m;
187  check_not_started();
188  }

◆ set_available_memory() [2/2]

void tpie::merge_sorter_base::set_available_memory ( memory_size_type  m1,
memory_size_type  m2,
memory_size_type  m3 
)
inline

Calculate parameters from given memory amount.

Parameters
m1Memory available for phase 1
m2Memory available for phase 2
m3Memory available for phase 3

Definition at line 196 of file merge_sorter.h.

196  {
197  p.memoryPhase1 = m1;
198  p.memoryPhase2 = m2;
199  p.memoryPhase3 = m3;
200  check_not_started();
201  }

◆ set_items()

void tpie::merge_sorter_base::set_items ( stream_size_type  n)

Set upper bound on number of items pushed.

If the number of items to push is less than the size of a single run, this method will decrease the run size to that. This may make it easier for the sorter to go into internal reporting mode.

◆ set_parameters()

void tpie::merge_sorter_base::set_parameters ( memory_size_type  runLength,
memory_size_type  fanout 
)

Enable setting run length and fanout manually (for testing purposes).


The documentation for this class was generated from the following file:
tpie::sort_parameters::memoryPhase1
memory_size_type memoryPhase1
memory available while forming sorted runs.
Definition: sort_parameters.h:32
tpie::sort_parameters::filesPhase1
memory_size_type filesPhase1
files available while forming sorted runs.
Definition: sort_parameters.h:30
tpie::sort_parameters::memoryPhase2
memory_size_type memoryPhase2
Memory available while merging runs.
Definition: sort_parameters.h:36
tpie::sort_parameters::memoryPhase3
memory_size_type memoryPhase3
Memory available during output phase.
Definition: sort_parameters.h:40
tpie::sort_parameters::filesPhase3
memory_size_type filesPhase3
files available during output phase.
Definition: sort_parameters.h:38
tpie::sort_parameters::filesPhase2
memory_size_type filesPhase2
files available while merging runs.
Definition: sort_parameters.h:34