Skip to content

Troubleshooting

Matthijs Douze edited this page Mar 9, 2017 · 33 revisions

Python errors

ImportError: No module named swigfaiss

This means that Faiss was not compiled.

SWIG error

cd ../python; swig -Doverride= -python -c++ -DGPU_WRAPPER -o ../python/swigfaiss_gpu_wrap.cxx ../swigfaiss.swig
../gpu/StandardGpuResources.h:67: Error: Syntax error in input(3).
make: *** [../python/swigfaiss_gpu_wrap.cxx] error 1

This is probably because the swig version is too old (swig 2.0 does not parse C++11 >>), and you may have erased the swig-generated files by doing make clean. You can restore them by

cd ../python
git checkout swigfaiss_gpu_wrap.cxx swigfaiss_gpu.py swigfaiss_wrap.cxx swigfaiss.py

Then make py again.

NULL/nullptr/0

C++ has changed several times how NULL pointers should be represented. In the C++ source, we use nullptr. To compile on C++03 compilers, we define -Dnullptr=NULL on the command line. This flag should be removed for newer compilers like GCC 6.3.1

GPU Precomputed table error

If you get the following assertion error when constructing an GpuIndexIVFPQ with precomputed tables:

Faiss assertion usePrecomputed_ || IVFPQ::isSupportedNoPrecomputedSubDimSize( this->d / subQuantizers_) failed in void faiss::gpu::GpuIndexIVFPQ::assertSettings_() const at GpuIndexIVFPQ.cu:469Aborted (core dumped)

Then make sure that the ratio between the dimension and the PQ size (d/M) is one of the values mentioned in this function:

https://rawgit.com/facebookresearch/faiss/master/docs/html/PQScanMultiPassNoPrecomputed_8cu_source.html#l00029

If this is not the case, you can pre-process the input vectors with an OPQ transform.

Clone this wiki locally