STXXL
1.4-dev
|
#include <vector>
#include <iterator>
#include <algorithm>
#include <stxxl/bits/verbose.h>
#include <stxxl/bits/common/is_sorted.h>
#include <stxxl/bits/common/utils.h>
#include <stxxl/bits/parallel/merge.h>
#include <stxxl/bits/parallel/losertree.h>
#include <stxxl/bits/parallel/settings.h>
#include <stxxl/bits/parallel/equally_split.h>
#include <stxxl/bits/parallel/multiseq_selection.h>
#include <stxxl/bits/parallel/timing.h>
#include <stxxl/bits/parallel/tags.h>
Go to the source code of this file.
Namespaces | |
stxxl | |
STXXL library namespace | |
stxxl::parallel | |
Macros | |
#define | POS(i) seqs_begin[(i)].first |
#define | STOPS(i) seqs_begin[(i)].second |
#define | STXXL_DECISION(a, b, c, d) |
#define | STXXL_MERGE3CASE(a, b, c, c0, c1) |
#define | STXXL_MERGE4CASE(a, b, c, d, c0, c1, c2) |
#define | STXXL_NO_POINTER(T) |
#define | STXXL_NO_POINTER_UNGUARDED(T) |
Functions | |
template<typename RandomAccessIteratorPair > | |
std::iterator_traits< typename RandomAccessIteratorPair::first_type > ::difference_type | stxxl::parallel::iterpair_size (const RandomAccessIteratorPair &p) |
Length of a sequence described by a pair of iterators. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_3_combined (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
template<template< typename RAI, typename C > class Iterator, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_3_variant (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
Highly efficient 3-way merging procedure. More... | |
template<typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_4_combined (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
template<template< typename RAI, typename C > class iterator, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_4_variant (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
Highly efficient 4-way merging procedure. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_bubble (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
Basic multi-way merging procedure. More... | |
template<typename LoserTreeType , typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_loser_tree (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
Multi-way merging procedure for a high branching factor, guarded case. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_loser_tree_combined (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
template<bool Stable, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_loser_tree_sentinel (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
template<typename LoserTreeType , typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::multiway_merge_loser_tree_unguarded (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
Multi-way merging procedure for a high branching factor, unguarded case. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename DiffType , typename Comparator > | |
void | stxxl::parallel::parallel_multiway_merge_exact_splitting (const RandomAccessIteratorIterator &seqs_begin, const RandomAccessIteratorIterator &seqs_end, DiffType length, DiffType total_length, Comparator comp, std::vector< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type > *chunks, const thread_index_t num_threads) |
Splitting method for parallel multi-way merge routine: use multisequence selection for exact splitting. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename DiffType , typename Comparator > | |
void | stxxl::parallel::parallel_multiway_merge_sampling_splitting (const RandomAccessIteratorIterator &seqs_begin, const RandomAccessIteratorIterator &seqs_end, DiffType length, DiffType total_length, Comparator comp, std::vector< typename std::iterator_traits< RandomAccessIteratorIterator >::value_type > *chunks, const thread_index_t num_threads) |
Splitting method for parallel multi-way merge routine: use sampling and binary search for in-exact splitting. More... | |
template<bool Stable, typename RandomAccessIteratorIterator , typename Comparator > | |
std::iterator_traits< typename std::iterator_traits < RandomAccessIteratorIterator > ::value_type::first_type > ::difference_type | stxxl::parallel::prepare_unguarded (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, Comparator comp, int &min_sequence) |
Prepare a set of sequences to be merged without a (end) guard. More... | |
template<typename RandomAccessIteratorIterator , typename Comparator > | |
std::iterator_traits< typename std::iterator_traits < RandomAccessIteratorIterator > ::value_type::first_type > ::difference_type | stxxl::parallel::prepare_unguarded_sentinel (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, Comparator comp) |
Prepare a set of sequences to be merged with a (end) guard (sentinel) More... | |
template<bool Stable, bool Sentinels, typename RandomAccessIteratorIterator , typename RandomAccessIterator3 , typename DiffType , typename Comparator > | |
RandomAccessIterator3 | stxxl::parallel::sequential_multiway_merge (RandomAccessIteratorIterator seqs_begin, RandomAccessIteratorIterator seqs_end, RandomAccessIterator3 target, DiffType length, Comparator comp) |
Sequential multi-way merging switch. More... | |
#define POS | ( | i | ) | seqs_begin[(i)].first |
Referenced by stxxl::parallel::multiway_merge_bubble().
#define STOPS | ( | i | ) | seqs_begin[(i)].second |
Referenced by stxxl::parallel::multiway_merge_bubble().
#define STXXL_DECISION | ( | a, | |
b, | |||
c, | |||
d | |||
) |
Referenced by stxxl::parallel::multiway_merge_4_variant().
#define STXXL_MERGE3CASE | ( | a, | |
b, | |||
c, | |||
c0, | |||
c1 | |||
) |
Referenced by stxxl::parallel::multiway_merge_3_variant().
#define STXXL_MERGE4CASE | ( | a, | |
b, | |||
c, | |||
d, | |||
c0, | |||
c1, | |||
c2 | |||
) |
Referenced by stxxl::parallel::multiway_merge_4_variant().
#define STXXL_NO_POINTER | ( | T | ) |
Definition at line 1079 of file multiway_merge.h.
#define STXXL_NO_POINTER_UNGUARDED | ( | T | ) |
Definition at line 1106 of file multiway_merge.h.