faiss 0.2.0 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/LICENSE.txt +1 -1
- data/README.md +7 -7
- data/ext/faiss/extconf.rb +6 -3
- data/ext/faiss/numo.hpp +4 -4
- data/ext/faiss/utils.cpp +1 -1
- data/ext/faiss/utils.h +1 -1
- data/lib/faiss/version.rb +1 -1
- data/vendor/faiss/faiss/AutoTune.cpp +292 -291
- data/vendor/faiss/faiss/AutoTune.h +55 -56
- data/vendor/faiss/faiss/Clustering.cpp +365 -194
- data/vendor/faiss/faiss/Clustering.h +102 -35
- data/vendor/faiss/faiss/IVFlib.cpp +171 -195
- data/vendor/faiss/faiss/IVFlib.h +48 -51
- data/vendor/faiss/faiss/Index.cpp +85 -103
- data/vendor/faiss/faiss/Index.h +54 -48
- data/vendor/faiss/faiss/Index2Layer.cpp +126 -224
- data/vendor/faiss/faiss/Index2Layer.h +22 -36
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +407 -0
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.h +195 -0
- data/vendor/faiss/faiss/IndexBinary.cpp +45 -37
- data/vendor/faiss/faiss/IndexBinary.h +140 -132
- data/vendor/faiss/faiss/IndexBinaryFlat.cpp +73 -53
- data/vendor/faiss/faiss/IndexBinaryFlat.h +29 -24
- data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +46 -43
- data/vendor/faiss/faiss/IndexBinaryFromFloat.h +16 -15
- data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +215 -232
- data/vendor/faiss/faiss/IndexBinaryHNSW.h +25 -24
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +182 -177
- data/vendor/faiss/faiss/IndexBinaryHash.h +41 -34
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +489 -461
- data/vendor/faiss/faiss/IndexBinaryIVF.h +97 -68
- data/vendor/faiss/faiss/IndexFlat.cpp +115 -176
- data/vendor/faiss/faiss/IndexFlat.h +42 -59
- data/vendor/faiss/faiss/IndexFlatCodes.cpp +67 -0
- data/vendor/faiss/faiss/IndexFlatCodes.h +47 -0
- data/vendor/faiss/faiss/IndexHNSW.cpp +372 -348
- data/vendor/faiss/faiss/IndexHNSW.h +57 -41
- data/vendor/faiss/faiss/IndexIVF.cpp +545 -453
- data/vendor/faiss/faiss/IndexIVF.h +169 -118
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +316 -0
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.h +121 -0
- data/vendor/faiss/faiss/IndexIVFFlat.cpp +247 -252
- data/vendor/faiss/faiss/IndexIVFFlat.h +48 -51
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +459 -517
- data/vendor/faiss/faiss/IndexIVFPQ.h +75 -67
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +406 -372
- data/vendor/faiss/faiss/IndexIVFPQFastScan.h +82 -57
- data/vendor/faiss/faiss/IndexIVFPQR.cpp +104 -102
- data/vendor/faiss/faiss/IndexIVFPQR.h +33 -28
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +163 -150
- data/vendor/faiss/faiss/IndexIVFSpectralHash.h +38 -25
- data/vendor/faiss/faiss/IndexLSH.cpp +66 -113
- data/vendor/faiss/faiss/IndexLSH.h +20 -38
- data/vendor/faiss/faiss/IndexLattice.cpp +42 -56
- data/vendor/faiss/faiss/IndexLattice.h +11 -16
- data/vendor/faiss/faiss/IndexNNDescent.cpp +229 -0
- data/vendor/faiss/faiss/IndexNNDescent.h +72 -0
- data/vendor/faiss/faiss/IndexNSG.cpp +301 -0
- data/vendor/faiss/faiss/IndexNSG.h +85 -0
- data/vendor/faiss/faiss/IndexPQ.cpp +387 -495
- data/vendor/faiss/faiss/IndexPQ.h +64 -82
- data/vendor/faiss/faiss/IndexPQFastScan.cpp +143 -170
- data/vendor/faiss/faiss/IndexPQFastScan.h +46 -32
- data/vendor/faiss/faiss/IndexPreTransform.cpp +120 -150
- data/vendor/faiss/faiss/IndexPreTransform.h +33 -36
- data/vendor/faiss/faiss/IndexRefine.cpp +139 -127
- data/vendor/faiss/faiss/IndexRefine.h +32 -23
- data/vendor/faiss/faiss/IndexReplicas.cpp +147 -153
- data/vendor/faiss/faiss/IndexReplicas.h +62 -56
- data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +111 -172
- data/vendor/faiss/faiss/IndexScalarQuantizer.h +41 -59
- data/vendor/faiss/faiss/IndexShards.cpp +256 -240
- data/vendor/faiss/faiss/IndexShards.h +85 -73
- data/vendor/faiss/faiss/MatrixStats.cpp +112 -97
- data/vendor/faiss/faiss/MatrixStats.h +7 -10
- data/vendor/faiss/faiss/MetaIndexes.cpp +135 -157
- data/vendor/faiss/faiss/MetaIndexes.h +40 -34
- data/vendor/faiss/faiss/MetricType.h +7 -7
- data/vendor/faiss/faiss/VectorTransform.cpp +654 -475
- data/vendor/faiss/faiss/VectorTransform.h +64 -89
- data/vendor/faiss/faiss/clone_index.cpp +78 -73
- data/vendor/faiss/faiss/clone_index.h +4 -9
- data/vendor/faiss/faiss/gpu/GpuAutoTune.cpp +33 -38
- data/vendor/faiss/faiss/gpu/GpuAutoTune.h +11 -9
- data/vendor/faiss/faiss/gpu/GpuCloner.cpp +198 -171
- data/vendor/faiss/faiss/gpu/GpuCloner.h +53 -35
- data/vendor/faiss/faiss/gpu/GpuClonerOptions.cpp +12 -14
- data/vendor/faiss/faiss/gpu/GpuClonerOptions.h +27 -25
- data/vendor/faiss/faiss/gpu/GpuDistance.h +116 -112
- data/vendor/faiss/faiss/gpu/GpuFaissAssert.h +1 -2
- data/vendor/faiss/faiss/gpu/GpuIcmEncoder.h +60 -0
- data/vendor/faiss/faiss/gpu/GpuIndex.h +134 -137
- data/vendor/faiss/faiss/gpu/GpuIndexBinaryFlat.h +76 -73
- data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +173 -162
- data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +67 -64
- data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +89 -86
- data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +150 -141
- data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +101 -103
- data/vendor/faiss/faiss/gpu/GpuIndicesOptions.h +17 -16
- data/vendor/faiss/faiss/gpu/GpuResources.cpp +116 -128
- data/vendor/faiss/faiss/gpu/GpuResources.h +182 -186
- data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +433 -422
- data/vendor/faiss/faiss/gpu/StandardGpuResources.h +131 -130
- data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp +468 -456
- data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.h +25 -19
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.cpp +22 -20
- data/vendor/faiss/faiss/gpu/impl/RemapIndices.h +9 -8
- data/vendor/faiss/faiss/gpu/perf/IndexWrapper-inl.h +39 -44
- data/vendor/faiss/faiss/gpu/perf/IndexWrapper.h +16 -14
- data/vendor/faiss/faiss/gpu/perf/PerfClustering.cpp +77 -71
- data/vendor/faiss/faiss/gpu/perf/PerfIVFPQAdd.cpp +109 -88
- data/vendor/faiss/faiss/gpu/perf/WriteIndex.cpp +75 -64
- data/vendor/faiss/faiss/gpu/test/TestCodePacking.cpp +230 -215
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp +80 -86
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +284 -277
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +416 -416
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +611 -517
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFScalarQuantizer.cpp +166 -164
- data/vendor/faiss/faiss/gpu/test/TestGpuMemoryException.cpp +61 -53
- data/vendor/faiss/faiss/gpu/test/TestUtils.cpp +274 -238
- data/vendor/faiss/faiss/gpu/test/TestUtils.h +73 -57
- data/vendor/faiss/faiss/gpu/test/demo_ivfpq_indexing_gpu.cpp +47 -50
- data/vendor/faiss/faiss/gpu/utils/DeviceUtils.h +79 -72
- data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.cpp +140 -146
- data/vendor/faiss/faiss/gpu/utils/StackDeviceMemory.h +69 -71
- data/vendor/faiss/faiss/gpu/utils/StaticUtils.h +21 -16
- data/vendor/faiss/faiss/gpu/utils/Timer.cpp +25 -29
- data/vendor/faiss/faiss/gpu/utils/Timer.h +30 -29
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +503 -0
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +175 -0
- data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +90 -120
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +81 -65
- data/vendor/faiss/faiss/impl/FaissAssert.h +73 -58
- data/vendor/faiss/faiss/impl/FaissException.cpp +56 -48
- data/vendor/faiss/faiss/impl/FaissException.h +41 -29
- data/vendor/faiss/faiss/impl/HNSW.cpp +606 -617
- data/vendor/faiss/faiss/impl/HNSW.h +179 -200
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +855 -0
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.h +244 -0
- data/vendor/faiss/faiss/impl/NNDescent.cpp +487 -0
- data/vendor/faiss/faiss/impl/NNDescent.h +154 -0
- data/vendor/faiss/faiss/impl/NSG.cpp +679 -0
- data/vendor/faiss/faiss/impl/NSG.h +199 -0
- data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +484 -454
- data/vendor/faiss/faiss/impl/PolysemousTraining.h +52 -55
- data/vendor/faiss/faiss/impl/ProductQuantizer-inl.h +26 -47
- data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +469 -459
- data/vendor/faiss/faiss/impl/ProductQuantizer.h +76 -87
- data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +758 -0
- data/vendor/faiss/faiss/impl/ResidualQuantizer.h +188 -0
- data/vendor/faiss/faiss/impl/ResultHandler.h +96 -132
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +647 -707
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +48 -46
- data/vendor/faiss/faiss/impl/ThreadedIndex-inl.h +129 -131
- data/vendor/faiss/faiss/impl/ThreadedIndex.h +61 -55
- data/vendor/faiss/faiss/impl/index_read.cpp +631 -480
- data/vendor/faiss/faiss/impl/index_write.cpp +547 -407
- data/vendor/faiss/faiss/impl/io.cpp +76 -95
- data/vendor/faiss/faiss/impl/io.h +31 -41
- data/vendor/faiss/faiss/impl/io_macros.h +60 -29
- data/vendor/faiss/faiss/impl/kmeans1d.cpp +301 -0
- data/vendor/faiss/faiss/impl/kmeans1d.h +48 -0
- data/vendor/faiss/faiss/impl/lattice_Zn.cpp +137 -186
- data/vendor/faiss/faiss/impl/lattice_Zn.h +40 -51
- data/vendor/faiss/faiss/impl/platform_macros.h +29 -8
- data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +77 -124
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +39 -48
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +41 -52
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +80 -117
- data/vendor/faiss/faiss/impl/simd_result_handlers.h +109 -137
- data/vendor/faiss/faiss/index_factory.cpp +619 -397
- data/vendor/faiss/faiss/index_factory.h +8 -6
- data/vendor/faiss/faiss/index_io.h +23 -26
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +67 -75
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +22 -24
- data/vendor/faiss/faiss/invlists/DirectMap.cpp +96 -112
- data/vendor/faiss/faiss/invlists/DirectMap.h +29 -33
- data/vendor/faiss/faiss/invlists/InvertedLists.cpp +307 -364
- data/vendor/faiss/faiss/invlists/InvertedLists.h +151 -151
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.cpp +29 -34
- data/vendor/faiss/faiss/invlists/InvertedListsIOHook.h +17 -18
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +257 -293
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +50 -45
- data/vendor/faiss/faiss/python/python_callbacks.cpp +23 -26
- data/vendor/faiss/faiss/python/python_callbacks.h +9 -16
- data/vendor/faiss/faiss/utils/AlignedTable.h +79 -44
- data/vendor/faiss/faiss/utils/Heap.cpp +40 -48
- data/vendor/faiss/faiss/utils/Heap.h +186 -209
- data/vendor/faiss/faiss/utils/WorkerThread.cpp +67 -76
- data/vendor/faiss/faiss/utils/WorkerThread.h +32 -33
- data/vendor/faiss/faiss/utils/distances.cpp +305 -312
- data/vendor/faiss/faiss/utils/distances.h +170 -122
- data/vendor/faiss/faiss/utils/distances_simd.cpp +498 -508
- data/vendor/faiss/faiss/utils/extra_distances-inl.h +117 -0
- data/vendor/faiss/faiss/utils/extra_distances.cpp +113 -232
- data/vendor/faiss/faiss/utils/extra_distances.h +30 -29
- data/vendor/faiss/faiss/utils/hamming-inl.h +260 -209
- data/vendor/faiss/faiss/utils/hamming.cpp +375 -469
- data/vendor/faiss/faiss/utils/hamming.h +62 -85
- data/vendor/faiss/faiss/utils/ordered_key_value.h +16 -18
- data/vendor/faiss/faiss/utils/partitioning.cpp +393 -318
- data/vendor/faiss/faiss/utils/partitioning.h +26 -21
- data/vendor/faiss/faiss/utils/quantize_lut.cpp +78 -66
- data/vendor/faiss/faiss/utils/quantize_lut.h +22 -20
- data/vendor/faiss/faiss/utils/random.cpp +39 -63
- data/vendor/faiss/faiss/utils/random.h +13 -16
- data/vendor/faiss/faiss/utils/simdlib.h +4 -2
- data/vendor/faiss/faiss/utils/simdlib_avx2.h +88 -85
- data/vendor/faiss/faiss/utils/simdlib_emulated.h +226 -165
- data/vendor/faiss/faiss/utils/simdlib_neon.h +832 -0
- data/vendor/faiss/faiss/utils/utils.cpp +304 -287
- data/vendor/faiss/faiss/utils/utils.h +54 -49
- metadata +29 -4
|
@@ -10,38 +10,39 @@
|
|
|
10
10
|
#ifndef FAISS_AUTO_TUNE_H
|
|
11
11
|
#define FAISS_AUTO_TUNE_H
|
|
12
12
|
|
|
13
|
-
#include <vector>
|
|
14
|
-
#include <unordered_map>
|
|
15
13
|
#include <stdint.h>
|
|
14
|
+
#include <unordered_map>
|
|
15
|
+
#include <vector>
|
|
16
16
|
|
|
17
17
|
#include <faiss/Index.h>
|
|
18
18
|
#include <faiss/IndexBinary.h>
|
|
19
19
|
|
|
20
20
|
namespace faiss {
|
|
21
21
|
|
|
22
|
-
|
|
23
22
|
/**
|
|
24
23
|
* Evaluation criterion. Returns a performance measure in [0,1],
|
|
25
24
|
* higher is better.
|
|
26
25
|
*/
|
|
27
26
|
struct AutoTuneCriterion {
|
|
28
27
|
typedef Index::idx_t idx_t;
|
|
29
|
-
idx_t nq;
|
|
30
|
-
idx_t nnn;
|
|
31
|
-
idx_t gt_nnn; ///< nb of GT NNs required to evaluate
|
|
28
|
+
idx_t nq; ///< nb of queries this criterion is evaluated on
|
|
29
|
+
idx_t nnn; ///< nb of NNs that the query should request
|
|
30
|
+
idx_t gt_nnn; ///< nb of GT NNs required to evaluate criterion
|
|
32
31
|
|
|
33
|
-
std::vector<float> gt_D;
|
|
34
|
-
std::vector<idx_t> gt_I;
|
|
32
|
+
std::vector<float> gt_D; ///< Ground-truth distances (size nq * gt_nnn)
|
|
33
|
+
std::vector<idx_t> gt_I; ///< Ground-truth indexes (size nq * gt_nnn)
|
|
35
34
|
|
|
36
|
-
AutoTuneCriterion
|
|
35
|
+
AutoTuneCriterion(idx_t nq, idx_t nnn);
|
|
37
36
|
|
|
38
37
|
/** Intitializes the gt_D and gt_I vectors. Must be called before evaluating
|
|
39
38
|
*
|
|
40
39
|
* @param gt_D_in size nq * gt_nnn
|
|
41
40
|
* @param gt_I_in size nq * gt_nnn
|
|
42
41
|
*/
|
|
43
|
-
void set_groundtruth
|
|
44
|
-
|
|
42
|
+
void set_groundtruth(
|
|
43
|
+
int gt_nnn,
|
|
44
|
+
const float* gt_D_in,
|
|
45
|
+
const idx_t* gt_I_in);
|
|
45
46
|
|
|
46
47
|
/** Evaluate the criterion.
|
|
47
48
|
*
|
|
@@ -49,29 +50,25 @@ struct AutoTuneCriterion {
|
|
|
49
50
|
* @param I size nq * nnn
|
|
50
51
|
* @return the criterion, between 0 and 1. Larger is better.
|
|
51
52
|
*/
|
|
52
|
-
virtual double evaluate
|
|
53
|
-
|
|
54
|
-
virtual ~AutoTuneCriterion () {}
|
|
53
|
+
virtual double evaluate(const float* D, const idx_t* I) const = 0;
|
|
55
54
|
|
|
55
|
+
virtual ~AutoTuneCriterion() {}
|
|
56
56
|
};
|
|
57
57
|
|
|
58
|
-
struct OneRecallAtRCriterion: AutoTuneCriterion {
|
|
59
|
-
|
|
58
|
+
struct OneRecallAtRCriterion : AutoTuneCriterion {
|
|
60
59
|
idx_t R;
|
|
61
60
|
|
|
62
|
-
OneRecallAtRCriterion
|
|
61
|
+
OneRecallAtRCriterion(idx_t nq, idx_t R);
|
|
63
62
|
|
|
64
63
|
double evaluate(const float* D, const idx_t* I) const override;
|
|
65
64
|
|
|
66
65
|
~OneRecallAtRCriterion() override {}
|
|
67
66
|
};
|
|
68
67
|
|
|
69
|
-
|
|
70
|
-
struct IntersectionCriterion: AutoTuneCriterion {
|
|
71
|
-
|
|
68
|
+
struct IntersectionCriterion : AutoTuneCriterion {
|
|
72
69
|
idx_t R;
|
|
73
70
|
|
|
74
|
-
IntersectionCriterion
|
|
71
|
+
IntersectionCriterion(idx_t nq, idx_t R);
|
|
75
72
|
|
|
76
73
|
double evaluate(const float* D, const idx_t* I) const override;
|
|
77
74
|
|
|
@@ -91,7 +88,7 @@ struct OperatingPoint {
|
|
|
91
88
|
double perf; ///< performance measure (output of a Criterion)
|
|
92
89
|
double t; ///< corresponding execution time (ms)
|
|
93
90
|
std::string key; ///< key that identifies this op pt
|
|
94
|
-
int64_t cno;
|
|
91
|
+
int64_t cno; ///< integer identifer
|
|
95
92
|
};
|
|
96
93
|
|
|
97
94
|
struct OperatingPoints {
|
|
@@ -102,27 +99,27 @@ struct OperatingPoints {
|
|
|
102
99
|
std::vector<OperatingPoint> optimal_pts;
|
|
103
100
|
|
|
104
101
|
// begins with a single operating point: t=0, perf=0
|
|
105
|
-
OperatingPoints
|
|
102
|
+
OperatingPoints();
|
|
106
103
|
|
|
107
104
|
/// add operating points from other to this, with a prefix to the keys
|
|
108
|
-
int merge_with
|
|
109
|
-
|
|
105
|
+
int merge_with(
|
|
106
|
+
const OperatingPoints& other,
|
|
107
|
+
const std::string& prefix = "");
|
|
110
108
|
|
|
111
|
-
void clear
|
|
109
|
+
void clear();
|
|
112
110
|
|
|
113
111
|
/// add a performance measure. Return whether it is an optimal point
|
|
114
|
-
bool add
|
|
112
|
+
bool add(double perf, double t, const std::string& key, size_t cno = 0);
|
|
115
113
|
|
|
116
114
|
/// get time required to obtain a given performance measure
|
|
117
|
-
double t_for_perf
|
|
115
|
+
double t_for_perf(double perf) const;
|
|
118
116
|
|
|
119
117
|
/// easy-to-read output
|
|
120
|
-
void display
|
|
118
|
+
void display(bool only_optimal = true) const;
|
|
121
119
|
|
|
122
120
|
/// output to a format easy to digest by gnuplot
|
|
123
|
-
void all_to_gnuplot
|
|
124
|
-
void optimal_to_gnuplot
|
|
125
|
-
|
|
121
|
+
void all_to_gnuplot(const char* fname) const;
|
|
122
|
+
void optimal_to_gnuplot(const char* fname) const;
|
|
126
123
|
};
|
|
127
124
|
|
|
128
125
|
/// possible values of a parameter, sorted from least to most expensive/accurate
|
|
@@ -156,41 +153,45 @@ struct ParameterSpace {
|
|
|
156
153
|
/// duration (to avoid jittering in MT mode)
|
|
157
154
|
double min_test_duration;
|
|
158
155
|
|
|
159
|
-
ParameterSpace
|
|
156
|
+
ParameterSpace();
|
|
160
157
|
|
|
161
158
|
/// nb of combinations, = product of values sizes
|
|
162
|
-
size_t n_combinations
|
|
159
|
+
size_t n_combinations() const;
|
|
163
160
|
|
|
164
161
|
/// returns whether combinations c1 >= c2 in the tuple sense
|
|
165
|
-
bool combination_ge
|
|
162
|
+
bool combination_ge(size_t c1, size_t c2) const;
|
|
166
163
|
|
|
167
164
|
/// get string representation of the combination
|
|
168
|
-
std::string combination_name
|
|
165
|
+
std::string combination_name(size_t cno) const;
|
|
169
166
|
|
|
170
167
|
/// print a description on stdout
|
|
171
|
-
void display
|
|
168
|
+
void display() const;
|
|
172
169
|
|
|
173
170
|
/// add a new parameter (or return it if it exists)
|
|
174
|
-
ParameterRange
|
|
171
|
+
ParameterRange& add_range(const std::string& name);
|
|
175
172
|
|
|
176
173
|
/// initialize with reasonable parameters for the index
|
|
177
|
-
virtual void initialize
|
|
174
|
+
virtual void initialize(const Index* index);
|
|
178
175
|
|
|
179
176
|
/// set a combination of parameters on an index
|
|
180
|
-
void set_index_parameters
|
|
177
|
+
void set_index_parameters(Index* index, size_t cno) const;
|
|
181
178
|
|
|
182
179
|
/// set a combination of parameters described by a string
|
|
183
|
-
void set_index_parameters
|
|
180
|
+
void set_index_parameters(Index* index, const char* param_string) const;
|
|
184
181
|
|
|
185
182
|
/// set one of the parameters, returns whether setting was successful
|
|
186
|
-
virtual void set_index_parameter
|
|
187
|
-
|
|
183
|
+
virtual void set_index_parameter(
|
|
184
|
+
Index* index,
|
|
185
|
+
const std::string& name,
|
|
186
|
+
double val) const;
|
|
188
187
|
|
|
189
188
|
/** find an upper bound on the performance and a lower bound on t
|
|
190
189
|
* for configuration cno given another operating point op */
|
|
191
|
-
void update_bounds
|
|
192
|
-
|
|
193
|
-
|
|
190
|
+
void update_bounds(
|
|
191
|
+
size_t cno,
|
|
192
|
+
const OperatingPoint& op,
|
|
193
|
+
double* upper_bound_perf,
|
|
194
|
+
double* lower_bound_t) const;
|
|
194
195
|
|
|
195
196
|
/** explore operating points
|
|
196
197
|
* @param index index to run on
|
|
@@ -198,18 +199,16 @@ struct ParameterSpace {
|
|
|
198
199
|
* @param crit selection criterion
|
|
199
200
|
* @param ops resulting operating points
|
|
200
201
|
*/
|
|
201
|
-
void explore
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
202
|
+
void explore(
|
|
203
|
+
Index* index,
|
|
204
|
+
size_t nq,
|
|
205
|
+
const float* xq,
|
|
206
|
+
const AutoTuneCriterion& crit,
|
|
207
|
+
OperatingPoints* ops) const;
|
|
208
|
+
|
|
209
|
+
virtual ~ParameterSpace() {}
|
|
207
210
|
};
|
|
208
211
|
|
|
209
|
-
|
|
210
|
-
|
|
211
212
|
} // namespace faiss
|
|
212
213
|
|
|
213
|
-
|
|
214
|
-
|
|
215
214
|
#endif
|