Coverage Report

Created: 2026-03-14 18:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
contrib/faiss/faiss/utils/extra_distances.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/utils/extra_distances.h>
11
12
#include <omp.h>
13
#include <algorithm>
14
#include <cmath>
15
16
#include <faiss/impl/AuxIndexStructures.h>
17
#include <faiss/impl/DistanceComputer.h>
18
#include <faiss/utils/utils.h>
19
20
namespace faiss {
21
22
/***************************************************************************
23
 * Distance functions (other than L2 and IP)
24
 ***************************************************************************/
25
26
namespace {
27
28
struct Run_pairwise_extra_distances {
29
    using T = void;
30
31
    template <class VD>
32
    void f(VD vd,
33
           int64_t nq,
34
           const float* xq,
35
           int64_t nb,
36
           const float* xb,
37
           float* dis,
38
           int64_t ldq,
39
           int64_t ldb,
40
0
           int64_t ldd) {
41
0
#pragma omp parallel for if (nq > 10)
42
0
        for (int64_t i = 0; i < nq; i++) {
43
0
            const float* xqi = xq + i * ldq;
44
0
            const float* xbj = xb;
45
0
            float* disi = dis + ldd * i;
46
47
0
            for (int64_t j = 0; j < nb; j++) {
48
0
                disi[j] = vd(xqi, xbj);
49
0
                xbj += ldb;
50
0
            }
51
0
        }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE0EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE1EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE2EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE3EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE4EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE20EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE21EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE22EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE23EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE24EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE25EEEEEvT_lPKflS8_Pflll.omp_outlined_debug__
52
0
    }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE0EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE1EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE2EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE3EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE4EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE20EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE21EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE22EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE23EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE24EEEEEvT_lPKflS8_Pflll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_128Run_pairwise_extra_distances1fINS_14VectorDistanceILNS_10MetricTypeE25EEEEEvT_lPKflS8_Pflll
53
};
54
55
struct Run_knn_extra_metrics {
56
    using T = void;
57
    template <class VD>
58
    void f(VD vd,
59
           const float* x,
60
           const float* y,
61
           size_t nx,
62
           size_t ny,
63
           size_t k,
64
           float* distances,
65
0
           int64_t* labels) {
66
0
        size_t d = vd.d;
67
0
        using C = typename VD::C;
68
0
        size_t check_period = InterruptCallback::get_period_hint(ny * d);
69
0
        check_period *= omp_get_max_threads();
70
71
0
        for (size_t i0 = 0; i0 < nx; i0 += check_period) {
72
0
            size_t i1 = std::min(i0 + check_period, nx);
73
74
0
#pragma omp parallel for
75
0
            for (int64_t i = i0; i < i1; i++) {
76
0
                const float* x_i = x + i * d;
77
0
                const float* y_j = y;
78
0
                size_t j;
79
0
                float* simi = distances + k * i;
80
0
                int64_t* idxi = labels + k * i;
81
82
                // maxheap_heapify(k, simi, idxi);
83
0
                heap_heapify<C>(k, simi, idxi);
84
0
                for (j = 0; j < ny; j++) {
85
0
                    float disij = vd(x_i, y_j);
86
87
0
                    if (C::cmp(simi[0], disij)) {
88
0
                        heap_replace_top<C>(k, simi, idxi, disij, j);
89
0
                    }
90
0
                    y_j += d;
91
0
                }
92
                // maxheap_reorder(k, simi, idxi);
93
0
                heap_reorder<C>(k, simi, idxi);
94
0
            }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE0EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE1EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE2EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE3EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE4EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE20EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE21EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE22EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE23EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE24EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE25EEEEEvT_PKfS8_mmmPfPl.omp_outlined_debug__
95
0
            InterruptCallback::check();
96
0
        }
97
0
    }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE0EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE1EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE2EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE3EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE4EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE20EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE21EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE22EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE23EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE24EEEEEvT_PKfS8_mmmPfPl
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121Run_knn_extra_metrics1fINS_14VectorDistanceILNS_10MetricTypeE25EEEEEvT_PKfS8_mmmPfPl
98
};
99
100
template <class VD>
101
struct ExtraDistanceComputer : FlatCodesDistanceComputer {
102
    VD vd;
103
    idx_t nb;
104
    const float* q;
105
    const float* b;
106
107
0
    float symmetric_dis(idx_t i, idx_t j) final {
108
0
        return vd(b + j * vd.d, b + i * vd.d);
109
0
    }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE0EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE1EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE2EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE3EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE4EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE20EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE21EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE22EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE23EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE24EEEE13symmetric_disEll
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE25EEEE13symmetric_disEll
110
111
0
    float distance_to_code(const uint8_t* code) final {
112
0
        return vd(q, (float*)code);
113
0
    }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE0EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE1EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE2EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE3EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE4EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE20EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE21EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE22EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE23EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE24EEEE16distance_to_codeEPKh
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE25EEEE16distance_to_codeEPKh
114
115
    ExtraDistanceComputer(
116
            const VD& vd,
117
            const float* xb,
118
            size_t nb,
119
            const float* q = nullptr)
120
0
            : FlatCodesDistanceComputer((uint8_t*)xb, vd.d * sizeof(float)),
121
0
              vd(vd),
122
0
              nb(nb),
123
0
              q(q),
124
0
              b(xb) {}
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE0EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE1EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE2EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE3EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE4EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE20EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE21EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE22EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE23EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE24EEEEC2ERKS4_PKfmS9_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE25EEEEC2ERKS4_PKfmS9_
125
126
0
    void set_query(const float* x) override {
127
0
        q = x;
128
0
    }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE0EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE1EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE2EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE3EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE4EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE20EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE21EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE22EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE23EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE24EEEE9set_queryEPKf
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_121ExtraDistanceComputerINS_14VectorDistanceILNS_10MetricTypeE25EEEE9set_queryEPKf
129
};
130
131
struct Run_get_distance_computer {
132
    using T = FlatCodesDistanceComputer*;
133
134
    template <class VD>
135
    FlatCodesDistanceComputer* f(
136
            VD vd,
137
            const float* xb,
138
            size_t nb,
139
0
            const float* q = nullptr) {
140
0
        return new ExtraDistanceComputer<VD>(vd, xb, nb, q);
141
0
    }
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE0EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE1EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE2EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE3EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE4EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE20EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE21EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE22EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE23EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE24EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
Unexecuted instantiation: extra_distances.cpp:_ZN5faiss12_GLOBAL__N_125Run_get_distance_computer1fINS_14VectorDistanceILNS_10MetricTypeE25EEEEEPNS_25FlatCodesDistanceComputerET_PKfmSA_
142
};
143
144
} // anonymous namespace
145
146
void pairwise_extra_distances(
147
        int64_t d,
148
        int64_t nq,
149
        const float* xq,
150
        int64_t nb,
151
        const float* xb,
152
        MetricType mt,
153
        float metric_arg,
154
        float* dis,
155
        int64_t ldq,
156
        int64_t ldb,
157
0
        int64_t ldd) {
158
0
    if (nq == 0 || nb == 0)
159
0
        return;
160
0
    if (ldq == -1)
161
0
        ldq = d;
162
0
    if (ldb == -1)
163
0
        ldb = d;
164
0
    if (ldd == -1)
165
0
        ldd = nb;
166
167
0
    Run_pairwise_extra_distances run;
168
0
    dispatch_VectorDistance(
169
0
            d, mt, metric_arg, run, nq, xq, nb, xb, dis, ldq, ldb, ldd);
170
0
}
171
172
void knn_extra_metrics(
173
        const float* x,
174
        const float* y,
175
        size_t d,
176
        size_t nx,
177
        size_t ny,
178
        MetricType mt,
179
        float metric_arg,
180
        size_t k,
181
        float* distances,
182
0
        int64_t* indexes) {
183
0
    Run_knn_extra_metrics run;
184
0
    dispatch_VectorDistance(
185
0
            d, mt, metric_arg, run, x, y, nx, ny, k, distances, indexes);
186
0
}
187
188
FlatCodesDistanceComputer* get_extra_distance_computer(
189
        size_t d,
190
        MetricType mt,
191
        float metric_arg,
192
        size_t nb,
193
0
        const float* xb) {
194
0
    Run_get_distance_computer run;
195
0
    return dispatch_VectorDistance(d, mt, metric_arg, run, xb, nb);
196
0
}
197
198
} // namespace faiss