纵有疾风起
人生不言弃

离线安装vearch

文章目录

1 安装

1 离线安装go

  1. 去官网下载 1.11.2版本:

go1.11.2.linux-amd64.tar.gz

  1. 解压

sudo tar zxvf go1.11.2.linux-amd64.tar.gz -C /usr/local

  1. 新建go项目根目录

mkdir -p ~/go

  1. 配置环境变量
vim ~/.bashrc # 写入下面5行

# added by golang
export GOROOT="/usr/local/go"
export GOBIN="$GOROOT/bin"
export PATH="$PATH:$GOBIN"
export GOPATH="/home/CPpy36/go"

source ~/.bashrc # 是设置生效
  1. 测试go是否安装成功

安装结束,验证

go version

或者构建helloworld项目验证(可选):

在GOPATH在创建目录:src/hello

在这个目录下创建文件:hello.go内容如下:

package main

import "fmt"

func main() { 
	fmt.Printf("hello, world\n")
}

然后build这个项目

cd $HOME/go/src/hello
go build

上面的命令将在源代码旁边的目录中构建一个名为hello的可执行文件。执行它以查看问候语:

./hello
hello, world

参考:《Centos7 安装go》https://www.jianshu.com/p/c314f2edf19e
参考:《官方安装文档》https://golang.org/doc/install?download=go1.11.2.linux-amd64.tar.gz

2 安装gcc 5

https://blog.csdn.net/displayMessage/article/details/85602701

记得用root权限

  1. 安装gcc 安装g++
yum install gcc -y

yum install gcc-c++ -y
  1. 下载、解压gcc-5.4.0安装包。
wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.4.0/gcc-5.4.0.tar.bz2

tar -xvf gcc-5.4.0.tar.bz2
  1. 下载编译依赖项
cd gcc-5.4.0
./contrib/download_prerequisites

下载的位置在:当前路径;下载的文件为:

MPFR=mpfr-2.4.2
GMP=gmp-4.3.2
MPC=mpc-0.8.1

isl-0.14.tar.bz2
  1. 建立编译输出目录, 生成Makefile文件
mkdir gcc-build-5.4.0
cd gcc-build-5.4.0
../configure -prefix=/usr/local --enable-checking=release --enable-languages=c,c++ --disable-multilib
  1. 开始编译,安装
make  # (不建议使用make -j)

在虚拟机中大概,要1小时? 然后安装:

make install
  1. 将gcc老版本的动态库替换成新的
find / -name "libstdc++.so*"

离线安装vearch插图
高亮部分,是新版的动态库。

重建软链接

# 在 gcc-build-5.4.0 目录下:
cp stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
rm -rf libstdc++.so.6
ln -s libstdc++.so.6.0.21 libstdc++.so.6

  1. 查看是否安装成功
gcc -v 

g++ -v

3 安装faiss

3.1 利用Anaconda3直接安装Python环境

  1. 安装anaconda

  2. pip 安装 torch-1.2.0+cpu 和 torchvision-0.4.0+cpu

  3. pip 安装faiss-cpu

(conda install –download-only 的路径在/home/xuqingtang/.conda/pkgs/)

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

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

# 安装gcc:
yum install gcc 

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

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

3.2.2 安装Faiss依赖的数学库(openblas)

  • 用root安装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)

# 编译大概10分钟
make FC=gfortran   

#将OpenBLAS安装在/opt下
make install

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

sudo export LD_LIBRARY_PATH=/opt/OpenBLAS/lib/ # 设置环境变量

在 /etc/profile中加入

LD_LIBRARY_PATH=/opt/OpenBLAS/lib
export LD_LIBRARY_PATH

或者:

pip install openblas

ln -s $HOME/anaconda3/lib/libopenblas.so.0 /usr/lib64/libopenblas.so.0

3.2.3 安装Faiss依赖的数学库(lapack)

  • 用root安装Faiss依赖的数学库(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: vi Makefile

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

#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib

接着进行编译:

# 编译所有的lapack文件 10分钟
sudo make
 
# 进入lapacke 文件夹,这个文件夹包含lapack的C语言接口文件 
cd lapacke

# 编译lapacke
sudo 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

3.2.4 编译安装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 --without-cuda --with-python=/home/xuqingtang/anaconda3/lib/python3.6     # --without-cuda的意思是仅cpu 没有gpu,还是要看官方文档啊 哭!

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

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

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

可以在项目根目录下看见编译好的静态库和动态库

离线安装vearch插图1

3.2.5 测试Faiss

参考INSTALL.md上的测试用例,

make -C demos demo_ivfpq_indexing

参考:woaw《手把手教你安装Faiss(Linux)》https://juejin.im/post/5bed7cebe51d454e5b5f2c23
参考:官方文档:https://github.com/facebookresearch/faiss/blob/master/INSTALL.md

2 编译vearch

1 下载代码

cd $GOPATH/src # 目录

mkdir -p github.com/vearch

cd github.com/vearch

git clone https://github.com/vearch/vearch.git # 或者手动下载

2 编译gamma

编译之前需要下载cmake:https://gist.github.com/1duo/38af1abd68a2c7fe5087532ab968574e

cd $vearch/engine/gamma # $vearch指的是刚刚下载的vearch文件夹 即:/home/xuqingtang/go/src/github.com/vearch/vearch

mkdir build && cd build

export FAISS_HOME=/home/xuqingtang/downloads/offline_rpm_package_centos7/faiss/faiss/

export ROCKSDB_HOME=the installed path of RocksDB # (optional 可选)

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/xuqingtang/go/src/github.com/vearch/vearch/ps/engine/gammacb/lib ..

make && make install

3 编译vearch

cd $vearch

export FAISS_HOME=the installed path of faiss

export ROCKSDB_HOME=the installed path of RocksDB # (optional 可选)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$vearch/ps/engine/gammacb/lib/lib:$FAISS_HOME/lib 

go build -o vearch  # 当生成vearch文件时,就可以了。

原文链接:https://lookme.blog.csdn.net/article/details/103520765

本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。

未经允许不得转载:起风网 » 离线安装vearch
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录