import numpy as np
d = 64 nb = 100000 nq = 10000 np.random.seed(1234) xb = np.random.random((nb, d)).astype('float32')
xb[:, 0] += np.arange(nb) / 1000.
xq = np.random.random((nq, d)).astype('float32')
xq[:, 0] += np.arange(nq) / 1000.
import faiss
res = faiss.StandardGpuResources()
index_flat = faiss.IndexFlatL2(d)
gpu_index_flat = faiss.index_cpu_to_gpu(res, 0, index_flat)
gpu_index_flat.add(xb) print(gpu_index_flat.ntotal)
k = 4 D, I = gpu_index_flat.search(xq, k) print(I[:5]) print(I[-5:])
nlist = 100
quantizer = faiss.IndexFlatL2(d) index_ivf = faiss.IndexIVFFlat(quantizer, d, nlist, faiss.METRIC_L2)
gpu_index_ivf = faiss.index_cpu_to_gpu(res, 0, index_ivf)
assert not gpu_index_ivf.is_trained
gpu_index_ivf.train(xb) assert gpu_index_ivf.is_trained
gpu_index_ivf.add(xb) print(gpu_index_ivf.ntotal)
k = 4 D, I = gpu_index_ivf.search(xq, k) print(I[:5]) print(I[-5:])