1 module faiss.autotune;
2 
3 import faiss.common;
4 import faiss.index;
5 
6 /**
7  * Copyright (c) Facebook, Inc. and its affiliates.
8  *
9  * This source code is licensed under the MIT license found in the
10  * LICENSE file in the root directory of this source tree.
11  */
12 
13 // Copyright 2004-present Facebook. All Rights Reserved.
14 // -*- c -*-
15 
16 extern (C):
17 
18 /// possible values of a parameter, sorted from least to most expensive/accurate
19 struct FaissParameterRange_H;
20 alias FaissParameterRange = FaissParameterRange_H;
21 
22 const(char)* faiss_ParameterRange_name (const(FaissParameterRange)*);
23 
24 /// Getter for the values in the range. The output values are invalidated
25 /// upon any other modification of the range.
26 void faiss_ParameterRange_values (FaissParameterRange*, double**, size_t*);
27 
28 /** Uses a-priori knowledge on the Faiss indexes to extract tunable parameters.
29  */
30 struct FaissParameterSpace_H;
31 alias FaissParameterSpace = FaissParameterSpace_H;
32 
33 void faiss_ParameterSpace_free (FaissParameterSpace* obj);
34 
35 /// Parameter space default constructor
36 int faiss_ParameterSpace_new (FaissParameterSpace** space);
37 
38 /// nb of combinations, = product of values sizes
39 size_t faiss_ParameterSpace_n_combinations (const(FaissParameterSpace)*);
40 
41 /// get string representation of the combination
42 /// by writing it to the given character buffer.
43 /// A buffer size of 1000 ensures that the full name is collected.
44 int faiss_ParameterSpace_combination_name (
45     const(FaissParameterSpace)*,
46     size_t,
47     char*,
48     size_t);
49 
50 /// set a combination of parameters described by a string
51 int faiss_ParameterSpace_set_index_parameters (
52     const(FaissParameterSpace)*,
53     FaissIndex*,
54     const(char)*);
55 
56 /// set a combination of parameters on an index
57 int faiss_ParameterSpace_set_index_parameters_cno (
58     const(FaissParameterSpace)*,
59     FaissIndex*,
60     size_t);
61 
62 /// set one of the parameters
63 int faiss_ParameterSpace_set_index_parameter (
64     const(FaissParameterSpace)*,
65     FaissIndex*,
66     const(char)*,
67     double);
68 
69 /// print a description on stdout
70 void faiss_ParameterSpace_display (const(FaissParameterSpace)*);
71 
72 /// add a new parameter (or return it if it exists)
73 int faiss_ParameterSpace_add_range (
74     FaissParameterSpace*,
75     const(char)*,
76     FaissParameterRange**);
77