faiss 0.3.0 → 0.3.2
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 +9 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/ext/faiss/extconf.rb +9 -2
- data/ext/faiss/index.cpp +1 -1
- data/ext/faiss/index_binary.cpp +2 -2
- data/ext/faiss/product_quantizer.cpp +1 -1
- data/lib/faiss/version.rb +1 -1
- data/vendor/faiss/faiss/AutoTune.cpp +7 -7
- data/vendor/faiss/faiss/AutoTune.h +1 -2
- data/vendor/faiss/faiss/Clustering.cpp +39 -22
- data/vendor/faiss/faiss/Clustering.h +40 -21
- data/vendor/faiss/faiss/IVFlib.cpp +26 -12
- data/vendor/faiss/faiss/Index.cpp +1 -1
- data/vendor/faiss/faiss/Index.h +40 -10
- data/vendor/faiss/faiss/Index2Layer.cpp +7 -7
- data/vendor/faiss/faiss/IndexAdditiveQuantizer.cpp +176 -166
- data/vendor/faiss/faiss/IndexAdditiveQuantizerFastScan.cpp +15 -15
- data/vendor/faiss/faiss/IndexBinary.cpp +9 -4
- data/vendor/faiss/faiss/IndexBinary.h +8 -19
- data/vendor/faiss/faiss/IndexBinaryFromFloat.cpp +2 -1
- data/vendor/faiss/faiss/IndexBinaryHNSW.cpp +24 -31
- data/vendor/faiss/faiss/IndexBinaryHNSW.h +1 -1
- data/vendor/faiss/faiss/IndexBinaryHash.cpp +25 -50
- data/vendor/faiss/faiss/IndexBinaryIVF.cpp +107 -188
- data/vendor/faiss/faiss/IndexFastScan.cpp +95 -146
- data/vendor/faiss/faiss/IndexFastScan.h +9 -8
- data/vendor/faiss/faiss/IndexFlat.cpp +206 -10
- data/vendor/faiss/faiss/IndexFlat.h +20 -1
- data/vendor/faiss/faiss/IndexFlatCodes.cpp +170 -5
- data/vendor/faiss/faiss/IndexFlatCodes.h +23 -4
- data/vendor/faiss/faiss/IndexHNSW.cpp +231 -382
- data/vendor/faiss/faiss/IndexHNSW.h +62 -49
- data/vendor/faiss/faiss/IndexIDMap.cpp +69 -28
- data/vendor/faiss/faiss/IndexIDMap.h +24 -2
- data/vendor/faiss/faiss/IndexIVF.cpp +162 -56
- data/vendor/faiss/faiss/IndexIVF.h +46 -6
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.cpp +33 -26
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizer.h +6 -2
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.cpp +19 -46
- data/vendor/faiss/faiss/IndexIVFAdditiveQuantizerFastScan.h +4 -3
- data/vendor/faiss/faiss/IndexIVFFastScan.cpp +502 -401
- data/vendor/faiss/faiss/IndexIVFFastScan.h +63 -26
- data/vendor/faiss/faiss/IndexIVFFlat.cpp +15 -5
- data/vendor/faiss/faiss/IndexIVFFlat.h +3 -2
- data/vendor/faiss/faiss/IndexIVFIndependentQuantizer.cpp +172 -0
- data/vendor/faiss/faiss/IndexIVFIndependentQuantizer.h +56 -0
- data/vendor/faiss/faiss/IndexIVFPQ.cpp +79 -125
- data/vendor/faiss/faiss/IndexIVFPQ.h +6 -7
- data/vendor/faiss/faiss/IndexIVFPQFastScan.cpp +39 -52
- data/vendor/faiss/faiss/IndexIVFPQFastScan.h +4 -3
- data/vendor/faiss/faiss/IndexIVFPQR.cpp +45 -29
- data/vendor/faiss/faiss/IndexIVFPQR.h +5 -2
- data/vendor/faiss/faiss/IndexIVFSpectralHash.cpp +25 -27
- data/vendor/faiss/faiss/IndexIVFSpectralHash.h +6 -6
- data/vendor/faiss/faiss/IndexLSH.cpp +14 -16
- data/vendor/faiss/faiss/IndexLattice.cpp +1 -19
- data/vendor/faiss/faiss/IndexLattice.h +3 -22
- data/vendor/faiss/faiss/IndexNNDescent.cpp +3 -33
- data/vendor/faiss/faiss/IndexNNDescent.h +1 -1
- data/vendor/faiss/faiss/IndexNSG.cpp +11 -27
- data/vendor/faiss/faiss/IndexNSG.h +11 -11
- data/vendor/faiss/faiss/IndexNeuralNetCodec.cpp +56 -0
- data/vendor/faiss/faiss/IndexNeuralNetCodec.h +49 -0
- data/vendor/faiss/faiss/IndexPQ.cpp +72 -88
- data/vendor/faiss/faiss/IndexPQ.h +1 -4
- data/vendor/faiss/faiss/IndexPQFastScan.cpp +1 -1
- data/vendor/faiss/faiss/IndexPreTransform.cpp +25 -31
- data/vendor/faiss/faiss/IndexPreTransform.h +1 -1
- data/vendor/faiss/faiss/IndexRefine.cpp +54 -24
- data/vendor/faiss/faiss/IndexRefine.h +7 -0
- data/vendor/faiss/faiss/IndexReplicas.cpp +23 -26
- data/vendor/faiss/faiss/IndexScalarQuantizer.cpp +25 -17
- data/vendor/faiss/faiss/IndexScalarQuantizer.h +6 -4
- data/vendor/faiss/faiss/IndexShards.cpp +21 -29
- data/vendor/faiss/faiss/IndexShardsIVF.cpp +1 -2
- data/vendor/faiss/faiss/MatrixStats.cpp +17 -32
- data/vendor/faiss/faiss/MatrixStats.h +21 -9
- data/vendor/faiss/faiss/MetaIndexes.cpp +35 -35
- data/vendor/faiss/faiss/MetricType.h +7 -2
- data/vendor/faiss/faiss/VectorTransform.cpp +13 -26
- data/vendor/faiss/faiss/VectorTransform.h +7 -7
- data/vendor/faiss/faiss/clone_index.cpp +15 -10
- data/vendor/faiss/faiss/clone_index.h +3 -0
- data/vendor/faiss/faiss/cppcontrib/detail/UintReader.h +95 -17
- data/vendor/faiss/faiss/cppcontrib/factory_tools.cpp +152 -0
- data/vendor/faiss/faiss/cppcontrib/factory_tools.h +24 -0
- data/vendor/faiss/faiss/cppcontrib/sa_decode/Level2-inl.h +83 -30
- data/vendor/faiss/faiss/gpu/GpuCloner.cpp +123 -8
- data/vendor/faiss/faiss/gpu/GpuCloner.h +22 -0
- data/vendor/faiss/faiss/gpu/GpuClonerOptions.h +13 -0
- data/vendor/faiss/faiss/gpu/GpuDistance.h +46 -38
- data/vendor/faiss/faiss/gpu/GpuFaissAssert.h +1 -1
- data/vendor/faiss/faiss/gpu/GpuIndex.h +30 -12
- data/vendor/faiss/faiss/gpu/GpuIndexCagra.h +282 -0
- data/vendor/faiss/faiss/gpu/GpuIndexFlat.h +4 -4
- data/vendor/faiss/faiss/gpu/GpuIndexIVF.h +14 -9
- data/vendor/faiss/faiss/gpu/GpuIndexIVFFlat.h +20 -3
- data/vendor/faiss/faiss/gpu/GpuIndexIVFPQ.h +22 -11
- data/vendor/faiss/faiss/gpu/GpuIndexIVFScalarQuantizer.h +1 -3
- data/vendor/faiss/faiss/gpu/GpuResources.cpp +24 -3
- data/vendor/faiss/faiss/gpu/GpuResources.h +39 -11
- data/vendor/faiss/faiss/gpu/StandardGpuResources.cpp +142 -17
- data/vendor/faiss/faiss/gpu/StandardGpuResources.h +57 -3
- data/vendor/faiss/faiss/gpu/impl/InterleavedCodes.cpp +26 -21
- data/vendor/faiss/faiss/gpu/perf/PerfClustering.cpp +7 -1
- data/vendor/faiss/faiss/gpu/test/TestCodePacking.cpp +8 -5
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexBinaryFlat.cpp +25 -0
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexFlat.cpp +129 -9
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFFlat.cpp +332 -40
- data/vendor/faiss/faiss/gpu/test/TestGpuIndexIVFPQ.cpp +299 -208
- data/vendor/faiss/faiss/gpu/test/TestGpuMemoryException.cpp +1 -0
- data/vendor/faiss/faiss/gpu/test/demo_ivfpq_indexing_gpu.cpp +1 -1
- data/vendor/faiss/faiss/gpu/utils/DeviceUtils.h +6 -0
- data/vendor/faiss/faiss/gpu/utils/RaftUtils.h +75 -0
- data/vendor/faiss/faiss/gpu/utils/Timer.cpp +4 -1
- data/vendor/faiss/faiss/gpu/utils/Timer.h +1 -1
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.cpp +3 -1
- data/vendor/faiss/faiss/impl/AdditiveQuantizer.h +5 -5
- data/vendor/faiss/faiss/impl/AuxIndexStructures.cpp +26 -1
- data/vendor/faiss/faiss/impl/AuxIndexStructures.h +10 -3
- data/vendor/faiss/faiss/impl/DistanceComputer.h +70 -1
- data/vendor/faiss/faiss/impl/FaissAssert.h +4 -2
- data/vendor/faiss/faiss/impl/FaissException.h +13 -34
- data/vendor/faiss/faiss/impl/HNSW.cpp +605 -186
- data/vendor/faiss/faiss/impl/HNSW.h +52 -30
- data/vendor/faiss/faiss/impl/IDSelector.h +4 -4
- data/vendor/faiss/faiss/impl/LocalSearchQuantizer.cpp +11 -9
- data/vendor/faiss/faiss/impl/LookupTableScaler.h +34 -0
- data/vendor/faiss/faiss/impl/NNDescent.cpp +42 -27
- data/vendor/faiss/faiss/impl/NSG.cpp +0 -29
- data/vendor/faiss/faiss/impl/NSG.h +1 -1
- data/vendor/faiss/faiss/impl/PolysemousTraining.cpp +14 -12
- data/vendor/faiss/faiss/impl/ProductAdditiveQuantizer.h +1 -1
- data/vendor/faiss/faiss/impl/ProductQuantizer.cpp +25 -22
- data/vendor/faiss/faiss/impl/ProductQuantizer.h +6 -2
- data/vendor/faiss/faiss/impl/Quantizer.h +1 -1
- data/vendor/faiss/faiss/impl/ResidualQuantizer.cpp +27 -1015
- data/vendor/faiss/faiss/impl/ResidualQuantizer.h +5 -63
- data/vendor/faiss/faiss/impl/ResultHandler.h +347 -172
- data/vendor/faiss/faiss/impl/ScalarQuantizer.cpp +1104 -147
- data/vendor/faiss/faiss/impl/ScalarQuantizer.h +3 -8
- data/vendor/faiss/faiss/impl/code_distance/code_distance-avx2.h +285 -42
- data/vendor/faiss/faiss/impl/code_distance/code_distance-avx512.h +248 -0
- data/vendor/faiss/faiss/impl/code_distance/code_distance-generic.h +21 -14
- data/vendor/faiss/faiss/impl/code_distance/code_distance.h +22 -12
- data/vendor/faiss/faiss/impl/index_read.cpp +74 -34
- data/vendor/faiss/faiss/impl/index_read_utils.h +37 -0
- data/vendor/faiss/faiss/impl/index_write.cpp +88 -51
- data/vendor/faiss/faiss/impl/io.cpp +23 -15
- data/vendor/faiss/faiss/impl/io.h +4 -4
- data/vendor/faiss/faiss/impl/io_macros.h +6 -0
- data/vendor/faiss/faiss/impl/lattice_Zn.cpp +1 -1
- data/vendor/faiss/faiss/impl/platform_macros.h +40 -1
- data/vendor/faiss/faiss/impl/pq4_fast_scan.cpp +14 -0
- data/vendor/faiss/faiss/impl/pq4_fast_scan.h +7 -6
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_1.cpp +52 -38
- data/vendor/faiss/faiss/impl/pq4_fast_scan_search_qbs.cpp +487 -49
- data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.cpp +960 -0
- data/vendor/faiss/faiss/impl/residual_quantizer_encode_steps.h +176 -0
- data/vendor/faiss/faiss/impl/simd_result_handlers.h +481 -225
- data/vendor/faiss/faiss/index_factory.cpp +41 -20
- data/vendor/faiss/faiss/index_io.h +12 -5
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.cpp +28 -8
- data/vendor/faiss/faiss/invlists/BlockInvertedLists.h +3 -0
- data/vendor/faiss/faiss/invlists/DirectMap.cpp +10 -2
- data/vendor/faiss/faiss/invlists/InvertedLists.cpp +73 -17
- data/vendor/faiss/faiss/invlists/InvertedLists.h +26 -8
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.cpp +24 -9
- data/vendor/faiss/faiss/invlists/OnDiskInvertedLists.h +2 -1
- data/vendor/faiss/faiss/python/python_callbacks.cpp +4 -4
- data/vendor/faiss/faiss/utils/Heap.cpp +3 -1
- data/vendor/faiss/faiss/utils/Heap.h +105 -0
- data/vendor/faiss/faiss/utils/NeuralNet.cpp +342 -0
- data/vendor/faiss/faiss/utils/NeuralNet.h +147 -0
- data/vendor/faiss/faiss/utils/WorkerThread.h +1 -0
- data/vendor/faiss/faiss/utils/bf16.h +36 -0
- data/vendor/faiss/faiss/utils/distances.cpp +147 -123
- data/vendor/faiss/faiss/utils/distances.h +86 -9
- data/vendor/faiss/faiss/utils/distances_fused/avx512.cpp +5 -5
- data/vendor/faiss/faiss/utils/distances_fused/avx512.h +2 -2
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.cpp +2 -2
- data/vendor/faiss/faiss/utils/distances_fused/distances_fused.h +1 -1
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.cpp +5 -5
- data/vendor/faiss/faiss/utils/distances_fused/simdlib_based.h +1 -1
- data/vendor/faiss/faiss/utils/distances_simd.cpp +1589 -243
- data/vendor/faiss/faiss/utils/extra_distances-inl.h +70 -0
- data/vendor/faiss/faiss/utils/extra_distances.cpp +85 -137
- data/vendor/faiss/faiss/utils/extra_distances.h +3 -2
- data/vendor/faiss/faiss/utils/fp16-arm.h +29 -0
- data/vendor/faiss/faiss/utils/fp16.h +2 -0
- data/vendor/faiss/faiss/utils/hamming.cpp +163 -111
- data/vendor/faiss/faiss/utils/hamming.h +58 -0
- data/vendor/faiss/faiss/utils/hamming_distance/avx2-inl.h +16 -89
- data/vendor/faiss/faiss/utils/hamming_distance/common.h +1 -0
- data/vendor/faiss/faiss/utils/hamming_distance/generic-inl.h +19 -88
- data/vendor/faiss/faiss/utils/hamming_distance/hamdis-inl.h +58 -0
- data/vendor/faiss/faiss/utils/hamming_distance/neon-inl.h +14 -104
- data/vendor/faiss/faiss/utils/partitioning.cpp +3 -4
- data/vendor/faiss/faiss/utils/prefetch.h +77 -0
- data/vendor/faiss/faiss/utils/quantize_lut.cpp +0 -14
- data/vendor/faiss/faiss/utils/random.cpp +43 -0
- data/vendor/faiss/faiss/utils/random.h +25 -0
- data/vendor/faiss/faiss/utils/simdlib.h +10 -1
- data/vendor/faiss/faiss/utils/simdlib_avx2.h +0 -6
- data/vendor/faiss/faiss/utils/simdlib_avx512.h +296 -0
- data/vendor/faiss/faiss/utils/simdlib_neon.h +77 -79
- data/vendor/faiss/faiss/utils/simdlib_ppc64.h +1084 -0
- data/vendor/faiss/faiss/utils/sorting.cpp +140 -5
- data/vendor/faiss/faiss/utils/sorting.h +27 -0
- data/vendor/faiss/faiss/utils/transpose/transpose-avx512-inl.h +176 -0
- data/vendor/faiss/faiss/utils/utils.cpp +120 -7
- data/vendor/faiss/faiss/utils/utils.h +60 -20
- metadata +23 -4
- data/vendor/faiss/faiss/impl/code_distance/code_distance_avx512.h +0 -102
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <cstdint>
|
|
11
|
+
#include <vector>
|
|
12
|
+
|
|
13
|
+
#include <faiss/Index.h>
|
|
14
|
+
#include <faiss/utils/approx_topk/mode.h>
|
|
15
|
+
|
|
16
|
+
namespace faiss {
|
|
17
|
+
|
|
18
|
+
/********************************************************************
|
|
19
|
+
* Single step of encoding
|
|
20
|
+
********************************************************************/
|
|
21
|
+
|
|
22
|
+
/** Encode a residual by sampling from a centroid table.
|
|
23
|
+
*
|
|
24
|
+
* This is a single encoding step the residual quantizer.
|
|
25
|
+
* It allows low-level access to the encoding function, exposed mainly for unit
|
|
26
|
+
* tests.
|
|
27
|
+
*
|
|
28
|
+
* @param n number of vectors to handle
|
|
29
|
+
* @param residuals vectors to encode, size (n, beam_size, d)
|
|
30
|
+
* @param cent centroids, size (K, d)
|
|
31
|
+
* @param beam_size input beam size
|
|
32
|
+
* @param m size of the codes for the previous encoding steps
|
|
33
|
+
* @param codes code array for the previous steps of the beam (n,
|
|
34
|
+
* beam_size, m)
|
|
35
|
+
* @param new_beam_size output beam size (should be <= K * beam_size)
|
|
36
|
+
* @param new_codes output codes, size (n, new_beam_size, m + 1)
|
|
37
|
+
* @param new_residuals output residuals, size (n, new_beam_size, d)
|
|
38
|
+
* @param new_distances output distances, size (n, new_beam_size)
|
|
39
|
+
* @param assign_index if non-NULL, will be used to perform assignment
|
|
40
|
+
*/
|
|
41
|
+
void beam_search_encode_step(
|
|
42
|
+
size_t d,
|
|
43
|
+
size_t K,
|
|
44
|
+
const float* cent,
|
|
45
|
+
size_t n,
|
|
46
|
+
size_t beam_size,
|
|
47
|
+
const float* residuals,
|
|
48
|
+
size_t m,
|
|
49
|
+
const int32_t* codes,
|
|
50
|
+
size_t new_beam_size,
|
|
51
|
+
int32_t* new_codes,
|
|
52
|
+
float* new_residuals,
|
|
53
|
+
float* new_distances,
|
|
54
|
+
Index* assign_index = nullptr,
|
|
55
|
+
ApproxTopK_mode_t approx_topk = ApproxTopK_mode_t::EXACT_TOPK);
|
|
56
|
+
|
|
57
|
+
/** Encode a set of vectors using their dot products with the codebooks
|
|
58
|
+
*
|
|
59
|
+
* @param K number of vectors in the codebook
|
|
60
|
+
* @param n nb of vectors to encode
|
|
61
|
+
* @param beam_size input beam size
|
|
62
|
+
* @param codebook_cross_norms inner product of this codebook with the m
|
|
63
|
+
* previously encoded codebooks
|
|
64
|
+
* @param codebook_offsets offsets into codebook_cross_norms for each
|
|
65
|
+
* previous codebook
|
|
66
|
+
* @param query_cp dot products of query vectors with ???
|
|
67
|
+
* @param cent_norms_i norms of centroids
|
|
68
|
+
*/
|
|
69
|
+
void beam_search_encode_step_tab(
|
|
70
|
+
size_t K,
|
|
71
|
+
size_t n,
|
|
72
|
+
size_t beam_size, // input sizes
|
|
73
|
+
const float* codebook_cross_norms, // size K * ldc
|
|
74
|
+
size_t ldc, // >= K
|
|
75
|
+
const uint64_t* codebook_offsets, // m
|
|
76
|
+
const float* query_cp, // size n * ldqc
|
|
77
|
+
size_t ldqc, // >= K
|
|
78
|
+
const float* cent_norms_i, // size K
|
|
79
|
+
size_t m,
|
|
80
|
+
const int32_t* codes, // n * beam_size * m
|
|
81
|
+
const float* distances, // n * beam_size
|
|
82
|
+
size_t new_beam_size,
|
|
83
|
+
int32_t* new_codes, // n * new_beam_size * (m + 1)
|
|
84
|
+
float* new_distances, // n * new_beam_size
|
|
85
|
+
ApproxTopK_mode_t approx_topk = ApproxTopK_mode_t::EXACT_TOPK);
|
|
86
|
+
|
|
87
|
+
/********************************************************************
|
|
88
|
+
* Multiple encoding steps
|
|
89
|
+
*
|
|
90
|
+
* The following functions take buffer objects that they use as temp
|
|
91
|
+
* memory (allocated within the functions). The buffers are intended
|
|
92
|
+
* to be re-used over batches of points to encode.
|
|
93
|
+
********************************************************************/
|
|
94
|
+
|
|
95
|
+
struct ResidualQuantizer;
|
|
96
|
+
|
|
97
|
+
namespace rq_encode_steps {
|
|
98
|
+
|
|
99
|
+
// Preallocated memory chunk for refine_beam_mp() call
|
|
100
|
+
struct RefineBeamMemoryPool {
|
|
101
|
+
std::vector<int32_t> new_codes;
|
|
102
|
+
std::vector<float> new_residuals;
|
|
103
|
+
|
|
104
|
+
std::vector<float> residuals;
|
|
105
|
+
std::vector<int32_t> codes;
|
|
106
|
+
std::vector<float> distances;
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
void refine_beam_mp(
|
|
110
|
+
const ResidualQuantizer& rq,
|
|
111
|
+
size_t n,
|
|
112
|
+
size_t beam_size,
|
|
113
|
+
const float* x,
|
|
114
|
+
int out_beam_size,
|
|
115
|
+
int32_t* out_codes,
|
|
116
|
+
float* out_residuals,
|
|
117
|
+
float* out_distances,
|
|
118
|
+
RefineBeamMemoryPool& pool);
|
|
119
|
+
|
|
120
|
+
// Preallocated memory chunk for refine_beam_LUT_mp() call
|
|
121
|
+
struct RefineBeamLUTMemoryPool {
|
|
122
|
+
std::vector<int32_t> new_codes;
|
|
123
|
+
std::vector<float> new_distances;
|
|
124
|
+
|
|
125
|
+
std::vector<int32_t> codes;
|
|
126
|
+
std::vector<float> distances;
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
void refine_beam_LUT_mp(
|
|
130
|
+
const ResidualQuantizer& rq,
|
|
131
|
+
size_t n,
|
|
132
|
+
const float* query_norms, // size n
|
|
133
|
+
const float* query_cp, //
|
|
134
|
+
int out_beam_size,
|
|
135
|
+
int32_t* out_codes,
|
|
136
|
+
float* out_distances,
|
|
137
|
+
RefineBeamLUTMemoryPool& pool);
|
|
138
|
+
|
|
139
|
+
// this is for use_beam_LUT == 0 in compute_codes_add_centroids_mp_lut0() call
|
|
140
|
+
struct ComputeCodesAddCentroidsLUT0MemoryPool {
|
|
141
|
+
std::vector<int32_t> codes;
|
|
142
|
+
std::vector<float> norms;
|
|
143
|
+
std::vector<float> distances;
|
|
144
|
+
std::vector<float> residuals;
|
|
145
|
+
RefineBeamMemoryPool refine_beam_pool;
|
|
146
|
+
};
|
|
147
|
+
|
|
148
|
+
void compute_codes_add_centroids_mp_lut0(
|
|
149
|
+
const ResidualQuantizer& rq,
|
|
150
|
+
const float* x,
|
|
151
|
+
uint8_t* codes_out,
|
|
152
|
+
size_t n,
|
|
153
|
+
const float* centroids,
|
|
154
|
+
ComputeCodesAddCentroidsLUT0MemoryPool& pool);
|
|
155
|
+
|
|
156
|
+
// this is for use_beam_LUT == 1 in compute_codes_add_centroids_mp_lut1() call
|
|
157
|
+
struct ComputeCodesAddCentroidsLUT1MemoryPool {
|
|
158
|
+
std::vector<int32_t> codes;
|
|
159
|
+
std::vector<float> distances;
|
|
160
|
+
std::vector<float> query_norms;
|
|
161
|
+
std::vector<float> query_cp;
|
|
162
|
+
std::vector<float> residuals;
|
|
163
|
+
RefineBeamLUTMemoryPool refine_beam_lut_pool;
|
|
164
|
+
};
|
|
165
|
+
|
|
166
|
+
void compute_codes_add_centroids_mp_lut1(
|
|
167
|
+
const ResidualQuantizer& rq,
|
|
168
|
+
const float* x,
|
|
169
|
+
uint8_t* codes_out,
|
|
170
|
+
size_t n,
|
|
171
|
+
const float* centroids,
|
|
172
|
+
ComputeCodesAddCentroidsLUT1MemoryPool& pool);
|
|
173
|
+
|
|
174
|
+
} // namespace rq_encode_steps
|
|
175
|
+
|
|
176
|
+
} // namespace faiss
|