bufferkdtree (C sources)
C source code for the Python bufferkdtree implementation
 All Classes Files Functions Variables Typedefs Macros
base.h
Go to the documentation of this file.
1 /*
2  * base.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_BASE_H_
10 #define NEIGHBORS_BUFFER_KD_TREE_BASE_H_
11 
12 #include <stdlib.h>
13 #include <assert.h>
14 #include <math.h>
15 #include <stdio.h>
16 #include <time.h>
17 #include <pthread.h>
18 #include <string.h>
19 #include <sched.h>
20 #include <omp.h>
21 
22 #include "types.h"
23 #include "util.h"
24 #include "kdtree.h"
25 #include "cpu.h"
26 #include "gpu_opencl.h"
27 
28 #if USE_GPU > 0
29 #define PROCESS_ALL_BUFFERS process_all_buffers_gpu
30 #define FIND_LEAF_IDX_BATCH find_leaf_idx_batch_gpu
31 #define INIT_OPENCL_DEVICES(tree_record, params); init_opencl_devices(tree_record, params);
32 #define ALLOCATE_MEMORY_OPENCL_DEVICES(tree_record, params); allocate_memory_opencl_devices(tree_record, params);
33 #define FREE_OPENCL_DEVICES(tree_record, params); free_opencl_devices(tree_record, params);
34 #define GET_DISTANCES_AND_INDICES get_distances_and_indices_gpu
35 #define WRITE_SORTED_TRAINING_PATTERNS write_sorted_training_patterns_gpu
36 #define INIT_ARRAYS(tree_record, params);
37 #else
38 #define PROCESS_ALL_BUFFERS process_all_buffers_cpu
39 #define FIND_LEAF_IDX_BATCH find_leaf_idx_batch_cpu
40 #define INIT_OPENCL_DEVICES(tree_record, params);
41 #define ALLOCATE_MEMORY_OPENCL_DEVICES(tree_record, params);
42 #define FREE_OPENCL_DEVICES(tree_record, params);
43 #define GET_DISTANCES_AND_INDICES get_distances_and_indices_cpu
44 #define WRITE_SORTED_TRAINING_PATTERNS write_sorted_training_patterns_cpu
45 #define INIT_ARRAYS(tree_record, params); init_arrays_cpu(tree_record, params);
46 #endif
47 
48 #define PRINT(params) if ((params->verbosity_level) > 0) printf
49 
50 /* --------------------------------------------------------------------------------
51  * Interface (extern): Initialize components
52  * --------------------------------------------------------------------------------
53  */
54 void init_extern(int n_neighbors, int tree_depth, int num_threads, int num_nXtrain_chunks, int platform_id,
55  int device_id, double allowed_train_mem_percent_chunk, double allowed_test_mem_percent,
56  int splitting_type, char *kernels_source_directory,
57  int verbosity_level, TREE_PARAMETERS *params);
58 
59 /* --------------------------------------------------------------------------------
60  * Builds a buffer k-d-tree.
61  * --------------------------------------------------------------------------------
62  */
63 void build_bufferkdtree(FLOAT_TYPE * Xtrain, INT_TYPE nXtrain, INT_TYPE dXtrain,
65 
66 /* --------------------------------------------------------------------------------
67  * Testing: Perform the test queries (using the buffer kd-tree).
68  * --------------------------------------------------------------------------------
69  */
70 void neighbors_extern(FLOAT_TYPE * Xtest, INT_TYPE nXtest, INT_TYPE dXtest,
71  FLOAT_TYPE * distances, INT_TYPE ndistances, INT_TYPE ddistances,
72  INT_TYPE *indices, INT_TYPE nindices, INT_TYPE dindices,
74 
75 /* --------------------------------------------------------------------------------
76  * Frees additional resources on host system.
77  * --------------------------------------------------------------------------------
78  */
80 
81 /* --------------------------------------------------------------------------------
82  * Frees opencl test buffers
83  * --------------------------------------------------------------------------------
84  */
86 
87 /* --------------------------------------------------------------------------------
88  * Get maximum number of test queries that can be processed.
89  * --------------------------------------------------------------------------------
90  */
92 
93 /* --------------------------------------------------------------------------------
94  * Checks if platform and device are valid
95  * --------------------------------------------------------------------------------
96  */
97 int extern_check_platform_device(int platform_id, int device_id);
98 
99 #endif /* NEIGHBORS_BUFFER_KD_TREE_BASE_H_ */
void build_bufferkdtree(FLOAT_TYPE *Xtrain, INT_TYPE nXtrain, INT_TYPE dXtrain, TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: base.c:73
Definition: types.h:89
void extern_free_query_buffers(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: base.c:457
int extern_check_platform_device(int platform_id, int device_id)
Definition: base.c:146
#define INT_TYPE
Definition: global.h:11
void neighbors_extern(FLOAT_TYPE *Xtest, int nXtest, int dXtest, FLOAT_TYPE *distances, int ndistances, int ddistances, int *indices, int nindices, int dindices, BRUTE_RECORD *brute_record, BRUTE_PARAMETERS *params)
Definition: base.c:101
Definition: types.h:112
long get_max_nXtest_extern(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: base.c:472
void extern_free_resources(TREE_RECORD *tree_record, TREE_PARAMETERS *params)
Definition: base.c:433
#define FLOAT_TYPE
Definition: float.h:17
void init_extern(int n_neighbors, int num_threads, int platform_id, int device_id, char *kernels_source_directory, int verbosity_level, BRUTE_PARAMETERS *params)
Definition: base.c:26