OmniSciDB  c1a53651b2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
BaselineHashTableBuilder.h File Reference
+ Include dependency graph for BaselineHashTableBuilder.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  BaselineJoinHashTableBuilder
 

Functions

template<typename SIZE , class KEY_HANDLER , typename std::enable_if< sizeof(SIZE)==4, SIZE >::type * = nullptr>
int fill_baseline_hash_join_buff (int8_t *hash_buff, const size_t entry_count, const int32_t invalid_slot_val, const bool for_semi_join, const size_t key_component_count, const bool with_val_slot, const KEY_HANDLER *key_handler, const size_t num_elems, const int32_t cpu_thread_idx, const int32_t cpu_thread_count)
 
template<typename SIZE , class KEY_HANDLER , typename std::enable_if< sizeof(SIZE)==4, SIZE >::type * = nullptr>
void fill_baseline_hash_join_buff_on_device (int8_t *hash_buff, const size_t entry_count, const int32_t invalid_slot_val, const bool for_semi_join, const size_t key_component_count, const bool with_val_slot, int *dev_err_buff, const KEY_HANDLER *key_handler, const size_t num_elems)
 
template<typename SIZE , class KEY_HANDLER , typename std::enable_if< sizeof(SIZE)==4, SIZE >::type * = nullptr>
void fill_one_to_many_baseline_hash_table_on_device (int32_t *buff, const SIZE *composite_key_dict, const size_t hash_entry_count, const size_t key_component_count, const KEY_HANDLER *key_handler, const size_t num_elems, const bool for_window_framing)
 

Function Documentation

template<typename SIZE , class KEY_HANDLER , typename std::enable_if< sizeof(SIZE)==4, SIZE >::type * = nullptr>
int fill_baseline_hash_join_buff ( int8_t *  hash_buff,
const size_t  entry_count,
const int32_t  invalid_slot_val,
const bool  for_semi_join,
const size_t  key_component_count,
const bool  with_val_slot,
const KEY_HANDLER *  key_handler,
const size_t  num_elems,
const int32_t  cpu_thread_idx,
const int32_t  cpu_thread_count 
)

Definition at line 30 of file BaselineHashTableBuilder.h.

References DEBUG_TIMER, fill_baseline_hash_join_buff_32(), overlaps_fill_baseline_hash_join_buff_32(), and range_fill_baseline_hash_join_buff_32().

Referenced by fill_baseline_hash_join_buff_wrapper().

39  {
40  auto timer = DEBUG_TIMER(__func__);
41  if constexpr (std::is_same<KEY_HANDLER, GenericKeyHandler>::value) {
42  return fill_baseline_hash_join_buff_32(hash_buff,
43  entry_count,
44  invalid_slot_val,
45  for_semi_join,
46  key_component_count,
47  with_val_slot,
48  key_handler,
49  num_elems,
50  cpu_thread_idx,
51  cpu_thread_count);
52  } else if constexpr (std::is_same<KEY_HANDLER, RangeKeyHandler>::value) {
54  entry_count,
55  invalid_slot_val,
56  key_component_count,
57  with_val_slot,
58  key_handler,
59  num_elems,
60  cpu_thread_idx,
61  cpu_thread_count);
62  } else {
63  static_assert(std::is_same<KEY_HANDLER, OverlapsKeyHandler>::value,
64  "Only Generic, Overlaps, and Range Key Handlers are supported.");
66  entry_count,
67  invalid_slot_val,
68  key_component_count,
69  with_val_slot,
70  key_handler,
71  num_elems,
72  cpu_thread_idx,
73  cpu_thread_count);
74  }
75 }
int range_fill_baseline_hash_join_buff_32(int8_t *hash_buff, const size_t entry_count, const int32_t invalid_slot_val, const size_t key_component_count, const bool with_val_slot, const RangeKeyHandler *key_handler, const size_t num_elems, const int32_t cpu_thread_idx, const int32_t cpu_thread_count)
int overlaps_fill_baseline_hash_join_buff_32(int8_t *hash_buff, const int64_t entry_count, const int32_t invalid_slot_val, const size_t key_component_count, const bool with_val_slot, const OverlapsKeyHandler *key_handler, const int64_t num_elems, const int32_t cpu_thread_idx, const int32_t cpu_thread_count)
#define DEBUG_TIMER(name)
Definition: Logger.h:411
int fill_baseline_hash_join_buff_32(int8_t *hash_buff, const int64_t entry_count, const int32_t invalid_slot_val, const bool for_semi_join, const size_t key_component_count, const bool with_val_slot, const GenericKeyHandler *key_handler, const int64_t num_elems, const int32_t cpu_thread_idx, const int32_t cpu_thread_count)

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

template<typename SIZE , class KEY_HANDLER , typename std::enable_if< sizeof(SIZE)==4, SIZE >::type * = nullptr>
void fill_baseline_hash_join_buff_on_device ( int8_t *  hash_buff,
const size_t  entry_count,
const int32_t  invalid_slot_val,
const bool  for_semi_join,
const size_t  key_component_count,
const bool  with_val_slot,
int *  dev_err_buff,
const KEY_HANDLER *  key_handler,
const size_t  num_elems 
)

Definition at line 130 of file BaselineHashTableBuilder.h.

References DEBUG_TIMER, logger::FATAL, fill_baseline_hash_join_buff_on_device_32(), LOG, and UNREACHABLE.

138  {
139  auto timer = DEBUG_TIMER(__func__);
140  if constexpr (std::is_same<KEY_HANDLER, GenericKeyHandler>::value) {
142  entry_count,
143  invalid_slot_val,
144  for_semi_join,
145  key_component_count,
146  with_val_slot,
147  dev_err_buff,
148  key_handler,
149  num_elems);
150  } else if constexpr (std::is_same<KEY_HANDLER, RangeKeyHandler>::value) {
151  UNREACHABLE();
152  } else {
153  static_assert(std::is_same<KEY_HANDLER, OverlapsKeyHandler>::value,
154  "Only Generic, Overlaps, and Range Key Handlers are supported.");
155  LOG(FATAL) << "32-bit keys not yet supported for overlaps join.";
156  }
157 }
#define LOG(tag)
Definition: Logger.h:285
void fill_baseline_hash_join_buff_on_device_32(int8_t *hash_buff, const int64_t entry_count, const int32_t invalid_slot_val, const bool for_semi_join, const size_t key_component_count, const bool with_val_slot, int *dev_err_buff, const GenericKeyHandler *key_handler, const int64_t num_elems)
#define UNREACHABLE()
Definition: Logger.h:337
#define DEBUG_TIMER(name)
Definition: Logger.h:411

+ Here is the call graph for this function:

template<typename SIZE , class KEY_HANDLER , typename std::enable_if< sizeof(SIZE)==4, SIZE >::type * = nullptr>
void fill_one_to_many_baseline_hash_table_on_device ( int32_t *  buff,
const SIZE *  composite_key_dict,
const size_t  hash_entry_count,
const size_t  key_component_count,
const KEY_HANDLER *  key_handler,
const size_t  num_elems,
const bool  for_window_framing 
)

Definition at line 208 of file BaselineHashTableBuilder.h.

References DEBUG_TIMER, logger::FATAL, fill_one_to_many_baseline_hash_table_on_device_32(), and LOG.

214  {
215  auto timer = DEBUG_TIMER(__func__);
216  if constexpr (std::is_same<KEY_HANDLER, GenericKeyHandler>::value) {
218  composite_key_dict,
219  hash_entry_count,
220  key_component_count,
221  key_handler,
222  num_elems,
223  for_window_framing);
224  } else {
225  static_assert(std::is_same<KEY_HANDLER, OverlapsKeyHandler>::value ||
226  std::is_same<KEY_HANDLER, RangeKeyHandler>::value,
227  "Only Generic, Overlaps, and Range Key Handlers are supported.");
228  LOG(FATAL) << "32-bit keys not yet supported for overlaps join.";
229  }
230 }
#define LOG(tag)
Definition: Logger.h:285
void fill_one_to_many_baseline_hash_table_on_device_32(int32_t *buff, const int32_t *composite_key_dict, const int64_t hash_entry_count, const size_t key_component_count, const GenericKeyHandler *key_handler, const int64_t num_elems, const bool for_window_framing)
#define DEBUG_TIMER(name)
Definition: Logger.h:411

+ Here is the call graph for this function: