Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
We receive bug reports related to the GPU code that are not actionable because impossible to reproduce. If you start a bug report, please make sure to include (use a gist if it is too bulky):
version of OS, type of GPU, nvidia-smi output
output of ldd on executable or
_swigfaiss_gpu.sofor the Python version
a gdb stacktrace
please open a new issue unless you are certain that you have the exact same one as an existing one. This makes it easier for us to triage.
if you post code, please make it self-contained and as short as possible
Also, please consider the following notes on how to productively report bugs.
ImportError: No module named swigfaiss
This means that Faiss was not compiled.
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
make py again.
C++ has changed several times how NULL pointers should be represented. In the C++ source, we use
nullptr. This is recognized by C++11 compliant compilers. If your flavor of C++ has another idea about this, pass option
-Dnullptr=NULL to the compiler.
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:
If this is not the case, you can pre-process the input vectors with an OPQ transform.
undefined reference to
Here you have probably erased the Faiss Makefile or forgotten to copy the
makefile.inc as instructed in the
What happens is that make is using a C compiler (cc) to compile C++.
Compile command without options
If you see
make g++ -o tests/test_blas tests/test_blas.cpp
Then something happened with the
Makefile. You may have overwritten it with
makefile.inc for example.
Slow brute-force search with OpenBLAS
The search performance with OpenBLAS can degrade seriously because of a bad interaction between OpenMP and OpenBLAS threads. To avoid this,
export OMP_WAIT_POLICY=PASSIVE before running the executable. See issue #53
Crashes in pure Python code
This has been fixed in version 1.4.0, that introduced automatic tracking of c++ references in Python. If you see this error in a version >=1.4.0, please report it as an issue.