升级Faiss后,IVFSQ算法train和add接口性能下降

问题现象

从Faiss 1.7.1版本升级到Faiss 1.7.4版本后,IVFSQ算法在设置useKmeansPP为false的情况下,train和add接口性能下降。

问题原因

在设置useKmeansPP为false的情况下,IVFSQ算法使用IndexFlat来进行CPU聚类。IndexFlat在Faiss 1.7.1版本中,使用了HeapResultHandler::add_results接口;在Faiss 1.7.4版本中,使用了新增的SingleBestResultHandler::add_results接口。前者使用了omp做性能加速,因而性能更好。

解决方案

在Faiss源码的SingleBestResultHandler::add_results接口中添加omp并重新编译安装,进行性能加速。