文章目录
1 安装
1 离线安装go
- 去官网下载 1.11.2版本:
go1.11.2.linux-amd64.tar.gz
- 解压
sudo tar zxvf go1.11.2.linux-amd64.tar.gz -C /usr/local
- 新建go项目根目录
mkdir -p ~/go
- 配置环境变量
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 # 是设置生效
- 测试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权限
- 安装gcc 安装g++
yum install gcc -y
yum install gcc-c++ -y
- 下载、解压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
- 下载编译依赖项
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
- 建立编译输出目录, 生成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
- 开始编译,安装
make # (不建议使用make -j)
在虚拟机中大概,要1小时? 然后安装:
make install
- 将gcc老版本的动态库替换成新的
find / -name "libstdc++.so*"
高亮部分,是新版的动态库。
重建软链接
# 在 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
- 查看是否安装成功
gcc -v
g++ -v
3 安装faiss
3.1 利用Anaconda3直接安装Python环境
-
安装anaconda
-
pip 安装 torch-1.2.0+cpu 和 torchvision-0.4.0+cpu
-
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
可以在项目根目录下看见编译好的静态库和动态库
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
本站声明:网站内容来源于网络,如有侵权,请联系我们,我们将及时处理。
还没有人抢沙发呢~