Introduction
Faiss(Fast AI similarity search) 是Facebook开源的一款基于dense vector快速search 和clustering的工具。底层基于C++实现,用python做封装,而且部分算法为GPU实现。本文主要记录Faiss的安装过程,Faiss随提供了python包,但是要基于conda,而conda在实际中用的较少,所以采用源码编译安装,并编译python接口。
Install
Faiss提供了INSTALL 说明,它依赖于OpenBLAS/LAPACK,因此需实现安装。编译过程分为三个步骤
- 编译C++ core 和examples
- 编译python 接口
- 编译GPU部分
需要注意的是后面两步依赖于第一步的成功编译。
Install OpenBLAS/LAPACK
1 2 3 4 5 6 7 8 9 10 11
| wget http://www.netlib.org/blas/blas.tgz tar zxf blas.tgz cd blas.tgz // 32位系统 gfortran -O2 -std=legacy -fno-second-underscore -c *.f // 64 为系统 gfortran -O3 -std=legacy -m64 -fno-second-underscore -fPIC -c *.f ar r libfblas.a *.o ranlib libfblas.a rm -rf *.o // 清理文件 export BLAS=~/src/BLAS-3.5.0/libfblas.a //导出BLAS环境变量
|
1 2 3 4 5 6 7 8 9 10 11 12 13
| wget http://www.netlib.org/lapack/lapack.tgz tar zxf lapack.tgz cd lapack-3.8.0/ cp INSTALL/make.inc.gfortran make.inc # On Linux with lapack-3.2.1 or newer make lapacklib // 注意:在执行make lapacklib之前,编辑make.inc文件,给OPTS和NOOPT这两个设置都加上-fPIC选项。如果是64位系统,还需要加上-m64选项。修改后,看起来像这样: FORTRAN = gfortran OPTS = -O2 -frecursive -fPIC -m64 DRVOPTS = $(OPTS) NOOPT = -O0 -frecursive -fPIC -m64 LOADER = gfortran make clean # 清理文件 export LAPACK=~/src/lapack-3.8.0/ # 导出LAPACK环境变量
|
1 2 3
| make tests/test_blas
./tests/test_blas
|
至此前期的依赖已经完成,下面可以按照文档的安装进行,注意python接口编译完成之后需要将路径加载到系统路径,否则只能在编译所在目录使用,gpu版本编译的时候需要注意cuda的版本,避免和现有版本起冲突。
评论加载中