@CrazyHenry
2018-05-07T12:11:53.000000Z
字数 1259
阅读 1397
hhhhfaiss
- Author:李英民 | Henry
- E-mail: li
_yingmin@outlookdotcom- Home: https://liyingmin.wixsite.com/henry
faiss::gpu::StandardGpuResources res; // use a single GPU,开启GPU资源faiss::gpu::GpuIndexFlatL2 gpu_index_flat(&res, d);//GPU index对象gpu_index_flat.add(nb, xb); // add vectors to the indexgpu_index_flat.search(nq, xq, k, D, I);
多重GPU
int ngpus = faiss::gpu::getNumDevices();printf("Number of GPUs: %d\n", ngpus);std::vector<faiss::gpu::GpuResources*> res;std::vector<int> devs;for(int i = 0; i < ngpus; i++) {res.push_back(new faiss::gpu::StandardGpuResources);devs.push_back(i);}faiss::IndexFlatL2 cpu_index(d);faiss::Index *gpu_index =faiss::gpu::index_cpu_to_gpu_multiple(res,devs,&cpu_index);printf("is_trained = %s\n", gpu_index->is_trained ? "true" : "false");gpu_index->add(nb, xb); // vectors to the indexprintf("ntotal = %ld\n", gpu_index->ntotal);int k = 4;{ // search xqlong *I = new long[k * nq];float *D = new float[k * nq];gpu_index->search(nq, xq, k, D, I);// print resultsprintf("I (5 first results)=\n");for(int i = 0; i < 5; i++) {for(int j = 0; j < k; j++)printf("%5ld ", I[i * k + j]);printf("\n");}printf("I (5 last results)=\n");for(int i = nq - 5; i < nq; i++) {for(int j = 0; j < k; j++)printf("%5ld ", I[i * k + j]);printf("\n");}delete [] I;delete [] D;}delete gpu_index;for(int i = 0; i < ngpus; i++) {delete res[i];}
