bufferkdtree (C sources)
C source code for the Python bufferkdtree implementation
 All Classes Files Functions Variables Typedefs Macros
util.h
Go to the documentation of this file.
1 /*
2  * util.h
3  *
4  * Copyright (C) 2013-2016 Fabian Gieseke <fabian.gieseke@di.ku.dk>
5  * License: GPL v2
6  *
7  */
8 
9 #ifndef NEIGHBORS_BUFFER_KD_TREE_UTIL_H_
10 #define NEIGHBORS_BUFFER_KD_TREE_UTIL_H_
11 
12 #include <stdlib.h>
13 #include <assert.h>
14 #include <float.h>
15 #include <math.h>
16 #include <stdio.h>
17 #include <time.h>
18 #include <sys/resource.h>
19 #include <sys/time.h>
20 #include <pthread.h>
21 #include <sched.h>
22 #include <string.h>
23 #include <malloc.h>
24 #include <errno.h>
25 #include <ctype.h>
26 
27 #include "types.h"
28 
35 
41 void check_parameters(TREE_PARAMETERS *params);
42 
57 void dist_insert_batch(FLOAT_TYPE * train_patt,
58  INT_TYPE train_idx,
59  FLOAT_TYPE * test_patterns,
60  INT_TYPE ntest_patterns,
61  FLOAT_TYPE * d_min,
62  INT_TYPE *idx_min,
63  INT_TYPE dim,
64  UINT_TYPE K);
65 
74  FLOAT_TYPE * b,
75  INT_TYPE dim);
76 
84 
96 void kd_tree_insert(FLOAT_TYPE pattern_dist,
97  INT_TYPE pattern_idx,
98  FLOAT_TYPE * nearest_dist,
99  INT_TYPE *nearest_idx,
100  UINT_TYPE K);
101 
107 void cb_init(circular_buffer * cb, INT_TYPE size);
108 void cb_free(circular_buffer * cb);
110 void cb_add_elt(circular_buffer * cb, INT_TYPE *item);
112 void cb_write(circular_buffer * cb, INT_TYPE *item);
113 void cb_read(circular_buffer * cb, INT_TYPE *item);
115 void cb_read_batch(circular_buffer * cb, INT_TYPE *items_array,
116  INT_TYPE num_elts_to_remove);
117 void cb_read_batch_fast(circular_buffer * cb, INT_TYPE *items_array,
118  INT_TYPE num_elts_to_remove);
120 
121 /* --------------------------------------------------------------------------------
122  * Reads a line from an input file.
123  * --------------------------------------------------------------------------------
124  */
125 char* readline(FILE *input);
126 
127 /* --------------------------------------------------------------------------------
128  * Reads patterns and labels from an input file
129  * --------------------------------------------------------------------------------
130  */
131 void read_patterns(const char *ifile, FLOAT_TYPE **patterns,
132  FLOAT_TYPE **labels, INT_TYPE *num, INT_TYPE *dim);
133 
142  TREE_PARAMETERS *params);
143 
152  TREE_PARAMETERS *params);
153 
162  TREE_PARAMETERS *params);
163 
172  TREE_PARAMETERS *params);
173 
182  TREE_PARAMETERS *params);
183 
192  TREE_PARAMETERS *params);
193 
203 void partition_array_via_pivot(void *array,
204  INT_TYPE count,
205  INT_TYPE axis,
206  INT_TYPE size_per_elt,
207  FLOAT_TYPE pivot_value);
208 
216 inline void swap_elements(void *p1,
217  void *p2,
218  int size_elt);
219 
227 inline void copy_element(void *dest,
228  const void *src,
229  INT_TYPE size_elt);
230 
231 #endif /* NEIGHBORS_BUFFER_KD_TREE_UTIL_H_ */
232 
#define UINT_TYPE
Definition: global.h:12
Definition: types.h:81
void partition_array_via_pivot(void *array, INT_TYPE count, INT_TYPE axis, INT_TYPE size_per_elt, FLOAT_TYPE pivot_value)
Definition: util.c:393
void read_patterns(const char *ifile, FLOAT_TYPE **patterns, FLOAT_TYPE **labels, INT_TYPE *num, INT_TYPE *dim)
double get_raw_train_mem_device_bytes(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: util.c:276
FLOAT_TYPE squared(FLOAT_TYPE a)
Definition: util.c:155
void cb_free(circular_buffer *cb)
Definition: util.c:224
double get_test_tmp_mem_device_bytes(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: util.c:321
void cb_read_batch(circular_buffer *cb, INT_TYPE *items_array, INT_TYPE num_elts_to_remove)
Definition: util.c:216
void dist_insert_batch(FLOAT_TYPE *train_patt, INT_TYPE train_idx, FLOAT_TYPE *test_patterns, INT_TYPE ntest_patterns, FLOAT_TYPE *d_min, INT_TYPE *idx_min, INT_TYPE dim, UINT_TYPE K)
Definition: util.c:83
Definition: types.h:89
void copy_element(void *dest, const void *src, INT_TYPE size_elt)
Definition: util.c:470
double get_test_max_buffer_device_bytes(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: util.c:377
void set_default_parameters(BRUTE_PARAMETERS *params)
Definition: util.c:17
void cb_add_elt(circular_buffer *cb, INT_TYPE *item)
Definition: util.c:233
double get_train_max_buffer_device_bytes(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: util.c:362
INT_TYPE cb_get_number_items(circular_buffer *cb)
Definition: util.c:209
void cb_read_batch_fast(circular_buffer *cb, INT_TYPE *items_array, INT_TYPE num_elts_to_remove)
void swap_elements(void *p1, void *p2, int size_elt)
Definition: util.c:451
INT_TYPE cb_is_empty(circular_buffer *cb)
Definition: util.c:230
void cb_init(circular_buffer *cb, INT_TYPE size)
Definition: util.c:203
void cb_write(circular_buffer *cb, INT_TYPE *item)
Definition: util.c:236
double get_train_mem_with_chunks_device_bytes(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: util.c:298
#define INT_TYPE
Definition: global.h:11
void kd_tree_insert(FLOAT_TYPE pattern_dist, INT_TYPE pattern_idx, FLOAT_TYPE *nearest_dist, INT_TYPE *nearest_idx, UINT_TYPE K)
Definition: util.c:170
Definition: types.h:112
FLOAT_TYPE kd_tree_dist(FLOAT_TYPE *a, FLOAT_TYPE *b, INT_TYPE dim)
Definition: util.c:137
char * readline(FILE *input)
double get_total_mem_device_bytes(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: util.c:345
INT_TYPE cb_is_full(circular_buffer *cb)
Definition: util.c:227
circular_buffer * cb_double_size(circular_buffer *cb)
Definition: util.c:246
void cb_read(circular_buffer *cb, INT_TYPE *item)
Definition: util.c:242
#define FLOAT_TYPE
Definition: float.h:17
void check_parameters(BRUTE_PARAMETERS *params)
Definition: util.c:30