Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion faiss/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -285,7 +285,6 @@ set(FAISS_HEADERS
utils/WorkerThread.h
utils/distances.h
utils/distances_dispatch.h
utils/extra_distances-inl.h
utils/extra_distances.h
utils/fp16-fp16c.h
utils/fp16-inl.h
Expand Down Expand Up @@ -327,6 +326,7 @@ set(FAISS_HEADERS
utils/hamming_distance/avx512-inl.h
utils/simd_impl/distances_autovec-inl.h
utils/simd_impl/distances_simdlib256.h
utils/simd_impl/IVFFlatScanner-inl.h
utils/simd_impl/distances_sse-inl.h
)

Expand Down
48 changes: 5 additions & 43 deletions faiss/IndexIVFFlat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

#include <cinttypes>
#include <cstdio>
#include <numeric>

#include <faiss/IndexFlat.h>

Expand All @@ -23,6 +22,11 @@
#include <faiss/impl/FaissAssert.h>
#include <faiss/impl/expanded_scanners.h>
#include <faiss/utils/extra_distances.h>

#define THE_SIMD_LEVEL SIMDLevel::NONE
// NOLINTNEXTLINE(facebook-hte-InlineHeader)
#include <faiss/utils/simd_impl/IVFFlatScanner-inl.h>

#include <faiss/utils/utils.h>

namespace faiss {
Expand Down Expand Up @@ -145,48 +149,6 @@ void IndexIVFFlat::sa_decode(idx_t n, const uint8_t* bytes, float* x) const {
}
}

namespace {

template <typename VectorDistance>
struct IVFFlatScanner : InvertedListScanner {
VectorDistance vd;
using C = typename VectorDistance::C;

IVFFlatScanner(
const VectorDistance& vd,
bool store_pairs,
const IDSelector* sel)
: InvertedListScanner(store_pairs, sel), vd(vd) {
keep_max = vd.is_similarity;
code_size = vd.d * sizeof(float);
}

const float* xi;
void set_query(const float* query) override {
this->xi = query;
}

void set_list(idx_t list_no, float /* coarse_dis */) override {
this->list_no = list_no;
}

float distance_to_code(const uint8_t* code) const final {
const float* yj = (float*)code;
return vd(xi, yj);
}

// redefining the scan_codes allows to inline the distance_to_code
size_t scan_codes(
size_t list_size,
const uint8_t* codes,
const idx_t* ids,
ResultHandler& handler) const {
return run_scan_codes_fix_C<C>(*this, list_size, codes, ids, handler);
}
};

} // anonymous namespace

InvertedListScanner* IndexIVFFlat::get_InvertedListScanner(
bool store_pairs,
const IDSelector* sel,
Expand Down
32 changes: 32 additions & 0 deletions faiss/IndexIVFFlat.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,38 @@ struct IndexIVFFlat : IndexIVF {
IndexIVFFlat();
};

template <typename VectorDistance>
struct IVFFlatScanner : InvertedListScanner {
VectorDistance vd;
using C = typename VectorDistance::C;

IVFFlatScanner(
const VectorDistance& vd,
bool store_pairs,
const IDSelector* sel)
: InvertedListScanner(store_pairs, sel), vd(vd) {
keep_max = vd.is_similarity;
code_size = vd.d * sizeof(float);
}

const float* xi;
void set_query(const float* query) override {
this->xi = query;
}

void set_list(idx_t list_no, float /* coarse_dis */) override {
this->list_no = list_no;
}

float distance_to_code(const uint8_t* code) const final;

size_t scan_codes(
size_t list_size,
const uint8_t* codes,
const idx_t* ids,
ResultHandler& handler) const;
};

struct IndexIVFFlatDedup : IndexIVFFlat {
/** Maps ids stored in the index to the ids of vectors that are
* the same. When a vector is unique, it does not appear in the
Expand Down
3 changes: 1 addition & 2 deletions faiss/utils/distances_simd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,10 @@
#include <faiss/impl/platform_macros.h>
#include <faiss/impl/simdlib/simdlib_dispatch.h>

#define AUTOVEC_LEVEL SIMDLevel::NONE
#define THE_SIMD_LEVEL SIMDLevel::NONE
// NOLINTNEXTLINE(facebook-hte-InlineHeader)
#include <faiss/utils/simd_impl/distances_autovec-inl.h>

#define THE_SIMDLEVEL SIMDLevel::NONE
// NOLINTNEXTLINE(facebook-hte-InlineHeader)
#include <faiss/utils/simd_impl/distances_simdlib256.h>

Expand Down
235 changes: 0 additions & 235 deletions faiss/utils/extra_distances-inl.h

This file was deleted.

Loading
Loading