作者:只要开始永远不晚

cudaErrorNoKernelImageForDevice: no kernel image is available for execution on the device

错误现象: 

File "/flagemb/FlagEmbedding/baai_general_embedding/finetune/eval_msmarco.py", line 119, in index
    faiss_index.add(corpus_embeddings)

line 230, in replacement_add
    self.add_c(n, swig_ptr(x))

File "/.conda/envs/emb/lib/python3.10/site-packages/faiss/swigfaiss_avx2.py", line 9489, in add
    return _swigfaiss_avx2.IndexReplicas_add(self, n, x)

RuntimeError: Exception thrown from index 0: parallel_for failed: cudaErrorNoKernelImageForDevice: no kernel image is available for execution on the device
...
Exception thrown from index 7: parallel_for failed: cudaErrorNoKernelImageForDevice: no kernel image is available for execution on the device

尝试了几个不同的faiss版本但是没有解决问题。

解决办法

# namespace-Pt commented on Oct 24, 2023
# 官网的测评基于faiss 1.7.2 cudatoolkit=11.8。
# 可以通过如下命令安装:(至少在windows上得和下面的版本一致才行),尤其是你想运行bge的测评代码

#请用conda安装,多试几次。至少在windows上pip装不了faiss-gpu
conda install -c conda-forge faiss-gpu==1.7.2 cudatoolkit=11.8