#include <sort_hist.H>
Public Member Functions | |
Histogram (SortComm *env, key_type min, key_type max) | |
void | set_limits (key_type min, key_type max) |
int * | mws_sdispl (key_type *, int nloc, MPI_Comm c, float margin) |
Private Member Functions | |
splitter * | mws_private (key_type *, int, MPI_Comm) |
void | Init (MPI_Comm a_comm, const int a_nloc, float) |
void | RefineProbes (std::vector< index_type > &) |
key_type * | get_splitter_guesses (int *ptr_num_guesses, std::vector< splitter * > active_splitters) |
Private Attributes | |
key_type | m_min_key |
key_type | m_max_key |
const int | m_num_pes |
const int | m_my_pe |
int | m_num_steps |
int | m_ncalls |
int | m_num_achv |
int | m_probe_size |
int | m_probe_size_max |
int | m_margin_error |
splitter * | m_splitters |
index_type | m_num_total_keys |
key_type * | m_last_probe |
References m_last_probe, m_num_pes, m_probe_size, m_probe_size_max, and m_splitters.
int * Histogram::mws_sdispl | ( | key_type * | a_keys, | |
int | nloc, | |||
MPI_Comm | c, | |||
float | margin | |||
) |
References Init(), m_num_pes, and mws_private().
References CH_assert, m_last_probe, m_max_key, m_my_pe, m_num_achv, m_num_pes, m_num_steps, m_probe_size, m_splitters, and RefineProbes().
Referenced by mws_sdispl().
void Histogram::Init | ( | MPI_Comm | a_comm, | |
const int | a_nloc, | |||
float | a_margin | |||
) | [private] |
References splitter::achieved, splitter::broadcasted, CH_assert, splitter::goal, splitter::lowerb_count, splitter::lowerb_key, m_last_probe, m_margin_error, m_max_key, m_min_key, m_ncalls, m_num_achv, m_num_pes, m_num_steps, m_num_total_keys, m_probe_size, m_splitters, splitter::upperb_count, and splitter::upperb_key.
Referenced by mws_sdispl().
void Histogram::RefineProbes | ( | std::vector< index_type > & | histogram | ) | [private] |
if first step, initialize total length and splitter goals
logic for determining which splitters have been achieved and bounding the rest by the closest counts and splitter-guesses this code needs at least some comments or something
send the resolved ranges
References splitter::achieved, splitter::broadcasted, resolved_range::chare_dest, get_splitter_guesses(), splitter::goal, resolved_range::lowerb, splitter::lowerb_count, splitter::lowerb_key, m_last_probe, m_margin_error, m_max_key, m_min_key, m_num_achv, m_num_pes, m_num_steps, m_num_total_keys, m_probe_size, m_splitters, probe::num_keys, probe::num_ranges, probe::send_info, probe::splitter_guesses, resolved_range::total, resolved_range::upperb, splitter::upperb_count, and splitter::upperb_key.
Referenced by mws_private().
key_type * Histogram::get_splitter_guesses | ( | int * | ptr_num_guesses, | |
std::vector< splitter * > | active_splitters | |||
) | [private] |
figure out how much oversplitting we can do
define a new probe
Create guesses out of unresolved splitters
we first figure out how many guesses to place in the range, now we place them
References m_probe_size, m_probe_size_max, and min().
Referenced by RefineProbes().
key_type Histogram::m_min_key [private] |
Referenced by Init(), RefineProbes(), and set_limits().
key_type Histogram::m_max_key [private] |
Referenced by Init(), mws_private(), RefineProbes(), and set_limits().
const int Histogram::m_num_pes [private] |
Referenced by Histogram(), Init(), mws_private(), mws_sdispl(), and RefineProbes().
const int Histogram::m_my_pe [private] |
Referenced by mws_private().
int Histogram::m_num_steps [private] |
Referenced by Init(), mws_private(), and RefineProbes().
int Histogram::m_ncalls [private] |
Referenced by Init().
int Histogram::m_num_achv [private] |
Referenced by Init(), mws_private(), and RefineProbes().
int Histogram::m_probe_size [private] |
Referenced by get_splitter_guesses(), Histogram(), Init(), mws_private(), and RefineProbes().
int Histogram::m_probe_size_max [private] |
Referenced by get_splitter_guesses(), and Histogram().
int Histogram::m_margin_error [private] |
Referenced by Init(), and RefineProbes().
splitter* Histogram::m_splitters [private] |
Referenced by Histogram(), Init(), mws_private(), and RefineProbes().
index_type Histogram::m_num_total_keys [private] |
Referenced by Init(), and RefineProbes().
key_type* Histogram::m_last_probe [private] |
Referenced by Histogram(), Init(), mws_private(), and RefineProbes().