13 #include <faiss/IndexFlat.h>
14 #include <faiss/gpu/GpuIndexFlat.h>
15 #include <faiss/gpu/GpuIndexIVFFlat.h>
16 #include <faiss/gpu/StandardGpuResources.h>
24 float *xb =
new float[d * nb];
25 float *xq =
new float[d * nq];
27 for(
int i = 0; i < nb; i++) {
28 for(
int j = 0; j < d; j++)
29 xb[d * i + j] = drand48();
30 xb[d * i] += i / 1000.;
33 for(
int i = 0; i < nq; i++) {
34 for(
int j = 0; j < d; j++)
35 xq[d * i + j] = drand48();
36 xq[d * i] += i / 1000.;
45 printf(
"is_trained = %s\n", index_flat.is_trained ?
"true" :
"false");
46 index_flat.add(nb, xb);
47 printf(
"ntotal = %ld\n", index_flat.ntotal);
52 long *I =
new long[k * nq];
53 float *D =
new float[k * nq];
55 index_flat.search(nq, xq, k, D, I);
58 printf(
"I (5 first results)=\n");
59 for(
int i = 0; i < 5; i++) {
60 for(
int j = 0; j < k; j++)
61 printf(
"%5ld ", I[i * k + j]);
65 printf(
"I (5 last results)=\n");
66 for(
int i = nq - 5; i < nq; i++) {
67 for(
int j = 0; j < k; j++)
68 printf(
"%5ld ", I[i * k + j]);
82 assert(!index_ivf.is_trained);
83 index_ivf.train(nb, xb);
84 assert(index_ivf.is_trained);
85 index_ivf.add(nb, xb);
87 printf(
"is_trained = %s\n", index_ivf.is_trained ?
"true" :
"false");
88 printf(
"ntotal = %ld\n", index_ivf.ntotal);
91 long *I =
new long[k * nq];
92 float *D =
new float[k * nq];
94 index_ivf.search(nq, xq, k, D, I);
97 printf(
"I (5 first results)=\n");
98 for(
int i = 0; i < 5; i++) {
99 for(
int j = 0; j < k; j++)
100 printf(
"%5ld ", I[i * k + j]);
104 printf(
"I (5 last results)=\n");
105 for(
int i = nq - 5; i < nq; i++) {
106 for(
int j = 0; j < k; j++)
107 printf(
"%5ld ", I[i * k + j]);