GENIE
interface.h
Go to the documentation of this file.
1 
5 #ifndef INTERFACE_H_
6 #define INTERFACE_H_
7 
8 #include <vector>
9 #include <string>
10 
12 #include <genie/configure.h>
14 #include <genie/query/query.h>
15 #include <genie/table/inv_table.h>
17 
20 #define GPUGENIE_DEFAULT_TOPK 10
21 
23 #define GPUGENIE_DEFAULT_RADIUS 0
24 
26 #define GPUGENIE_DEFAULT_THRESHOLD 0
27 
29 #define GPUGENIE_DEFAULT_HASHTABLE_SIZE 1.0f
30 
32 #define GPUGENIE_DEFAULT_WEIGHT 1
33 
35 #define GPUGENIE_DEFAULT_DEVICE 0
36 
38 #define GPUGENIE_DEFAULT_USE_ADAPTIVE_RANGE false
39 
41 #define GPUGENIE_DEFAULT_SELECTIVITY -1.0f
42 
44 #define GPUGENIE_DEFAULT_POSTING_LIST_LENGTH 100000
45 
47 #define GPUGENIE_DEFAULT_LOAD_MULTIPLIER 3.0f
48 
50 #define GPUGENIE_DEFAULT_USE_LOAD_BALANCE false
51 
53 #define GPUGENIE_DEFAULT_USE_MULTIRANGE true
54 
56 #define GPUGENIE_DEFAULT_NUM_OF_QUERIES 0
57 
58 
59 namespace genie
60 {
61 namespace original
62 {
63 
71 typedef struct _GPUGenie_Config
72 {
78  int dim;
80  float selectivity;
81  std::vector<std::vector<int> > * data_points;
83  int *data;
84  unsigned int *index;
85  unsigned int item_num;
86  unsigned int row_num;
89  int data_type;
90  unsigned int max_data_size;
91  bool save_to_gpu;
93  std::vector<std::vector<int> > * query_points;
94  std::vector<genie::utility::attr_t> * multirange_query_points;
96  float multiplier;
105  unsigned int num_of_iteration;
109 
111  num_of_topk(GPUGENIE_DEFAULT_TOPK),
112  query_radius(GPUGENIE_DEFAULT_RADIUS),
113  count_threshold(GPUGENIE_DEFAULT_THRESHOLD),
114  hashtable_size(GPUGENIE_DEFAULT_HASHTABLE_SIZE),
115  use_device(GPUGENIE_DEFAULT_DEVICE),
116  dim(0),
117  use_adaptive_range(GPUGENIE_DEFAULT_USE_ADAPTIVE_RANGE),
118  selectivity(GPUGENIE_DEFAULT_SELECTIVITY),
119  data_points(NULL), data(NULL), index(NULL),
120  item_num(0), row_num(0), search_type(0),
121  data_type(0), max_data_size(0), save_to_gpu(false),
122  query_points(NULL), multirange_query_points(NULL),
123  posting_list_max_length(GPUGENIE_DEFAULT_POSTING_LIST_LENGTH),
125  use_load_balance(GPUGENIE_DEFAULT_USE_LOAD_BALANCE),
126  use_multirange(GPUGENIE_DEFAULT_USE_MULTIRANGE),
127  num_of_queries(GPUGENIE_DEFAULT_NUM_OF_QUERIES),
128  use_subsequence_search(false),
129  data_gram_length(3), num_of_iteration(1),
130  compression(genie::compression::DEFAULT_COMPRESSION_TYPE){}
131 
133  num_of_topk(config.num_of_topk),
134  query_radius(config.query_radius),
135  count_threshold(config.count_threshold),
136  hashtable_size(config.hashtable_size),
137  use_device(config.use_device),
138  dim(config.dim), use_adaptive_range(config.use_adaptive_range),
139  selectivity(config.selectivity),
140  data_points(config.data_points),
141  data(config.data), index(config.index),
142  item_num(config.item_num), row_num(config.row_num),
143  search_type(config.search_type),
144  data_type(config.data_type),
145  max_data_size(config.max_data_size),
146  save_to_gpu(config.save_to_gpu),
147  query_points(config.query_points),
148  multirange_query_points(config.multirange_query_points),
149  posting_list_max_length(config.posting_list_max_length),
150  multiplier(config.multiplier),
151  use_load_balance(config.use_load_balance),
152  use_multirange(config.use_multirange),
153  num_of_queries(config.num_of_queries),
154  use_subsequence_search(config.use_subsequence_search),
155  data_gram_length(config.data_gram_length),
156  num_of_iteration(config.num_of_iteration),
157  compression(config.compression){}
158 
159 
161 
162 
163 
164 
165 
166 
167 
182 
194 void knn_search_after_preprocess(GPUGenie_Config& config, genie::table::inv_table * &_table, std::vector<int>& result, std::vector<int>& result_count);
195 
205 void knn_search(std::vector<int>& result, std::vector<int>& result_count, GPUGenie_Config& config);
206 
215 void knn_search(std::vector<int>& result, GPUGenie_Config& config);
216 
227 void knn_search(genie::table::inv_table& table, std::vector<genie::query::Query>& queries,
228  std::vector<int>& h_topk, std::vector<int>& h_topk_count, GPUGenie_Config& config);
229 
230 /* Multi table search */
231 void knn_search_MT(std::vector<genie::table::inv_table*>& table,std::vector<std::vector<genie::query::Query>>& queries,
232  std::vector<std::vector<int> >& h_topk, std::vector<std::vector<int> >& h_topk_count, std::vector<GPUGenie_Config>& config);
233 
244 void knn_search_for_csv_data(std::vector<int>& result, std::vector<int>& result_count, GPUGenie_Config& config);
245 
246 
254 void load_table(genie::table::inv_table& table, std::vector<std::vector<int> >& data_points, GPUGenie_Config& config);
255 
266 void load_query(genie::table::inv_table& table, std::vector<genie::query::Query>& queries, GPUGenie_Config& config);
267 
275 void load_query_singlerange(genie::table::inv_table& table, std::vector<genie::query::Query>& queries, GPUGenie_Config& config);
276 
284 void load_query_multirange(genie::table::inv_table& table, std::vector<genie::query::Query>& queries, GPUGenie_Config& config);
285 
295 void load_table_bijectMap(genie::table::inv_table& table, std::vector<std::vector<int> >& data_points, GPUGenie_Config& config);
296 
310 void load_table(genie::table::inv_table& table, int *data, unsigned int item_num,
311  unsigned int *index, unsigned int row_num, GPUGenie_Config& config);
312 
326 void load_table_bijectMap(genie::table::inv_table& table, int *data, unsigned int item_num,
327  unsigned int *index, unsigned int row_num, GPUGenie_Config& config);
328 
329 
330 
338 void load_table_sequence(genie::table::inv_table& table, std::vector<std::vector<int> >& data_points, GPUGenie_Config& config);
339 
340 
349 void load_query_sequence(genie::table::inv_table& table, std::vector<genie::query::Query>& queries, GPUGenie_Config& config);
350 
359 void sequence_to_gram(std::vector<std::vector<int> >& sequences, std::vector<std::vector<int> >& gram_data, int max_value, int gram_length);
360 
369 void sequence_reduce_to_ground(std::vector<std::vector<int> >& data, std::vector<std::vector<int> >& converted_data, int& min_value, int& max_value);
370 
371 
380 void reset_device();
381 
393 void get_rowID_offset(std::vector<int> &result, std::vector<int> &resultID, std::vector<int> &resultOffset, unsigned int shift_bits);
394 
395 void init_genie(GPUGenie_Config &config);
396 
397 } // namespace orig
398 } // namespace genie
399 
400 #endif /* INTERFACE_H_ */
genie::compression::COMPRESSION_TYPE compression
Definition: interface.h:108
std::vector< std::vector< int > > * query_points
Definition: interface.h:93
void load_query_singlerange(genie::table::inv_table &table, std::vector< genie::query::Query > &queries, GPUGenie_Config &config)
Definition: interface.cc:473
void init_genie(GPUGenie_Config &config)
Definition: interface.cc:996
void load_table_bijectMap(genie::table::inv_table &table, std::vector< std::vector< int > > &data_points, GPUGenie_Config &config)
Definition: interface.cc:621
bool preprocess_for_knn_csv(GPUGenie_Config &config, genie::table::inv_table *&_table)
Definition: interface.cc:150
This is the top-level namespace of the project.
const COMPRESSION_TYPE DEFAULT_COMPRESSION_TYPE
Definition: interface.cc:48
#define GPUGENIE_DEFAULT_DEVICE
Definition: interface.h:35
void knn_search_MT(std::vector< genie::table::inv_table *> &table, std::vector< std::vector< genie::query::Query >> &queries, std::vector< std::vector< int > > &h_topk, std::vector< std::vector< int > > &h_topk_count, std::vector< GPUGenie_Config > &config)
The declaration for class inv_table.
Definition: inv_table.h:41
struct genie::original::_GPUGenie_Config GPUGenie_Config
struct _GPUGenie_Config
void knn_search_after_preprocess(GPUGenie_Config &config, genie::table::inv_table *&_table, std::vector< int > &result, std::vector< int > &result_count)
Definition: interface.cc:282
#define GPUGENIE_DEFAULT_RADIUS
Definition: interface.h:23
void knn_search_for_csv_data(std::vector< int > &result, std::vector< int > &result_count, GPUGenie_Config &config)
Definition: interface.cc:758
Declaration of query class.
void load_query(genie::table::inv_table &table, std::vector< genie::query::Query > &queries, GPUGenie_Config &config)
Definition: interface.cc:403
_GPUGenie_Config(const _GPUGenie_Config &config)
Definition: interface.h:132
void load_table(genie::table::inv_table &table, std::vector< std::vector< int > > &data_points, GPUGenie_Config &config)
Definition: interface.cc:316
#define GPUGENIE_DEFAULT_HASHTABLE_SIZE
Definition: interface.h:29
Definitions about configurations that can be set by users.
Definition: interface.h:71
void get_rowID_offset(std::vector< int > &result, std::vector< int > &resultID, std::vector< int > &resultOffset, unsigned int shift_bits)
void reset_device()
clear gpu memory
Definition: interface.cc:912
std::vector< genie::utility::attr_t > * multirange_query_points
Definition: interface.h:94
define class inv_table
This file declares functions about file operations.
void load_query_sequence(genie::table::inv_table &table, std::vector< genie::query::Query > &queries, GPUGenie_Config &config)
#define GPUGENIE_DEFAULT_USE_ADAPTIVE_RANGE
Definition: interface.h:38
#define GPUGENIE_DEFAULT_TOPK
Definition: interface.h:20
#define GPUGENIE_DEFAULT_SELECTIVITY
Definition: interface.h:41
void load_query_multirange(genie::table::inv_table &table, std::vector< genie::query::Query > &queries, GPUGenie_Config &config)
Definition: interface.cc:427
void knn_search(std::vector< int > &result, std::vector< int > &result_count, GPUGenie_Config &config)
Definition: interface.cc:779
#define GPUGENIE_DEFAULT_THRESHOLD
Definition: interface.h:26
#define GPUGENIE_DEFAULT_USE_LOAD_BALANCE
Definition: interface.h:50
std::vector< std::vector< int > > * data_points
Definition: interface.h:81
void load_table_sequence(genie::table::inv_table &table, std::vector< std::vector< int > > &data_points, GPUGenie_Config &config)
void sequence_to_gram(std::vector< std::vector< int > > &sequences, std::vector< std::vector< int > > &gram_data, int max_value, int gram_length)
#define GPUGENIE_DEFAULT_NUM_OF_QUERIES
Definition: interface.h:56
#define GPUGENIE_DEFAULT_LOAD_MULTIPLIER
Definition: interface.h:47
#define GPUGENIE_DEFAULT_USE_MULTIRANGE
Definition: interface.h:53
void sequence_reduce_to_ground(std::vector< std::vector< int > > &data, std::vector< std::vector< int > > &converted_data, int &min_value, int &max_value)
#define GPUGENIE_DEFAULT_POSTING_LIST_LENGTH
Definition: interface.h:44