linux下安装Faiss

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37674858/article/details/88947510

Linux软件编译基本知识

PS:这一部分自己也是一知半解,大家可以自行了解,仅对不太熟悉编译知识的同学进行普及。

正式安装之前先补充一些关于Linux上的开源软件安装流程知识,一般分为三步(./configure && make && make install):

  • ./configure 是用来检测你的安装平台的目标特性,比如它会检测你是不是有CC或GCC,并不是需要CC或GCC,在安装之前需要先运行configure命令设置一些参数来对安装进行控制,比如:./configure -prefix = /usr 意思是把该软件安装在/usr 下,有一些软件还可以加上 –with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。
  • make 就比较简单了,就是通过MAKEFILE 执行编译
  • make install 安装软件,一般是将编译好的库或者头文件放置到/usr/lib 或者/usr/local/lib、/usr/include、/usr/local/include中供其他使用

编译 Faiss(CentOS 7.4)

如果你只是想在python中使用Faiss库,只用看下文的第一点(利用Anaconda3构建开发环境即可),编译C++直接参考第二点)。

(1)利用Anaconda3直接安装Python环境

步骤一:安装anaconda3


# 下载
wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh

# 权限
chmod +x Anaconda3-5.3.0-Linux-x86_64.sh

# 安装
bash Anaconda3-5.3.0-Linux-x86_64.sh

安装过程中需不需要加入环境变量选的是No就手工添加


# 编辑
vi $HOME/.bashrc

# 添加
export PATH="$HOME/anaconda3/bin:$PATH"

# 启用
source $HOME/.bashrc

检查一下是否安装成功


conda list

步骤二:安装Faiss-cpu /Faiss-gpu


# CPU version only
conda install faiss-cpu -c pytorch

# Make sure you have CUDA installed before installing faiss-gpu, otherwise it falls back to CPU version

conda install faiss-gpu -c pytorch # [DEFAULT]For CUDA8.0
conda install faiss-gpu cuda90 -c pytorch # For CUDA9.0
conda install faiss-gpu cuda91 -c pytorch # For CUDA9.1

# cuda90/cuda91 shown above is a feature, it does not install CUDA for you.


(2)编译源码(C++环境)

步骤一:环境安装,安装gcc及g++


# 安装gcc:
yum install gcc 

# 安装g++:
yum install gcc-c++ (权限不够,用在root权限下安装)

# 查看gcc版本,如果是gcc4.8以下建议升级到gcc4.8
gcc -v

步骤二:安装Faiss依赖的数学库(openblas 和 lapack,库的功能请自行百度)

  • 安装OpenBLAS

#没有安装git,先安装git,CentOS安装git
#yum install git

git clone https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS

#如果没有安装gfortran
#yum install gcc-gfortran (unbuntu版 执行 sudo apt-get install gfortran)
make FC=gfortran

#将OpenBLAS安装在/opt下
make install

#之后将编译好的动态库链接至/usr/lib目录下
ln -s /opt/OpenBLAS/lib/libopenblas.so  /usr/lib/libopenblas.so

在 /etc/profile中加入


LD_LIBRARY_PATH=/opt/OpenBLAS/lib
export LD_LIBRARY_PATH

  • 安装lapack

# 下载lapack源码
wget http://www.netlib.org/lapack/lapack-3.4.2.tgz
tar -zxf lapack-3.4.2.tgz

# 首先当然是进入lapack-3.4.2文件夹,然后根据平台的特点,将INSTALL目录下对应的make.inc.XXX复制一份到 lapack-3.4.2目录下,并命名为make.inc, 这里我复制的是INSTALL/make.inc.gfortran,因为我这里用的是gfortran编译器
cd lapack-3.4.2
cp ./INSTALL/make.inc.gfortran ./
mv make.inc.gfortran make.inc

修改lapack-3.4.2/Makefile,因为lapack以来于blas库,所以需要做如下修改(注释第一句话,去掉注释第二句话):


#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib

接着进行编译:


# 编译所有的lapack文件
make

# 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件 
cd lapacke

# 编译lapacke
make  

由于lapack的makefile文件中没有make isntall 命令,需要手工进行安装


# 将lapacke的头文件复制到系统头文件目录
cp include/*.h /usr/include  

# 返回到 lapack-3.4.2 目录 
cd .. 

# 将生成的所有库文件复制到系统库目录 
cp *.a /usr/lib 

这里的头文件包括: lapacke.h, lapacke_config.h, lapacke_mangling.h,lapacke_mangling_with_flags.h lapacke_utils.h

生成的库文件包括: liblapack.a, liblapacke.a, librefblas.a,libtmglib.a

步骤三:编译安装Faiss


# 下载FAISS源码.
git clone https://github.com/facebookresearch/faiss.git

# 进入FAISS源码目录.
cd faiss

# 根据系统配置编译环境. [Linux 为例]
cp example_makefiles/makefile.inc.Linux ./makefile.inc

接着需要验证步骤二中两个数学库安装是否成功,需要执行BLAS测试用例


# 首先先执行./configure,看看环境是否符合编译条件,其中有一些不是必选项,一般管制输出日志的最后一句话有无错误即可
./configure

# 之后进行编译用例测试,若无报错即代表数学库安装成功
make misc/test_blas
./misc/test_blas

接下来终于到了最终的编译安装Faiss的环节了,真的是不容易呀


# 执行最重要的make & make install
make
make install

猜你喜欢

转载自blog.csdn.net/qq_37674858/article/details/88947510