OmniSciDB  94e8789169
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner Struct Reference

Public Member Functions

 BucketSizeTuner (const double bucket_threshold, const double step, const double min_threshold)
 
bool operator() (const std::vector< double > last_iteration_bucket_sizes)
 
std::vector< double > computeBucketSizes (const Data_Namespace::MemoryLevel effective_memory_level, std::vector< ColumnsForDevice > &columns_per_device, const std::vector< InnerOuter > &inner_outer_pairs, const size_t device_count, const Executor *executor)
 

Public Attributes

double bucket_threshold
 
size_t num_steps {0}
 
const double step
 
const double min_threshold
 
std::vector< double > previous_bucket_sizes
 

Detailed Description

Definition at line 186 of file OverlapsJoinHashTable.cpp.

Constructor & Destructor Documentation

anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::BucketSizeTuner ( const double  bucket_threshold,
const double  step,
const double  min_threshold 
)
inline

Member Function Documentation

std::vector<double> anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::computeBucketSizes ( const Data_Namespace::MemoryLevel  effective_memory_level,
std::vector< ColumnsForDevice > &  columns_per_device,
const std::vector< InnerOuter > &  inner_outer_pairs,
const size_t  device_count,
const Executor executor 
)
inline

Definition at line 210 of file OverlapsJoinHashTable.cpp.

References CHECK, and anonymous_namespace{OverlapsJoinHashTable.cpp}::compute_bucket_sizes().

215  {
216  // compute bucket info for the current threshold value
217  CHECK(!columns_per_device.empty());
218  std::vector<double> bucket_sizes_for_dimension;
219  compute_bucket_sizes(bucket_sizes_for_dimension,
221  effective_memory_level,
222  columns_per_device.front().join_columns[0],
223  columns_per_device.front().join_column_types[0],
224  inner_outer_pairs,
225  executor);
226  return bucket_sizes_for_dimension;
227  }
#define CHECK(condition)
Definition: Logger.h:197
void compute_bucket_sizes(std::vector< double > &bucket_sizes_for_dimension, const double bucket_threshold, const Data_Namespace::MemoryLevel effective_memory_level, const JoinColumn &join_column, const JoinColumnTypeInfo &join_column_type, const std::vector< InnerOuter > &inner_outer_pairs, const Executor *executor)

+ Here is the call graph for this function:

bool anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::operator() ( const std::vector< double >  last_iteration_bucket_sizes)
inline

Definition at line 194 of file OverlapsJoinHashTable.cpp.

References VLOG.

194  {
196  if (!last_iteration_bucket_sizes.empty() &&
197  last_iteration_bucket_sizes == previous_bucket_sizes) {
198  // abort the tuning if the bucket size does not change. note that this will always
199  // run at least two steps, as the first step will have no computed bucket sizes
200  VLOG(1) << "Aborting overlaps tuning as bucket size is no longer changing.";
201  return false;
202  }
203  num_steps++;
204 
205  previous_bucket_sizes = last_iteration_bucket_sizes;
206 
208  }
#define VLOG(n)
Definition: Logger.h:291

Member Data Documentation

double anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::bucket_threshold
const double anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::min_threshold
size_t anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::num_steps {0}
std::vector<double> anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::previous_bucket_sizes

Definition at line 234 of file OverlapsJoinHashTable.cpp.

const double anonymous_namespace{OverlapsJoinHashTable.cpp}::BucketSizeTuner::step

The documentation for this struct was generated from the following file: