Faiss in python and GPU報錯:NotImplementedError: Wrong number or type of arguments for overloaded func

最近在玩faiss,運行這段代碼的時候報錯了:this

res = faiss.StandardGpuResources()
flat_config = 0
index = faiss.GpuIndexFlatL2(res,d,flat_config)prototype

報錯內容見上:接口

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "swigfaiss_gpu.py", line 2958, in __init__
this = _swigfaiss_gpu.new_GpuIndexFlatL2(*args)
NotImplementedError: Wrong number or type of arguments for overloaded function 'new_GpuIndexFlatL2'.
Possible C/C++ prototypes are:
faiss::gpu::GpuIndexFlatL2::GpuIndexFlatL2(faiss::gpu::GpuResources *,faiss::IndexFlatL2 *,faiss::gpu::GpuIndexFlatConfig)
faiss::gpu::GpuIndexFlatL2::GpuIndexFlatL2(faiss::gpu::GpuResources *,faiss::IndexFlatL2 *)
faiss::gpu::GpuIndexFlatL2::GpuIndexFlatL2(faiss::gpu::GpuResources *,int,faiss::gpu::GpuIndexFlatConfig)
faiss::gpu::GpuIndexFlatL2::GpuIndexFlatL2(faiss::gpu::GpuResources *,int)源碼

一開始懷疑是由於以前用conda安裝過 faiss,索性conda uninstall faiss-gpu。卸載後仍是報錯。it

找了半天也沒找到資料。最後看了底層代碼才解決。io

既然解決了就分享給你們:ast

解決的方法是:function

flat_config = faiss.GpuIndexFlatConfig()
flat_config.device = 0module

index = faiss.GpuIndexFlatL2(res, d, flat_config)下載

 

緣由是API接口有了變更,指定GPU卡號的方式不同了。

另外:

安裝faiss只要下載源碼安裝便可。不須要conda 安裝Python版本。

安裝的時候須要提早安裝swig。

相關文章
相關標籤/搜索