OmniSciDB  91042dcc5b
 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 int32_t invalid_slot_val, const size_t key_component_count, const KEY_HANDLER *key_handler, const size_t num_elems)
 

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 29 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().

38  {
39  auto timer = DEBUG_TIMER(__func__);
40  if constexpr (std::is_same<KEY_HANDLER, GenericKeyHandler>::value) {
41  return fill_baseline_hash_join_buff_32(hash_buff,
42  entry_count,
43  invalid_slot_val,
44  for_semi_join,
45  key_component_count,
46  with_val_slot,
47  key_handler,
48  num_elems,
49  cpu_thread_idx,
50  cpu_thread_count);
51  } else if constexpr (std::is_same<KEY_HANDLER, RangeKeyHandler>::value) {
53  entry_count,
54  invalid_slot_val,
55  key_component_count,
56  with_val_slot,
57  key_handler,
58  num_elems,
59  cpu_thread_idx,
60  cpu_thread_count);
61  } else {
62  static_assert(std::is_same<KEY_HANDLER, OverlapsKeyHandler>::value,
63  "Only Generic, Overlaps, and Range Key Handlers are supported.");
65  entry_count,
66  invalid_slot_val,
67  key_component_count,
68  with_val_slot,
69  key_handler,
70  num_elems,
71  cpu_thread_idx,
72  cpu_thread_count);
73  }
74 }
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:358
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 129 of file BaselineHashTableBuilder.h.

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

137  {
138  auto timer = DEBUG_TIMER(__func__);
139  if constexpr (std::is_same<KEY_HANDLER, GenericKeyHandler>::value) {
141  entry_count,
142  invalid_slot_val,
143  for_semi_join,
144  key_component_count,
145  with_val_slot,
146  dev_err_buff,
147  key_handler,
148  num_elems);
149  } else if constexpr (std::is_same<KEY_HANDLER, RangeKeyHandler>::value) {
150  UNREACHABLE();
151  } else {
152  static_assert(std::is_same<KEY_HANDLER, OverlapsKeyHandler>::value,
153  "Only Generic, Overlaps, and Range Key Handlers are supported.");
154  LOG(FATAL) << "32-bit keys not yet supported for overlaps join.";
155  }
156 }
#define LOG(tag)
Definition: Logger.h:205
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:255
#define DEBUG_TIMER(name)
Definition: Logger.h:358

+ 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 int32_t  invalid_slot_val,
const size_t  key_component_count,
const KEY_HANDLER *  key_handler,
const size_t  num_elems 
)

Definition at line 207 of file BaselineHashTableBuilder.h.

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

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

+ Here is the call graph for this function: