mirror of
https://github.com/facebookresearch/faiss.git
synced 2025-06-03 21:54:02 +08:00
Summary: Pull Request resolved: https://github.com/facebookresearch/faiss/pull/3439 LLVM-15 has a warning `-Wunused-but-set-variable` which we treat as an error because it's so often diagnostic of a code issue. Unused variables can compromise readability or, worse, performance. This diff either (a) removes an unused variable and, possibly, it's associated code, or (b) qualifies the variable with `[[maybe_unused]]`, mostly in cases where the variable _is_ used, but, eg, in an `assert` statement that isn't present in production code. - If you approve of this diff, please use the "Accept & Ship" button :-) Reviewed By: palmje, junjieqi Differential Revision: D57344013 fbshipit-source-id: adf410139d2e6ca69a26ccdbff8511c9b7620489
76 lines
1.6 KiB
C++
76 lines
1.6 KiB
C++
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#include <cassert>
|
|
#include <cstdio>
|
|
#include <cstdlib>
|
|
#include <random>
|
|
|
|
#include <faiss/IndexHNSW.h>
|
|
|
|
using idx_t = faiss::idx_t;
|
|
|
|
int main() {
|
|
int d = 64; // dimension
|
|
int nb = 100000; // database size
|
|
int nq = 10000; // nb of queries
|
|
|
|
std::mt19937 rng;
|
|
std::uniform_real_distribution<> distrib;
|
|
|
|
float* xb = new float[d * nb];
|
|
float* xq = new float[d * nq];
|
|
|
|
for (int i = 0; i < nb; i++) {
|
|
for (int j = 0; j < d; j++)
|
|
xb[d * i + j] = distrib(rng);
|
|
xb[d * i] += i / 1000.;
|
|
}
|
|
|
|
for (int i = 0; i < nq; i++) {
|
|
for (int j = 0; j < d; j++)
|
|
xq[d * i + j] = distrib(rng);
|
|
xq[d * i] += i / 1000.;
|
|
}
|
|
|
|
int k = 4;
|
|
|
|
faiss::IndexHNSWFlat index(d, 32);
|
|
index.add(nb, xb);
|
|
|
|
{ // search xq
|
|
idx_t* I = new idx_t[k * nq];
|
|
float* D = new float[k * nq];
|
|
|
|
index.search(nq, xq, k, D, I);
|
|
|
|
printf("I=\n");
|
|
for (int i = nq - 5; i < nq; i++) {
|
|
for (int j = 0; j < k; j++)
|
|
printf("%5zd ", I[i * k + j]);
|
|
printf("\n");
|
|
}
|
|
|
|
index.search(nq, xq, k, D, I);
|
|
|
|
printf("I=\n");
|
|
for (int i = nq - 5; i < nq; i++) {
|
|
for (int j = 0; j < k; j++)
|
|
printf("%5zd ", I[i * k + j]);
|
|
printf("\n");
|
|
}
|
|
|
|
delete[] I;
|
|
delete[] D;
|
|
}
|
|
|
|
delete[] xb;
|
|
delete[] xq;
|
|
|
|
return 0;
|
|
}
|