/root/doris/contrib/faiss/faiss/IndexIVFPQ.cpp
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) Meta Platforms, Inc. and 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 | | // -*- c++ -*- |
9 | | |
10 | | #include <faiss/IndexIVFPQ.h> |
11 | | |
12 | | #include <cassert> |
13 | | #include <cinttypes> |
14 | | #include <cmath> |
15 | | #include <cstdint> |
16 | | #include <cstdio> |
17 | | |
18 | | #include <algorithm> |
19 | | |
20 | | #include <faiss/utils/Heap.h> |
21 | | #include <faiss/utils/distances.h> |
22 | | #include <faiss/utils/utils.h> |
23 | | |
24 | | #include <faiss/Clustering.h> |
25 | | |
26 | | #include <faiss/utils/hamming.h> |
27 | | |
28 | | #include <faiss/impl/FaissAssert.h> |
29 | | |
30 | | #include <faiss/impl/AuxIndexStructures.h> |
31 | | #include <faiss/impl/IDSelector.h> |
32 | | |
33 | | #include <faiss/impl/ProductQuantizer.h> |
34 | | |
35 | | #include <faiss/impl/code_distance/code_distance.h> |
36 | | |
37 | | namespace faiss { |
38 | | |
39 | | /***************************************** |
40 | | * IndexIVFPQ implementation |
41 | | ******************************************/ |
42 | | |
43 | | IndexIVFPQ::IndexIVFPQ( |
44 | | Index* quantizer, |
45 | | size_t d, |
46 | | size_t nlist, |
47 | | size_t M, |
48 | | size_t nbits_per_idx, |
49 | | MetricType metric) |
50 | 0 | : IndexIVF(quantizer, d, nlist, 0, metric), pq(d, M, nbits_per_idx) { |
51 | 0 | code_size = pq.code_size; |
52 | 0 | invlists->code_size = code_size; |
53 | 0 | is_trained = false; |
54 | 0 | by_residual = true; |
55 | 0 | use_precomputed_table = 0; |
56 | 0 | scan_table_threshold = 0; |
57 | |
|
58 | 0 | polysemous_training = nullptr; |
59 | 0 | do_polysemous_training = false; |
60 | 0 | polysemous_ht = 0; |
61 | 0 | } |
62 | | |
63 | | /**************************************************************** |
64 | | * training */ |
65 | | |
66 | 0 | void IndexIVFPQ::train_encoder(idx_t n, const float* x, const idx_t* assign) { |
67 | 0 | pq.train(n, x); |
68 | |
|
69 | 0 | if (do_polysemous_training) { |
70 | 0 | if (verbose) |
71 | 0 | printf("doing polysemous training for PQ\n"); |
72 | 0 | PolysemousTraining default_pt; |
73 | 0 | PolysemousTraining* pt = |
74 | 0 | polysemous_training ? polysemous_training : &default_pt; |
75 | 0 | pt->optimize_pq_for_hamming(pq, n, x); |
76 | 0 | } |
77 | |
|
78 | 0 | if (by_residual) { |
79 | 0 | precompute_table(); |
80 | 0 | } |
81 | 0 | } |
82 | | |
83 | 0 | idx_t IndexIVFPQ::train_encoder_num_vectors() const { |
84 | 0 | return pq.cp.max_points_per_centroid * pq.ksub; |
85 | 0 | } |
86 | | |
87 | | /**************************************************************** |
88 | | * IVFPQ as codec */ |
89 | | |
90 | | /* produce a binary signature based on the residual vector */ |
91 | 0 | void IndexIVFPQ::encode(idx_t key, const float* x, uint8_t* code) const { |
92 | 0 | if (by_residual) { |
93 | 0 | std::vector<float> residual_vec(d); |
94 | 0 | quantizer->compute_residual(x, residual_vec.data(), key); |
95 | 0 | pq.compute_code(residual_vec.data(), code); |
96 | 0 | } else |
97 | 0 | pq.compute_code(x, code); |
98 | 0 | } |
99 | | |
100 | | void IndexIVFPQ::encode_multiple( |
101 | | size_t n, |
102 | | idx_t* keys, |
103 | | const float* x, |
104 | | uint8_t* xcodes, |
105 | 0 | bool compute_keys) const { |
106 | 0 | if (compute_keys) |
107 | 0 | quantizer->assign(n, x, keys); |
108 | |
|
109 | 0 | encode_vectors(n, x, keys, xcodes); |
110 | 0 | } |
111 | | |
112 | | void IndexIVFPQ::decode_multiple( |
113 | | size_t n, |
114 | | const idx_t* keys, |
115 | | const uint8_t* xcodes, |
116 | 0 | float* x) const { |
117 | 0 | pq.decode(xcodes, x, n); |
118 | 0 | if (by_residual) { |
119 | 0 | std::vector<float> centroid(d); |
120 | 0 | for (size_t i = 0; i < n; i++) { |
121 | 0 | quantizer->reconstruct(keys[i], centroid.data()); |
122 | 0 | float* xi = x + i * d; |
123 | 0 | for (size_t j = 0; j < d; j++) { |
124 | 0 | xi[j] += centroid[j]; |
125 | 0 | } |
126 | 0 | } |
127 | 0 | } |
128 | 0 | } |
129 | | |
130 | | /**************************************************************** |
131 | | * add */ |
132 | | |
133 | | void IndexIVFPQ::add_core( |
134 | | idx_t n, |
135 | | const float* x, |
136 | | const idx_t* xids, |
137 | | const idx_t* coarse_idx, |
138 | 0 | void* inverted_list_context) { |
139 | 0 | add_core_o(n, x, xids, nullptr, coarse_idx, inverted_list_context); |
140 | 0 | } |
141 | | |
142 | | static std::unique_ptr<float[]> compute_residuals( |
143 | | const Index* quantizer, |
144 | | idx_t n, |
145 | | const float* x, |
146 | 0 | const idx_t* list_nos) { |
147 | 0 | size_t d = quantizer->d; |
148 | 0 | std::unique_ptr<float[]> residuals(new float[n * d]); |
149 | | // TODO: parallelize? |
150 | 0 | for (size_t i = 0; i < n; i++) { |
151 | 0 | if (list_nos[i] < 0) |
152 | 0 | memset(residuals.get() + i * d, 0, sizeof(float) * d); |
153 | 0 | else |
154 | 0 | quantizer->compute_residual( |
155 | 0 | x + i * d, residuals.get() + i * d, list_nos[i]); |
156 | 0 | } |
157 | 0 | return residuals; |
158 | 0 | } |
159 | | |
160 | | void IndexIVFPQ::encode_vectors( |
161 | | idx_t n, |
162 | | const float* x, |
163 | | const idx_t* list_nos, |
164 | | uint8_t* codes, |
165 | 0 | bool include_listnos) const { |
166 | 0 | if (by_residual) { |
167 | 0 | std::unique_ptr<float[]> to_encode = |
168 | 0 | compute_residuals(quantizer, n, x, list_nos); |
169 | 0 | pq.compute_codes(to_encode.get(), codes, n); |
170 | 0 | } else { |
171 | 0 | pq.compute_codes(x, codes, n); |
172 | 0 | } |
173 | |
|
174 | 0 | if (include_listnos) { |
175 | 0 | size_t coarse_size = coarse_code_size(); |
176 | 0 | for (idx_t i = n - 1; i >= 0; i--) { |
177 | 0 | uint8_t* code = codes + i * (coarse_size + code_size); |
178 | 0 | memmove(code + coarse_size, codes + i * code_size, code_size); |
179 | 0 | encode_listno(list_nos[i], code); |
180 | 0 | } |
181 | 0 | } |
182 | 0 | } |
183 | | |
184 | 0 | void IndexIVFPQ::sa_decode(idx_t n, const uint8_t* codes, float* x) const { |
185 | 0 | size_t coarse_size = coarse_code_size(); |
186 | |
|
187 | 0 | #pragma omp parallel |
188 | 0 | { |
189 | 0 | std::vector<float> residual(d); |
190 | |
|
191 | 0 | #pragma omp for |
192 | 0 | for (idx_t i = 0; i < n; i++) { |
193 | 0 | const uint8_t* code = codes + i * (code_size + coarse_size); |
194 | 0 | int64_t list_no = decode_listno(code); |
195 | 0 | float* xi = x + i * d; |
196 | 0 | pq.decode(code + coarse_size, xi); |
197 | 0 | if (by_residual) { |
198 | 0 | quantizer->reconstruct(list_no, residual.data()); |
199 | 0 | for (size_t j = 0; j < d; j++) { |
200 | 0 | xi[j] += residual[j]; |
201 | 0 | } |
202 | 0 | } |
203 | 0 | } |
204 | 0 | } |
205 | 0 | } |
206 | | |
207 | | // block size used in IndexIVFPQ::add_core_o |
208 | | int index_ivfpq_add_core_o_bs = 32768; |
209 | | |
210 | | void IndexIVFPQ::add_core_o( |
211 | | idx_t n, |
212 | | const float* x, |
213 | | const idx_t* xids, |
214 | | float* residuals_2, |
215 | | const idx_t* precomputed_idx, |
216 | 0 | void* inverted_list_context) { |
217 | 0 | idx_t bs = index_ivfpq_add_core_o_bs; |
218 | 0 | if (n > bs) { |
219 | 0 | for (idx_t i0 = 0; i0 < n; i0 += bs) { |
220 | 0 | idx_t i1 = std::min(i0 + bs, n); |
221 | 0 | if (verbose) { |
222 | 0 | printf("IndexIVFPQ::add_core_o: adding %" PRId64 ":%" PRId64 |
223 | 0 | " / %" PRId64 "\n", |
224 | 0 | i0, |
225 | 0 | i1, |
226 | 0 | n); |
227 | 0 | } |
228 | 0 | add_core_o( |
229 | 0 | i1 - i0, |
230 | 0 | x + i0 * d, |
231 | 0 | xids ? xids + i0 : nullptr, |
232 | 0 | residuals_2 ? residuals_2 + i0 * d : nullptr, |
233 | 0 | precomputed_idx ? precomputed_idx + i0 : nullptr, |
234 | 0 | inverted_list_context); |
235 | 0 | } |
236 | 0 | return; |
237 | 0 | } |
238 | | |
239 | 0 | InterruptCallback::check(); |
240 | |
|
241 | 0 | direct_map.check_can_add(xids); |
242 | |
|
243 | 0 | FAISS_THROW_IF_NOT(is_trained); |
244 | 0 | double t0 = getmillisecs(); |
245 | 0 | const idx_t* idx; |
246 | 0 | std::unique_ptr<idx_t[]> del_idx; |
247 | |
|
248 | 0 | if (precomputed_idx) { |
249 | 0 | idx = precomputed_idx; |
250 | 0 | } else { |
251 | 0 | idx_t* idx0 = new idx_t[n]; |
252 | 0 | del_idx.reset(idx0); |
253 | 0 | quantizer->assign(n, x, idx0); |
254 | 0 | idx = idx0; |
255 | 0 | } |
256 | |
|
257 | 0 | double t1 = getmillisecs(); |
258 | 0 | std::unique_ptr<uint8_t[]> xcodes(new uint8_t[n * code_size]); |
259 | |
|
260 | 0 | const float* to_encode = nullptr; |
261 | 0 | std::unique_ptr<const float[]> del_to_encode; |
262 | |
|
263 | 0 | if (by_residual) { |
264 | 0 | del_to_encode = compute_residuals(quantizer, n, x, idx); |
265 | 0 | to_encode = del_to_encode.get(); |
266 | 0 | } else { |
267 | 0 | to_encode = x; |
268 | 0 | } |
269 | 0 | pq.compute_codes(to_encode, xcodes.get(), n); |
270 | |
|
271 | 0 | double t2 = getmillisecs(); |
272 | | // TODO: parallelize? |
273 | 0 | size_t n_ignore = 0; |
274 | 0 | for (size_t i = 0; i < n; i++) { |
275 | 0 | idx_t key = idx[i]; |
276 | 0 | idx_t id = xids ? xids[i] : ntotal + i; |
277 | 0 | if (key < 0) { |
278 | 0 | direct_map.add_single_id(id, -1, 0); |
279 | 0 | n_ignore++; |
280 | 0 | if (residuals_2) |
281 | 0 | memset(residuals_2, 0, sizeof(*residuals_2) * d); |
282 | 0 | continue; |
283 | 0 | } |
284 | | |
285 | 0 | uint8_t* code = xcodes.get() + i * code_size; |
286 | 0 | size_t offset = |
287 | 0 | invlists->add_entry(key, id, code, inverted_list_context); |
288 | |
|
289 | 0 | if (residuals_2) { |
290 | 0 | float* res2 = residuals_2 + i * d; |
291 | 0 | const float* xi = to_encode + i * d; |
292 | 0 | pq.decode(code, res2); |
293 | 0 | for (int j = 0; j < d; j++) |
294 | 0 | res2[j] = xi[j] - res2[j]; |
295 | 0 | } |
296 | |
|
297 | 0 | direct_map.add_single_id(id, key, offset); |
298 | 0 | } |
299 | |
|
300 | 0 | double t3 = getmillisecs(); |
301 | 0 | if (verbose) { |
302 | 0 | char comment[100] = {0}; |
303 | 0 | if (n_ignore > 0) |
304 | 0 | snprintf(comment, 100, "(%zd vectors ignored)", n_ignore); |
305 | 0 | printf(" add_core times: %.3f %.3f %.3f %s\n", |
306 | 0 | t1 - t0, |
307 | 0 | t2 - t1, |
308 | 0 | t3 - t2, |
309 | 0 | comment); |
310 | 0 | } |
311 | 0 | ntotal += n; |
312 | 0 | } |
313 | | |
314 | | void IndexIVFPQ::reconstruct_from_offset( |
315 | | int64_t list_no, |
316 | | int64_t offset, |
317 | 0 | float* recons) const { |
318 | 0 | const uint8_t* code = invlists->get_single_code(list_no, offset); |
319 | |
|
320 | 0 | pq.decode(code, recons); |
321 | 0 | if (by_residual) { |
322 | 0 | std::vector<float> centroid(d); |
323 | 0 | quantizer->reconstruct(list_no, centroid.data()); |
324 | |
|
325 | 0 | for (int i = 0; i < d; ++i) { |
326 | 0 | recons[i] += centroid[i]; |
327 | 0 | } |
328 | 0 | } |
329 | 0 | } |
330 | | |
331 | | /// 2G by default, accommodates tables up to PQ32 w/ 65536 centroids |
332 | | size_t precomputed_table_max_bytes = ((size_t)1) << 31; |
333 | | |
334 | | /** Precomputed tables for residuals |
335 | | * |
336 | | * During IVFPQ search with by_residual, we compute |
337 | | * |
338 | | * d = || x - y_C - y_R ||^2 |
339 | | * |
340 | | * where x is the query vector, y_C the coarse centroid, y_R the |
341 | | * refined PQ centroid. The expression can be decomposed as: |
342 | | * |
343 | | * d = || x - y_C ||^2 + || y_R ||^2 + 2 * (y_C|y_R) - 2 * (x|y_R) |
344 | | * --------------- --------------------------- ------- |
345 | | * term 1 term 2 term 3 |
346 | | * |
347 | | * When using multiprobe, we use the following decomposition: |
348 | | * - term 1 is the distance to the coarse centroid, that is computed |
349 | | * during the 1st stage search. |
350 | | * - term 2 can be precomputed, as it does not involve x. However, |
351 | | * because of the PQ, it needs nlist * M * ksub storage. This is why |
352 | | * use_precomputed_table is off by default |
353 | | * - term 3 is the classical non-residual distance table. |
354 | | * |
355 | | * Since y_R defined by a product quantizer, it is split across |
356 | | * subvectors and stored separately for each subvector. If the coarse |
357 | | * quantizer is a MultiIndexQuantizer then the table can be stored |
358 | | * more compactly. |
359 | | * |
360 | | * At search time, the tables for term 2 and term 3 are added up. This |
361 | | * is faster when the length of the lists is > ksub * M. |
362 | | */ |
363 | | |
364 | | void initialize_IVFPQ_precomputed_table( |
365 | | int& use_precomputed_table, |
366 | | const Index* quantizer, |
367 | | const ProductQuantizer& pq, |
368 | | AlignedTable<float>& precomputed_table, |
369 | | bool by_residual, |
370 | 0 | bool verbose) { |
371 | 0 | size_t nlist = quantizer->ntotal; |
372 | 0 | size_t d = quantizer->d; |
373 | 0 | FAISS_THROW_IF_NOT(d == pq.d); |
374 | | |
375 | 0 | if (use_precomputed_table == -1) { |
376 | 0 | precomputed_table.resize(0); |
377 | 0 | return; |
378 | 0 | } |
379 | | |
380 | 0 | if (use_precomputed_table == 0) { // then choose the type of table |
381 | 0 | if (!(quantizer->metric_type == METRIC_L2 && by_residual)) { |
382 | 0 | if (verbose) { |
383 | 0 | printf("IndexIVFPQ::precompute_table: precomputed " |
384 | 0 | "tables needed only for L2 metric and by_residual is enabled\n"); |
385 | 0 | } |
386 | 0 | precomputed_table.resize(0); |
387 | 0 | return; |
388 | 0 | } |
389 | 0 | const MultiIndexQuantizer* miq = |
390 | 0 | dynamic_cast<const MultiIndexQuantizer*>(quantizer); |
391 | 0 | if (miq && pq.M % miq->pq.M == 0) |
392 | 0 | use_precomputed_table = 2; |
393 | 0 | else { |
394 | 0 | size_t table_size = pq.M * pq.ksub * nlist * sizeof(float); |
395 | 0 | if (table_size > precomputed_table_max_bytes) { |
396 | 0 | if (verbose) { |
397 | 0 | printf("IndexIVFPQ::precompute_table: not precomputing table, " |
398 | 0 | "it would be too big: %zd bytes (max %zd)\n", |
399 | 0 | table_size, |
400 | 0 | precomputed_table_max_bytes); |
401 | 0 | use_precomputed_table = 0; |
402 | 0 | } |
403 | 0 | return; |
404 | 0 | } |
405 | 0 | use_precomputed_table = 1; |
406 | 0 | } |
407 | 0 | } // otherwise assume user has set appropriate flag on input |
408 | | |
409 | 0 | if (verbose) { |
410 | 0 | printf("precomputing IVFPQ tables type %d\n", use_precomputed_table); |
411 | 0 | } |
412 | | |
413 | | // squared norms of the PQ centroids |
414 | 0 | std::vector<float> r_norms(pq.M * pq.ksub, NAN); |
415 | 0 | for (int m = 0; m < pq.M; m++) |
416 | 0 | for (int j = 0; j < pq.ksub; j++) |
417 | 0 | r_norms[m * pq.ksub + j] = |
418 | 0 | fvec_norm_L2sqr(pq.get_centroids(m, j), pq.dsub); |
419 | |
|
420 | 0 | if (use_precomputed_table == 1) { |
421 | 0 | precomputed_table.resize(nlist * pq.M * pq.ksub); |
422 | 0 | std::vector<float> centroid(d); |
423 | |
|
424 | 0 | for (size_t i = 0; i < nlist; i++) { |
425 | 0 | quantizer->reconstruct(i, centroid.data()); |
426 | |
|
427 | 0 | float* tab = &precomputed_table[i * pq.M * pq.ksub]; |
428 | 0 | pq.compute_inner_prod_table(centroid.data(), tab); |
429 | 0 | fvec_madd(pq.M * pq.ksub, r_norms.data(), 2.0, tab, tab); |
430 | 0 | } |
431 | 0 | } else if (use_precomputed_table == 2) { |
432 | 0 | const MultiIndexQuantizer* miq = |
433 | 0 | dynamic_cast<const MultiIndexQuantizer*>(quantizer); |
434 | 0 | FAISS_THROW_IF_NOT(miq); |
435 | 0 | const ProductQuantizer& cpq = miq->pq; |
436 | 0 | FAISS_THROW_IF_NOT(pq.M % cpq.M == 0); |
437 | | |
438 | 0 | precomputed_table.resize(cpq.ksub * pq.M * pq.ksub); |
439 | | |
440 | | // reorder PQ centroid table |
441 | 0 | std::vector<float> centroids(d * cpq.ksub, NAN); |
442 | |
|
443 | 0 | for (int m = 0; m < cpq.M; m++) { |
444 | 0 | for (size_t i = 0; i < cpq.ksub; i++) { |
445 | 0 | memcpy(centroids.data() + i * d + m * cpq.dsub, |
446 | 0 | cpq.get_centroids(m, i), |
447 | 0 | sizeof(*centroids.data()) * cpq.dsub); |
448 | 0 | } |
449 | 0 | } |
450 | |
|
451 | 0 | pq.compute_inner_prod_tables( |
452 | 0 | cpq.ksub, centroids.data(), precomputed_table.data()); |
453 | |
|
454 | 0 | for (size_t i = 0; i < cpq.ksub; i++) { |
455 | 0 | float* tab = &precomputed_table[i * pq.M * pq.ksub]; |
456 | 0 | fvec_madd(pq.M * pq.ksub, r_norms.data(), 2.0, tab, tab); |
457 | 0 | } |
458 | 0 | } |
459 | 0 | } |
460 | | |
461 | 0 | void IndexIVFPQ::precompute_table() { |
462 | 0 | initialize_IVFPQ_precomputed_table( |
463 | 0 | use_precomputed_table, |
464 | 0 | quantizer, |
465 | 0 | pq, |
466 | 0 | precomputed_table, |
467 | 0 | by_residual, |
468 | 0 | verbose); |
469 | 0 | } |
470 | | |
471 | | namespace { |
472 | | |
473 | 0 | #define TIC t0 = get_cycles() |
474 | 0 | #define TOC get_cycles() - t0 |
475 | | |
476 | | /** QueryTables manages the various ways of searching an |
477 | | * IndexIVFPQ. The code contains a lot of branches, depending on: |
478 | | * - metric_type: are we computing L2 or Inner product similarity? |
479 | | * - by_residual: do we encode raw vectors or residuals? |
480 | | * - use_precomputed_table: are x_R|x_C tables precomputed? |
481 | | * - polysemous_ht: are we filtering with polysemous codes? |
482 | | */ |
483 | | struct QueryTables { |
484 | | /***************************************************** |
485 | | * General data from the IVFPQ |
486 | | *****************************************************/ |
487 | | |
488 | | const IndexIVFPQ& ivfpq; |
489 | | const IVFSearchParameters* params; |
490 | | |
491 | | // copied from IndexIVFPQ for easier access |
492 | | int d; |
493 | | const ProductQuantizer& pq; |
494 | | MetricType metric_type; |
495 | | bool by_residual; |
496 | | int use_precomputed_table; |
497 | | int polysemous_ht; |
498 | | |
499 | | // pre-allocated data buffers |
500 | | float *sim_table, *sim_table_2; |
501 | | float *residual_vec, *decoded_vec; |
502 | | |
503 | | // single data buffer |
504 | | std::vector<float> mem; |
505 | | |
506 | | // for table pointers |
507 | | std::vector<const float*> sim_table_ptrs; |
508 | | |
509 | | explicit QueryTables( |
510 | | const IndexIVFPQ& ivfpq, |
511 | | const IVFSearchParameters* params) |
512 | 0 | : ivfpq(ivfpq), |
513 | 0 | d(ivfpq.d), |
514 | 0 | pq(ivfpq.pq), |
515 | 0 | metric_type(ivfpq.metric_type), |
516 | 0 | by_residual(ivfpq.by_residual), |
517 | 0 | use_precomputed_table(ivfpq.use_precomputed_table) { |
518 | 0 | mem.resize(pq.ksub * pq.M * 2 + d * 2); |
519 | 0 | sim_table = mem.data(); |
520 | 0 | sim_table_2 = sim_table + pq.ksub * pq.M; |
521 | 0 | residual_vec = sim_table_2 + pq.ksub * pq.M; |
522 | 0 | decoded_vec = residual_vec + d; |
523 | | |
524 | | // for polysemous |
525 | 0 | polysemous_ht = ivfpq.polysemous_ht; |
526 | 0 | if (auto ivfpq_params = |
527 | 0 | dynamic_cast<const IVFPQSearchParameters*>(params)) { |
528 | 0 | polysemous_ht = ivfpq_params->polysemous_ht; |
529 | 0 | } |
530 | 0 | if (polysemous_ht != 0) { |
531 | 0 | q_code.resize(pq.code_size); |
532 | 0 | } |
533 | 0 | init_list_cycles = 0; |
534 | 0 | sim_table_ptrs.resize(pq.M); |
535 | 0 | } |
536 | | |
537 | | /***************************************************** |
538 | | * What we do when query is known |
539 | | *****************************************************/ |
540 | | |
541 | | // field specific to query |
542 | | const float* qi; |
543 | | |
544 | | // query-specific initialization |
545 | 0 | void init_query(const float* qi) { |
546 | 0 | this->qi = qi; |
547 | 0 | if (metric_type == METRIC_INNER_PRODUCT) |
548 | 0 | init_query_IP(); |
549 | 0 | else |
550 | 0 | init_query_L2(); |
551 | 0 | if (!by_residual && polysemous_ht != 0) |
552 | 0 | pq.compute_code(qi, q_code.data()); |
553 | 0 | } |
554 | | |
555 | 0 | void init_query_IP() { |
556 | | // precompute some tables specific to the query qi |
557 | 0 | pq.compute_inner_prod_table(qi, sim_table); |
558 | 0 | } |
559 | | |
560 | 0 | void init_query_L2() { |
561 | 0 | if (!by_residual) { |
562 | 0 | pq.compute_distance_table(qi, sim_table); |
563 | 0 | } else if (use_precomputed_table) { |
564 | 0 | pq.compute_inner_prod_table(qi, sim_table_2); |
565 | 0 | } |
566 | 0 | } |
567 | | |
568 | | /***************************************************** |
569 | | * When inverted list is known: prepare computations |
570 | | *****************************************************/ |
571 | | |
572 | | // fields specific to list |
573 | | idx_t key; |
574 | | float coarse_dis; |
575 | | std::vector<uint8_t> q_code; |
576 | | |
577 | | uint64_t init_list_cycles; |
578 | | |
579 | | /// once we know the query and the centroid, we can prepare the |
580 | | /// sim_table that will be used for accumulation |
581 | | /// and dis0, the initial value |
582 | 0 | float precompute_list_tables() { |
583 | 0 | float dis0 = 0; |
584 | 0 | uint64_t t0; |
585 | 0 | TIC; |
586 | 0 | if (by_residual) { |
587 | 0 | if (metric_type == METRIC_INNER_PRODUCT) |
588 | 0 | dis0 = precompute_list_tables_IP(); |
589 | 0 | else |
590 | 0 | dis0 = precompute_list_tables_L2(); |
591 | 0 | } |
592 | 0 | init_list_cycles += TOC; |
593 | 0 | return dis0; |
594 | 0 | } |
595 | | |
596 | 0 | float precompute_list_table_pointers() { |
597 | 0 | float dis0 = 0; |
598 | 0 | uint64_t t0; |
599 | 0 | TIC; |
600 | 0 | if (by_residual) { |
601 | 0 | if (metric_type == METRIC_INNER_PRODUCT) |
602 | 0 | FAISS_THROW_MSG("not implemented"); |
603 | 0 | else |
604 | 0 | dis0 = precompute_list_table_pointers_L2(); |
605 | 0 | } |
606 | 0 | init_list_cycles += TOC; |
607 | 0 | return dis0; |
608 | 0 | } |
609 | | |
610 | | /***************************************************** |
611 | | * compute tables for inner prod |
612 | | *****************************************************/ |
613 | | |
614 | 0 | float precompute_list_tables_IP() { |
615 | | // prepare the sim_table that will be used for accumulation |
616 | | // and dis0, the initial value |
617 | 0 | ivfpq.quantizer->reconstruct(key, decoded_vec); |
618 | | // decoded_vec = centroid |
619 | 0 | float dis0 = fvec_inner_product(qi, decoded_vec, d); |
620 | |
|
621 | 0 | if (polysemous_ht) { |
622 | 0 | for (int i = 0; i < d; i++) { |
623 | 0 | residual_vec[i] = qi[i] - decoded_vec[i]; |
624 | 0 | } |
625 | 0 | pq.compute_code(residual_vec, q_code.data()); |
626 | 0 | } |
627 | 0 | return dis0; |
628 | 0 | } |
629 | | |
630 | | /***************************************************** |
631 | | * compute tables for L2 distance |
632 | | *****************************************************/ |
633 | | |
634 | 0 | float precompute_list_tables_L2() { |
635 | 0 | float dis0 = 0; |
636 | |
|
637 | 0 | if (use_precomputed_table == 0 || use_precomputed_table == -1) { |
638 | 0 | ivfpq.quantizer->compute_residual(qi, residual_vec, key); |
639 | 0 | pq.compute_distance_table(residual_vec, sim_table); |
640 | |
|
641 | 0 | if (polysemous_ht != 0) { |
642 | 0 | pq.compute_code(residual_vec, q_code.data()); |
643 | 0 | } |
644 | |
|
645 | 0 | } else if (use_precomputed_table == 1) { |
646 | 0 | dis0 = coarse_dis; |
647 | |
|
648 | 0 | fvec_madd( |
649 | 0 | pq.M * pq.ksub, |
650 | 0 | ivfpq.precomputed_table.data() + key * pq.ksub * pq.M, |
651 | 0 | -2.0, |
652 | 0 | sim_table_2, |
653 | 0 | sim_table); |
654 | |
|
655 | 0 | if (polysemous_ht != 0) { |
656 | 0 | ivfpq.quantizer->compute_residual(qi, residual_vec, key); |
657 | 0 | pq.compute_code(residual_vec, q_code.data()); |
658 | 0 | } |
659 | |
|
660 | 0 | } else if (use_precomputed_table == 2) { |
661 | 0 | dis0 = coarse_dis; |
662 | |
|
663 | 0 | const MultiIndexQuantizer* miq = |
664 | 0 | dynamic_cast<const MultiIndexQuantizer*>(ivfpq.quantizer); |
665 | 0 | FAISS_THROW_IF_NOT(miq); |
666 | 0 | const ProductQuantizer& cpq = miq->pq; |
667 | 0 | int Mf = pq.M / cpq.M; |
668 | |
|
669 | 0 | const float* qtab = sim_table_2; // query-specific table |
670 | 0 | float* ltab = sim_table; // (output) list-specific table |
671 | |
|
672 | 0 | long k = key; |
673 | 0 | for (int cm = 0; cm < cpq.M; cm++) { |
674 | | // compute PQ index |
675 | 0 | int ki = k & ((uint64_t(1) << cpq.nbits) - 1); |
676 | 0 | k >>= cpq.nbits; |
677 | | |
678 | | // get corresponding table |
679 | 0 | const float* pc = ivfpq.precomputed_table.data() + |
680 | 0 | (ki * pq.M + cm * Mf) * pq.ksub; |
681 | |
|
682 | 0 | if (polysemous_ht == 0) { |
683 | | // sum up with query-specific table |
684 | 0 | fvec_madd(Mf * pq.ksub, pc, -2.0, qtab, ltab); |
685 | 0 | ltab += Mf * pq.ksub; |
686 | 0 | qtab += Mf * pq.ksub; |
687 | 0 | } else { |
688 | 0 | for (int m = cm * Mf; m < (cm + 1) * Mf; m++) { |
689 | 0 | q_code[m] = fvec_madd_and_argmin( |
690 | 0 | pq.ksub, pc, -2, qtab, ltab); |
691 | 0 | pc += pq.ksub; |
692 | 0 | ltab += pq.ksub; |
693 | 0 | qtab += pq.ksub; |
694 | 0 | } |
695 | 0 | } |
696 | 0 | } |
697 | 0 | } |
698 | | |
699 | 0 | return dis0; |
700 | 0 | } |
701 | | |
702 | 0 | float precompute_list_table_pointers_L2() { |
703 | 0 | float dis0 = 0; |
704 | |
|
705 | 0 | if (use_precomputed_table == 1) { |
706 | 0 | dis0 = coarse_dis; |
707 | |
|
708 | 0 | const float* s = |
709 | 0 | ivfpq.precomputed_table.data() + key * pq.ksub * pq.M; |
710 | 0 | for (int m = 0; m < pq.M; m++) { |
711 | 0 | sim_table_ptrs[m] = s; |
712 | 0 | s += pq.ksub; |
713 | 0 | } |
714 | 0 | } else if (use_precomputed_table == 2) { |
715 | 0 | dis0 = coarse_dis; |
716 | |
|
717 | 0 | const MultiIndexQuantizer* miq = |
718 | 0 | dynamic_cast<const MultiIndexQuantizer*>(ivfpq.quantizer); |
719 | 0 | FAISS_THROW_IF_NOT(miq); |
720 | 0 | const ProductQuantizer& cpq = miq->pq; |
721 | 0 | int Mf = pq.M / cpq.M; |
722 | |
|
723 | 0 | long k = key; |
724 | 0 | int m0 = 0; |
725 | 0 | for (int cm = 0; cm < cpq.M; cm++) { |
726 | 0 | int ki = k & ((uint64_t(1) << cpq.nbits) - 1); |
727 | 0 | k >>= cpq.nbits; |
728 | |
|
729 | 0 | const float* pc = ivfpq.precomputed_table.data() + |
730 | 0 | (ki * pq.M + cm * Mf) * pq.ksub; |
731 | |
|
732 | 0 | for (int m = m0; m < m0 + Mf; m++) { |
733 | 0 | sim_table_ptrs[m] = pc; |
734 | 0 | pc += pq.ksub; |
735 | 0 | } |
736 | 0 | m0 += Mf; |
737 | 0 | } |
738 | 0 | } else { |
739 | 0 | FAISS_THROW_MSG("need precomputed tables"); |
740 | 0 | } |
741 | | |
742 | 0 | if (polysemous_ht) { |
743 | 0 | FAISS_THROW_MSG("not implemented"); |
744 | | // Not clear that it makes sense to implemente this, |
745 | | // because it costs M * ksub, which is what we wanted to |
746 | | // avoid with the tables pointers. |
747 | 0 | } |
748 | | |
749 | 0 | return dis0; |
750 | 0 | } |
751 | | }; |
752 | | |
753 | | // This way of handling the selector is not optimal since all distances |
754 | | // are computed even if the id would filter it out. |
755 | | template <class C, bool use_sel> |
756 | | struct KnnSearchResults { |
757 | | idx_t key; |
758 | | const idx_t* ids; |
759 | | const IDSelector* sel; |
760 | | |
761 | | // heap params |
762 | | size_t k; |
763 | | float* heap_sim; |
764 | | idx_t* heap_ids; |
765 | | |
766 | | size_t nup; |
767 | | |
768 | 0 | inline bool skip_entry(idx_t j) { |
769 | 0 | return use_sel && !sel->is_member(ids[j]); |
770 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMinIflEELb1EE10skip_entryEl Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMaxIflEELb1EE10skip_entryEl Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMinIflEELb0EE10skip_entryEl Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMaxIflEELb0EE10skip_entryEl |
771 | | |
772 | 0 | inline void add(idx_t j, float dis) { |
773 | 0 | if (C::cmp(heap_sim[0], dis)) { |
774 | 0 | idx_t id = ids ? ids[j] : lo_build(key, j); |
775 | 0 | heap_replace_top<C>(k, heap_sim, heap_ids, dis, id); |
776 | 0 | nup++; |
777 | 0 | } |
778 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMinIflEELb1EE3addElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMaxIflEELb1EE3addElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMinIflEELb0EE3addElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_116KnnSearchResultsINS_4CMaxIflEELb0EE3addElf |
779 | | }; |
780 | | |
781 | | template <class C, bool use_sel> |
782 | | struct RangeSearchResults { |
783 | | idx_t key; |
784 | | const idx_t* ids; |
785 | | const IDSelector* sel; |
786 | | |
787 | | // wrapped result structure |
788 | | float radius; |
789 | | RangeQueryResult& rres; |
790 | | |
791 | 0 | inline bool skip_entry(idx_t j) { |
792 | 0 | return use_sel && !sel->is_member(ids[j]); |
793 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMinIflEELb1EE10skip_entryEl Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMaxIflEELb1EE10skip_entryEl Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMinIflEELb0EE10skip_entryEl Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMaxIflEELb0EE10skip_entryEl |
794 | | |
795 | 0 | inline void add(idx_t j, float dis) { |
796 | 0 | if (C::cmp(radius, dis)) { |
797 | 0 | idx_t id = ids ? ids[j] : lo_build(key, j); |
798 | 0 | rres.add(dis, id); |
799 | 0 | } |
800 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMinIflEELb1EE3addElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMaxIflEELb1EE3addElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMinIflEELb0EE3addElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_118RangeSearchResultsINS_4CMaxIflEELb0EE3addElf |
801 | | }; |
802 | | |
803 | | /***************************************************** |
804 | | * Scaning the codes. |
805 | | * The scanning functions call their favorite precompute_* |
806 | | * function to precompute the tables they need. |
807 | | *****************************************************/ |
808 | | template <typename IDType, MetricType METRIC_TYPE, class PQDecoder> |
809 | | struct IVFPQScannerT : QueryTables { |
810 | | const uint8_t* list_codes; |
811 | | const IDType* list_ids; |
812 | | size_t list_size; |
813 | | |
814 | | IVFPQScannerT(const IndexIVFPQ& ivfpq, const IVFSearchParameters* params) |
815 | 0 | : QueryTables(ivfpq, params) { |
816 | 0 | assert(METRIC_TYPE == metric_type); |
817 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EEC2ERKNS_10IndexIVFPQEPKNS_19SearchParametersIVFE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EEC2ERKNS_10IndexIVFPQEPKNS_19SearchParametersIVFE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EEC2ERKNS_10IndexIVFPQEPKNS_19SearchParametersIVFE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EEC2ERKNS_10IndexIVFPQEPKNS_19SearchParametersIVFE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEEC2ERKNS_10IndexIVFPQEPKNS_19SearchParametersIVFE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEEC2ERKNS_10IndexIVFPQEPKNS_19SearchParametersIVFE |
818 | | |
819 | | float dis0; |
820 | | |
821 | 0 | void init_list(idx_t list_no, float coarse_dis, int mode) { |
822 | 0 | this->key = list_no; |
823 | 0 | this->coarse_dis = coarse_dis; |
824 | |
|
825 | 0 | if (mode == 2) { |
826 | 0 | dis0 = precompute_list_tables(); |
827 | 0 | } else if (mode == 1) { |
828 | 0 | dis0 = precompute_list_table_pointers(); |
829 | 0 | } |
830 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE9init_listElfi Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE9init_listElfi Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE9init_listElfi Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE9init_listElfi Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE9init_listElfi Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE9init_listElfi |
831 | | |
832 | | /***************************************************** |
833 | | * Scaning the codes: simple PQ scan. |
834 | | *****************************************************/ |
835 | | |
836 | | // This is the baseline version of scan_list_with_tables(). |
837 | | // It demonstrates what this function actually does. |
838 | | // |
839 | | // /// version of the scan where we use precomputed tables. |
840 | | // template <class SearchResultType> |
841 | | // void scan_list_with_table( |
842 | | // size_t ncode, |
843 | | // const uint8_t* codes, |
844 | | // SearchResultType& res) const { |
845 | | // |
846 | | // for (size_t j = 0; j < ncode; j++, codes += pq.code_size) { |
847 | | // if (res.skip_entry(j)) { |
848 | | // continue; |
849 | | // } |
850 | | // float dis = dis0 + distance_single_code<PQDecoder>( |
851 | | // pq, sim_table, codes); |
852 | | // res.add(j, dis); |
853 | | // } |
854 | | // } |
855 | | |
856 | | // This is the modified version of scan_list_with_tables(). |
857 | | // It was observed that doing manual unrolling of the loop that |
858 | | // utilizes distance_single_code() speeds up the computations. |
859 | | |
860 | | /// version of the scan where we use precomputed tables. |
861 | | template <class SearchResultType> |
862 | | void scan_list_with_table( |
863 | | size_t ncode, |
864 | | const uint8_t* codes, |
865 | 0 | SearchResultType& res) const { |
866 | 0 | int counter = 0; |
867 | |
|
868 | 0 | size_t saved_j[4] = {0, 0, 0, 0}; |
869 | 0 | for (size_t j = 0; j < ncode; j++) { |
870 | 0 | if (res.skip_entry(j)) { |
871 | 0 | continue; |
872 | 0 | } |
873 | | |
874 | 0 | saved_j[0] = (counter == 0) ? j : saved_j[0]; |
875 | 0 | saved_j[1] = (counter == 1) ? j : saved_j[1]; |
876 | 0 | saved_j[2] = (counter == 2) ? j : saved_j[2]; |
877 | 0 | saved_j[3] = (counter == 3) ? j : saved_j[3]; |
878 | |
|
879 | 0 | counter += 1; |
880 | 0 | if (counter == 4) { |
881 | 0 | float distance_0 = 0; |
882 | 0 | float distance_1 = 0; |
883 | 0 | float distance_2 = 0; |
884 | 0 | float distance_3 = 0; |
885 | 0 | distance_four_codes<PQDecoder>( |
886 | 0 | pq.M, |
887 | 0 | pq.nbits, |
888 | 0 | sim_table, |
889 | 0 | codes + saved_j[0] * pq.code_size, |
890 | 0 | codes + saved_j[1] * pq.code_size, |
891 | 0 | codes + saved_j[2] * pq.code_size, |
892 | 0 | codes + saved_j[3] * pq.code_size, |
893 | 0 | distance_0, |
894 | 0 | distance_1, |
895 | 0 | distance_2, |
896 | 0 | distance_3); |
897 | |
|
898 | 0 | res.add(saved_j[0], dis0 + distance_0); |
899 | 0 | res.add(saved_j[1], dis0 + distance_1); |
900 | 0 | res.add(saved_j[2], dis0 + distance_2); |
901 | 0 | res.add(saved_j[3], dis0 + distance_3); |
902 | 0 | counter = 0; |
903 | 0 | } |
904 | 0 | } |
905 | |
|
906 | 0 | if (counter >= 1) { |
907 | 0 | float dis = dis0 + |
908 | 0 | distance_single_code<PQDecoder>( |
909 | 0 | pq.M, |
910 | 0 | pq.nbits, |
911 | 0 | sim_table, |
912 | 0 | codes + saved_j[0] * pq.code_size); |
913 | 0 | res.add(saved_j[0], dis); |
914 | 0 | } |
915 | 0 | if (counter >= 2) { |
916 | 0 | float dis = dis0 + |
917 | 0 | distance_single_code<PQDecoder>( |
918 | 0 | pq.M, |
919 | 0 | pq.nbits, |
920 | 0 | sim_table, |
921 | 0 | codes + saved_j[1] * pq.code_size); |
922 | 0 | res.add(saved_j[1], dis); |
923 | 0 | } |
924 | 0 | if (counter >= 3) { |
925 | 0 | float dis = dis0 + |
926 | 0 | distance_single_code<PQDecoder>( |
927 | 0 | pq.M, |
928 | 0 | pq.nbits, |
929 | 0 | sim_table, |
930 | 0 | codes + saved_j[2] * pq.code_size); |
931 | 0 | res.add(saved_j[2], dis); |
932 | 0 | } |
933 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_with_tableINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ |
934 | | |
935 | | /// tables are not precomputed, but pointers are provided to the |
936 | | /// relevant X_c|x_r tables |
937 | | template <class SearchResultType> |
938 | | void scan_list_with_pointer( |
939 | | size_t ncode, |
940 | | const uint8_t* codes, |
941 | 0 | SearchResultType& res) const { |
942 | 0 | for (size_t j = 0; j < ncode; j++, codes += pq.code_size) { |
943 | 0 | if (res.skip_entry(j)) { |
944 | 0 | continue; |
945 | 0 | } |
946 | 0 | PQDecoder decoder(codes, pq.nbits); |
947 | 0 | float dis = dis0; |
948 | 0 | const float* tab = sim_table_2; |
949 | |
|
950 | 0 | for (size_t m = 0; m < pq.M; m++) { |
951 | 0 | int ci = decoder.decode(); |
952 | 0 | dis += sim_table_ptrs[m][ci] - 2 * tab[ci]; |
953 | 0 | tab += pq.ksub; |
954 | 0 | } |
955 | 0 | res.add(j, dis); |
956 | 0 | } |
957 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE22scan_list_with_pointerINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ |
958 | | |
959 | | /// nothing is precomputed: access residuals on-the-fly |
960 | | template <class SearchResultType> |
961 | | void scan_on_the_fly_dist( |
962 | | size_t ncode, |
963 | | const uint8_t* codes, |
964 | 0 | SearchResultType& res) const { |
965 | 0 | const float* dvec; |
966 | 0 | float dis0 = 0; |
967 | 0 | if (by_residual) { |
968 | 0 | if (METRIC_TYPE == METRIC_INNER_PRODUCT) { |
969 | 0 | ivfpq.quantizer->reconstruct(key, residual_vec); |
970 | 0 | dis0 = fvec_inner_product(residual_vec, qi, d); |
971 | 0 | } else { |
972 | 0 | ivfpq.quantizer->compute_residual(qi, residual_vec, key); |
973 | 0 | } |
974 | 0 | dvec = residual_vec; |
975 | 0 | } else { |
976 | 0 | dvec = qi; |
977 | 0 | dis0 = 0; |
978 | 0 | } |
979 | |
|
980 | 0 | for (size_t j = 0; j < ncode; j++, codes += pq.code_size) { |
981 | 0 | if (res.skip_entry(j)) { |
982 | 0 | continue; |
983 | 0 | } |
984 | 0 | pq.decode(codes, decoded_vec); |
985 | |
|
986 | 0 | float dis; |
987 | 0 | if (METRIC_TYPE == METRIC_INNER_PRODUCT) { |
988 | 0 | dis = dis0 + fvec_inner_product(decoded_vec, qi, d); |
989 | 0 | } else { |
990 | 0 | dis = fvec_L2sqr(decoded_vec, dvec, d); |
991 | 0 | } |
992 | 0 | res.add(j, dis); |
993 | 0 | } |
994 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_on_the_fly_distINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ |
995 | | |
996 | | /***************************************************** |
997 | | * Scanning codes with polysemous filtering |
998 | | *****************************************************/ |
999 | | |
1000 | | // This is the baseline version of scan_list_polysemous_hc(). |
1001 | | // It demonstrates what this function actually does. |
1002 | | |
1003 | | // template <class HammingComputer, class SearchResultType> |
1004 | | // void scan_list_polysemous_hc( |
1005 | | // size_t ncode, |
1006 | | // const uint8_t* codes, |
1007 | | // SearchResultType& res) const { |
1008 | | // int ht = ivfpq.polysemous_ht; |
1009 | | // size_t n_hamming_pass = 0, nup = 0; |
1010 | | // |
1011 | | // int code_size = pq.code_size; |
1012 | | // |
1013 | | // HammingComputer hc(q_code.data(), code_size); |
1014 | | // |
1015 | | // for (size_t j = 0; j < ncode; j++, codes += code_size) { |
1016 | | // if (res.skip_entry(j)) { |
1017 | | // continue; |
1018 | | // } |
1019 | | // const uint8_t* b_code = codes; |
1020 | | // int hd = hc.hamming(b_code); |
1021 | | // if (hd < ht) { |
1022 | | // n_hamming_pass++; |
1023 | | // |
1024 | | // float dis = |
1025 | | // dis0 + |
1026 | | // distance_single_code<PQDecoder>( |
1027 | | // pq, sim_table, codes); |
1028 | | // |
1029 | | // res.add(j, dis); |
1030 | | // } |
1031 | | // } |
1032 | | // #pragma omp critical |
1033 | | // { indexIVFPQ_stats.n_hamming_pass += n_hamming_pass; } |
1034 | | // } |
1035 | | |
1036 | | // This is the modified version of scan_list_with_tables(). |
1037 | | // It was observed that doing manual unrolling of the loop that |
1038 | | // utilizes distance_single_code() speeds up the computations. |
1039 | | |
1040 | | template <class HammingComputer, class SearchResultType> |
1041 | | void scan_list_polysemous_hc( |
1042 | | size_t ncode, |
1043 | | const uint8_t* codes, |
1044 | 0 | SearchResultType& res) const { |
1045 | 0 | int ht = ivfpq.polysemous_ht; |
1046 | 0 | size_t n_hamming_pass = 0; |
1047 | |
|
1048 | 0 | int code_size = pq.code_size; |
1049 | |
|
1050 | 0 | size_t saved_j[8]; |
1051 | 0 | int counter = 0; |
1052 | |
|
1053 | 0 | HammingComputer hc(q_code.data(), code_size); |
1054 | |
|
1055 | 0 | for (size_t j = 0; j < (ncode / 4) * 4; j += 4) { |
1056 | 0 | const uint8_t* b_code = codes + j * code_size; |
1057 | | |
1058 | | // Unrolling is a key. Basically, doing multiple popcount |
1059 | | // operations one after another speeds things up. |
1060 | | |
1061 | | // 9999999 is just an arbitrary large number |
1062 | 0 | int hd0 = (res.skip_entry(j + 0)) |
1063 | 0 | ? 99999999 |
1064 | 0 | : hc.hamming(b_code + 0 * code_size); |
1065 | 0 | int hd1 = (res.skip_entry(j + 1)) |
1066 | 0 | ? 99999999 |
1067 | 0 | : hc.hamming(b_code + 1 * code_size); |
1068 | 0 | int hd2 = (res.skip_entry(j + 2)) |
1069 | 0 | ? 99999999 |
1070 | 0 | : hc.hamming(b_code + 2 * code_size); |
1071 | 0 | int hd3 = (res.skip_entry(j + 3)) |
1072 | 0 | ? 99999999 |
1073 | 0 | : hc.hamming(b_code + 3 * code_size); |
1074 | |
|
1075 | 0 | saved_j[counter] = j + 0; |
1076 | 0 | counter = (hd0 < ht) ? (counter + 1) : counter; |
1077 | 0 | saved_j[counter] = j + 1; |
1078 | 0 | counter = (hd1 < ht) ? (counter + 1) : counter; |
1079 | 0 | saved_j[counter] = j + 2; |
1080 | 0 | counter = (hd2 < ht) ? (counter + 1) : counter; |
1081 | 0 | saved_j[counter] = j + 3; |
1082 | 0 | counter = (hd3 < ht) ? (counter + 1) : counter; |
1083 | |
|
1084 | 0 | if (counter >= 4) { |
1085 | | // process four codes at the same time |
1086 | 0 | n_hamming_pass += 4; |
1087 | |
|
1088 | 0 | float distance_0 = dis0; |
1089 | 0 | float distance_1 = dis0; |
1090 | 0 | float distance_2 = dis0; |
1091 | 0 | float distance_3 = dis0; |
1092 | 0 | distance_four_codes<PQDecoder>( |
1093 | 0 | pq.M, |
1094 | 0 | pq.nbits, |
1095 | 0 | sim_table, |
1096 | 0 | codes + saved_j[0] * pq.code_size, |
1097 | 0 | codes + saved_j[1] * pq.code_size, |
1098 | 0 | codes + saved_j[2] * pq.code_size, |
1099 | 0 | codes + saved_j[3] * pq.code_size, |
1100 | 0 | distance_0, |
1101 | 0 | distance_1, |
1102 | 0 | distance_2, |
1103 | 0 | distance_3); |
1104 | |
|
1105 | 0 | res.add(saved_j[0], dis0 + distance_0); |
1106 | 0 | res.add(saved_j[1], dis0 + distance_1); |
1107 | 0 | res.add(saved_j[2], dis0 + distance_2); |
1108 | 0 | res.add(saved_j[3], dis0 + distance_3); |
1109 | | |
1110 | | // |
1111 | 0 | counter -= 4; |
1112 | 0 | saved_j[0] = saved_j[4]; |
1113 | 0 | saved_j[1] = saved_j[5]; |
1114 | 0 | saved_j[2] = saved_j[6]; |
1115 | 0 | saved_j[3] = saved_j[7]; |
1116 | 0 | } |
1117 | 0 | } |
1118 | |
|
1119 | 0 | for (size_t kk = 0; kk < counter; kk++) { |
1120 | 0 | n_hamming_pass++; |
1121 | |
|
1122 | 0 | float dis = dis0 + |
1123 | 0 | distance_single_code<PQDecoder>( |
1124 | 0 | pq.M, |
1125 | 0 | pq.nbits, |
1126 | 0 | sim_table, |
1127 | 0 | codes + saved_j[kk] * pq.code_size); |
1128 | |
|
1129 | 0 | res.add(saved_j[kk], dis); |
1130 | 0 | } |
1131 | | |
1132 | | // process leftovers |
1133 | 0 | for (size_t j = (ncode / 4) * 4; j < ncode; j++) { |
1134 | 0 | if (res.skip_entry(j)) { |
1135 | 0 | continue; |
1136 | 0 | } |
1137 | 0 | const uint8_t* b_code = codes + j * code_size; |
1138 | 0 | int hd = hc.hamming(b_code); |
1139 | 0 | if (hd < ht) { |
1140 | 0 | n_hamming_pass++; |
1141 | |
|
1142 | 0 | float dis = dis0 + |
1143 | 0 | distance_single_code<PQDecoder>( |
1144 | 0 | pq.M, |
1145 | 0 | pq.nbits, |
1146 | 0 | sim_table, |
1147 | 0 | codes + j * code_size); |
1148 | |
|
1149 | 0 | res.add(j, dis); |
1150 | 0 | } |
1151 | 0 | } |
1152 | |
|
1153 | 0 | #pragma omp critical |
1154 | 0 | { indexIVFPQ_stats.n_hamming_pass += n_hamming_pass; } |
1155 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer4ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_16HammingComputer8ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer16ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer20ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer32ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_17HammingComputer64ENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE23scan_list_polysemous_hcINS_22HammingComputerDefaultENS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT0_ |
1156 | | |
1157 | | template <class SearchResultType> |
1158 | | struct Run_scan_list_polysemous_hc { |
1159 | | using T = void; |
1160 | | template <class HammingComputer, class... Types> |
1161 | 0 | void f(const IVFPQScannerT* scanner, Types... args) { |
1162 | 0 | scanner->scan_list_polysemous_hc<HammingComputer, SearchResultType>( |
1163 | 0 | args...); |
1164 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer4EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_16HammingComputer8EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer16EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer20EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer32EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_17HammingComputer64EJmPKhS9_EEEvPKS4_DpT0_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE27Run_scan_list_polysemous_hcINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEE1fINS_22HammingComputerDefaultEJmPKhS9_EEEvPKS4_DpT0_ |
1165 | | }; |
1166 | | |
1167 | | template <class SearchResultType> |
1168 | | void scan_list_polysemous( |
1169 | | size_t ncode, |
1170 | | const uint8_t* codes, |
1171 | 0 | SearchResultType& res) const { |
1172 | 0 | Run_scan_list_polysemous_hc<SearchResultType> r; |
1173 | 0 | dispatch_HammingComputer(pq.code_size, r, this, ncode, codes, res); |
1174 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMinIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMaxIflEELb1EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_10PQDecoder8EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_10PQDecoder8EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_11PQDecoder16EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_11PQDecoder16EE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE0ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMinIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_16KnnSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_113IVFPQScannerTIlLNS_10MetricTypeE1ENS_16PQDecoderGenericEE20scan_list_polysemousINS0_18RangeSearchResultsINS_4CMaxIflEELb0EEEEEvmPKhRT_ |
1175 | | }; |
1176 | | |
1177 | | /* We put as many parameters as possible in template. Hopefully the |
1178 | | * gain in runtime is worth the code bloat. |
1179 | | * |
1180 | | * C is the comparator < or >, it is directly related to METRIC_TYPE. |
1181 | | * |
1182 | | * precompute_mode is how much we precompute (2 = precompute distance tables, |
1183 | | * 1 = precompute pointers to distances, 0 = compute distances one by one). |
1184 | | * Currently only 2 is supported |
1185 | | * |
1186 | | * use_sel: store or ignore the IDSelector |
1187 | | */ |
1188 | | template <MetricType METRIC_TYPE, class C, class PQDecoder, bool use_sel> |
1189 | | struct IVFPQScanner : IVFPQScannerT<idx_t, METRIC_TYPE, PQDecoder>, |
1190 | | InvertedListScanner { |
1191 | | int precompute_mode; |
1192 | | const IDSelector* sel; |
1193 | | |
1194 | | IVFPQScanner( |
1195 | | const IndexIVFPQ& ivfpq, |
1196 | | bool store_pairs, |
1197 | | int precompute_mode, |
1198 | | const IDSelector* sel) |
1199 | 0 | : IVFPQScannerT<idx_t, METRIC_TYPE, PQDecoder>(ivfpq, nullptr), |
1200 | 0 | precompute_mode(precompute_mode), |
1201 | 0 | sel(sel) { |
1202 | 0 | this->store_pairs = store_pairs; |
1203 | 0 | this->keep_max = is_similarity_metric(METRIC_TYPE); |
1204 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb1EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb1EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb1EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb1EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb1EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb1EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb0EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb0EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb0EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb0EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb0EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb0EEC2ERKNS_10IndexIVFPQEbiPKNS_10IDSelectorE |
1205 | | |
1206 | 0 | void set_query(const float* query) override { |
1207 | 0 | this->init_query(query); |
1208 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb1EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb1EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb1EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb1EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb1EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb1EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb0EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb0EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb0EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb0EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb0EE9set_queryEPKf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb0EE9set_queryEPKf |
1209 | | |
1210 | 0 | void set_list(idx_t list_no, float coarse_dis) override { |
1211 | 0 | this->list_no = list_no; |
1212 | 0 | this->init_list(list_no, coarse_dis, precompute_mode); |
1213 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb1EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb1EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb1EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb1EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb1EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb1EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb0EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb0EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb0EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb0EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb0EE8set_listElf Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb0EE8set_listElf |
1214 | | |
1215 | 0 | float distance_to_code(const uint8_t* code) const override { |
1216 | 0 | assert(precompute_mode == 2); |
1217 | 0 | float dis = this->dis0 + |
1218 | 0 | distance_single_code<PQDecoder>( |
1219 | 0 | this->pq.M, this->pq.nbits, this->sim_table, code); |
1220 | 0 | return dis; |
1221 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb1EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb1EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb1EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb1EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb1EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb1EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb0EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb0EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb0EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb0EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb0EE16distance_to_codeEPKh Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb0EE16distance_to_codeEPKh |
1222 | | |
1223 | | size_t scan_codes( |
1224 | | size_t ncode, |
1225 | | const uint8_t* codes, |
1226 | | const idx_t* ids, |
1227 | | float* heap_sim, |
1228 | | idx_t* heap_ids, |
1229 | 0 | size_t k) const override { |
1230 | 0 | KnnSearchResults<C, use_sel> res = { |
1231 | 0 | /* key */ this->key, |
1232 | 0 | /* ids */ this->store_pairs ? nullptr : ids, |
1233 | 0 | /* sel */ this->sel, |
1234 | 0 | /* k */ k, |
1235 | 0 | /* heap_sim */ heap_sim, |
1236 | 0 | /* heap_ids */ heap_ids, |
1237 | 0 | /* nup */ 0}; |
1238 | |
|
1239 | 0 | if (this->polysemous_ht > 0) { |
1240 | 0 | assert(precompute_mode == 2); |
1241 | 0 | this->scan_list_polysemous(ncode, codes, res); |
1242 | 0 | } else if (precompute_mode == 2) { |
1243 | 0 | this->scan_list_with_table(ncode, codes, res); |
1244 | 0 | } else if (precompute_mode == 1) { |
1245 | 0 | this->scan_list_with_pointer(ncode, codes, res); |
1246 | 0 | } else if (precompute_mode == 0) { |
1247 | 0 | this->scan_on_the_fly_dist(ncode, codes, res); |
1248 | 0 | } else { |
1249 | 0 | FAISS_THROW_MSG("bad precomp mode"); |
1250 | 0 | } |
1251 | 0 | return res.nup; |
1252 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb1EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb1EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb1EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb1EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb1EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb1EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb0EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb0EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb0EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb0EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb0EE10scan_codesEmPKhPKlPfPlm Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb0EE10scan_codesEmPKhPKlPfPlm |
1253 | | |
1254 | | void scan_codes_range( |
1255 | | size_t ncode, |
1256 | | const uint8_t* codes, |
1257 | | const idx_t* ids, |
1258 | | float radius, |
1259 | 0 | RangeQueryResult& rres) const override { |
1260 | 0 | RangeSearchResults<C, use_sel> res = { |
1261 | 0 | /* key */ this->key, |
1262 | 0 | /* ids */ this->store_pairs ? nullptr : ids, |
1263 | 0 | /* sel */ this->sel, |
1264 | 0 | /* radius */ radius, |
1265 | 0 | /* rres */ rres}; |
1266 | |
|
1267 | 0 | if (this->polysemous_ht > 0) { |
1268 | 0 | assert(precompute_mode == 2); |
1269 | 0 | this->scan_list_polysemous(ncode, codes, res); |
1270 | 0 | } else if (precompute_mode == 2) { |
1271 | 0 | this->scan_list_with_table(ncode, codes, res); |
1272 | 0 | } else if (precompute_mode == 1) { |
1273 | 0 | this->scan_list_with_pointer(ncode, codes, res); |
1274 | 0 | } else if (precompute_mode == 0) { |
1275 | 0 | this->scan_on_the_fly_dist(ncode, codes, res); |
1276 | 0 | } else { |
1277 | 0 | FAISS_THROW_MSG("bad precomp mode"); |
1278 | 0 | } |
1279 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb1EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb1EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb1EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb1EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb1EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb1EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_10PQDecoder8ELb0EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_10PQDecoder8ELb0EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_11PQDecoder16ELb0EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_11PQDecoder16ELb0EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE0ENS_4CMinIflEENS_16PQDecoderGenericELb0EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE Unexecuted instantiation: IndexIVFPQ.cpp:_ZNK5faiss12_GLOBAL__N_112IVFPQScannerILNS_10MetricTypeE1ENS_4CMaxIflEENS_16PQDecoderGenericELb0EE16scan_codes_rangeEmPKhPKlfRNS_16RangeQueryResultE |
1280 | | }; |
1281 | | |
1282 | | template <class PQDecoder, bool use_sel> |
1283 | | InvertedListScanner* get_InvertedListScanner1( |
1284 | | const IndexIVFPQ& index, |
1285 | | bool store_pairs, |
1286 | 0 | const IDSelector* sel) { |
1287 | 0 | if (index.metric_type == METRIC_INNER_PRODUCT) { |
1288 | 0 | return new IVFPQScanner< |
1289 | 0 | METRIC_INNER_PRODUCT, |
1290 | 0 | CMin<float, idx_t>, |
1291 | 0 | PQDecoder, |
1292 | 0 | use_sel>(index, store_pairs, 2, sel); |
1293 | 0 | } else if (index.metric_type == METRIC_L2) { |
1294 | 0 | return new IVFPQScanner< |
1295 | 0 | METRIC_L2, |
1296 | 0 | CMax<float, idx_t>, |
1297 | 0 | PQDecoder, |
1298 | 0 | use_sel>(index, store_pairs, 2, sel); |
1299 | 0 | } |
1300 | 0 | return nullptr; |
1301 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner1INS_10PQDecoder8ELb1EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner1INS_11PQDecoder16ELb1EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner1INS_16PQDecoderGenericELb1EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner1INS_10PQDecoder8ELb0EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner1INS_11PQDecoder16ELb0EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner1INS_16PQDecoderGenericELb0EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE |
1302 | | |
1303 | | template <bool use_sel> |
1304 | | InvertedListScanner* get_InvertedListScanner2( |
1305 | | const IndexIVFPQ& index, |
1306 | | bool store_pairs, |
1307 | 0 | const IDSelector* sel) { |
1308 | 0 | if (index.pq.nbits == 8) { |
1309 | 0 | return get_InvertedListScanner1<PQDecoder8, use_sel>( |
1310 | 0 | index, store_pairs, sel); |
1311 | 0 | } else if (index.pq.nbits == 16) { |
1312 | 0 | return get_InvertedListScanner1<PQDecoder16, use_sel>( |
1313 | 0 | index, store_pairs, sel); |
1314 | 0 | } else { |
1315 | 0 | return get_InvertedListScanner1<PQDecoderGeneric, use_sel>( |
1316 | 0 | index, store_pairs, sel); |
1317 | 0 | } |
1318 | 0 | } Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner2ILb1EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE Unexecuted instantiation: IndexIVFPQ.cpp:_ZN5faiss12_GLOBAL__N_124get_InvertedListScanner2ILb0EEEPNS_19InvertedListScannerERKNS_10IndexIVFPQEbPKNS_10IDSelectorE |
1319 | | |
1320 | | } // anonymous namespace |
1321 | | |
1322 | | InvertedListScanner* IndexIVFPQ::get_InvertedListScanner( |
1323 | | bool store_pairs, |
1324 | | const IDSelector* sel, |
1325 | 0 | const IVFSearchParameters*) const { |
1326 | 0 | if (sel) { |
1327 | 0 | return get_InvertedListScanner2<true>(*this, store_pairs, sel); |
1328 | 0 | } else { |
1329 | 0 | return get_InvertedListScanner2<false>(*this, store_pairs, sel); |
1330 | 0 | } |
1331 | 0 | return nullptr; |
1332 | 0 | } |
1333 | | |
1334 | | IndexIVFPQStats indexIVFPQ_stats; |
1335 | | |
1336 | 1 | void IndexIVFPQStats::reset() { |
1337 | 1 | memset(this, 0, sizeof(*this)); |
1338 | 1 | } |
1339 | | |
1340 | 0 | IndexIVFPQ::IndexIVFPQ() { |
1341 | | // initialize some runtime values |
1342 | 0 | use_precomputed_table = 0; |
1343 | 0 | scan_table_threshold = 0; |
1344 | 0 | do_polysemous_training = false; |
1345 | 0 | polysemous_ht = 0; |
1346 | 0 | polysemous_training = nullptr; |
1347 | 0 | } |
1348 | | |
1349 | | struct CodeCmp { |
1350 | | const uint8_t* tab; |
1351 | | size_t code_size; |
1352 | 0 | bool operator()(int a, int b) const { |
1353 | 0 | return cmp(a, b) > 0; |
1354 | 0 | } |
1355 | 0 | int cmp(int a, int b) const { |
1356 | 0 | return memcmp(tab + a * code_size, tab + b * code_size, code_size); |
1357 | 0 | } |
1358 | | }; |
1359 | | |
1360 | 0 | size_t IndexIVFPQ::find_duplicates(idx_t* dup_ids, size_t* lims) const { |
1361 | 0 | size_t ngroup = 0; |
1362 | 0 | lims[0] = 0; |
1363 | 0 | for (size_t list_no = 0; list_no < nlist; list_no++) { |
1364 | 0 | size_t n = invlists->list_size(list_no); |
1365 | 0 | std::vector<int> ord(n); |
1366 | 0 | for (int i = 0; i < n; i++) |
1367 | 0 | ord[i] = i; |
1368 | 0 | InvertedLists::ScopedCodes codes(invlists, list_no); |
1369 | 0 | CodeCmp cs = {codes.get(), code_size}; |
1370 | 0 | std::sort(ord.begin(), ord.end(), cs); |
1371 | |
|
1372 | 0 | InvertedLists::ScopedIds list_ids(invlists, list_no); |
1373 | 0 | int prev = -1; // all elements from prev to i-1 are equal |
1374 | 0 | for (int i = 0; i < n; i++) { |
1375 | 0 | if (prev >= 0 && cs.cmp(ord[prev], ord[i]) == 0) { |
1376 | | // same as previous => remember |
1377 | 0 | if (prev + 1 == i) { // start new group |
1378 | 0 | ngroup++; |
1379 | 0 | lims[ngroup] = lims[ngroup - 1]; |
1380 | 0 | dup_ids[lims[ngroup]++] = list_ids[ord[prev]]; |
1381 | 0 | } |
1382 | 0 | dup_ids[lims[ngroup]++] = list_ids[ord[i]]; |
1383 | 0 | } else { // not same as previous. |
1384 | 0 | prev = i; |
1385 | 0 | } |
1386 | 0 | } |
1387 | 0 | } |
1388 | 0 | return ngroup; |
1389 | 0 | } |
1390 | | |
1391 | | } // namespace faiss |