[关闭]
@CrazyHenry 2018-05-08T09:52:55.000000Z 字数 2160 阅读 2368

Install faiss on GPU

hhhhfaiss


1.检查环境

  1. 在这个目录:/usr/local //看cuda的版本
  2. free -m #内存
  3. df -h
  4. cat /proc/cpuinfo #CPU
  5. lspci | grep VGA #GPU

image_1cct91la51rn91njtjuugkq1k1539.png-27.9kB

image_1cct94n4bnv71dtrt9a1ko11cc3m.png-50.2kB

image_1cct967agk7413ai10fbeur1fen43.png-14.1kB

2.clone

  1. git clone https://github.com/facebookresearch/faiss.git
  2. cp -r faiss faiss.back //备份一份

3.编译CPU版

  1. faiss主目录下
  2. cp example_makefiles/makefile.inc.Linux makefile.inc #makefile.inc用来辅助Makefile

4.安装intel MKL

  1. scp -r l_mkl_2017.0.098.tgz liyingmin@10.31.33.120:/home/liyingmin/temp
  2. # 如果在bashrc多写了so,进去删除即可
  3. #解压安装MKL
  4. tar -xzf l_mkl_2017.0.098.tgz
  5. bash install.sh
  6. 只要输入了serial number3VGW-N6PJ7GCN)就行,选3user安装

5.修改makefile.inc编译

  1. #修改makefile.inc
  2. 取消MKL的注释
  3. 注释掉OpenBlas
  4. 修改以下路径
  5. $MKLROOT = /home/liyingmin/intel/compilers_and_libraries/linux/mkl
  6. #完成一些路径设置
  7. echo 'export LD_LIBRARY_PATH="/home/liyingmin/intel/compilers_and_libraries/linux/mkl/lib/intel64:$LD_LIBRARY_PATH"' >> ~/.bashrc
  8. echo 'export LD_PRELOAD="/home/liyingmin/intel/compilers_and_libraries/linux/mkl/lib/intel64/libmkl_core.so:/home/liyingmin/intel/compilers_and_libraries/linux/mkl/lib/intel64/libmkl_sequential.so:$LD_PRELOAD"' >> ~/.bashrc
  9. source ~/.bashrc
  10. make

测试demo

  1. scp sift.tar.gz liyingmin@10.31.33.120:/home/liyingmin/proj/faiss_proj/faiss
  2. tar -zxf sift.tar.gz
  3. mv sift sift1M
  4. make demos/sif..
  5. ./demos/demo_sift1M

image_1cctd99i118sc195i1ov712nu1ci519.png-356.9kB

6.GPU版本

  1. cd gpu
  2. make -j10
  3. echo 'export PATH="/usr/local/cuda-8.0/bin:$PATH"' >> ~/.bashrc
  4. echo 'export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc
  5. echo 'export LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LIBRARY_PATH"' >> ~/.bashrc
  6. source ~/.bashrc

由于这里在make的时候报错了,猜测应该是intel MKL的锅。

image_1ccum09pd10s5lov3c1ar613cb9.png-159.4kB

7.恢复使用openblas编译GPU版本

GPU机子上都已经安装好了需要的软件源!而且openblas已经装好了!不需要再安装了!
可以通过以下方式检测openblas的安装:

  1. cd /usr/lib64
  2. //到这个目录下检查是否有libopenblas.so文件

修改makefile.inc文件:

  1. MKL的注释掉
  2. 解除openblas的注释
  3. BLASCFLAGS=-DFINTEGER=int
  4. BLASLDFLAGS?=/usr/lib64/libopenblas.so.0
  1. cd gpu
  2. make clean //clean掉以前的编译结果
  3. make -j10
  4. echo 'export PATH="/usr/local/cuda-8.0/bin:$PATH"' >> ~/.bashrc
  5. echo 'export LD_LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH"' >> ~/.bashrc
  6. echo 'export LIBRARY_PATH="/usr/local/cuda-8.0/lib64:$LIBRARY_PATH"' >> ~/.bashrc
  7. source ~/.bashrc

编译完成后,出现libgpufaiss.a文件

test:

  1. make gpu/test/demo_ivfpq_indexing_gpu
  2. ./gpu/test/demo_ivfpq_indexing_gpu

image_1ccun4ri815rc1uh2dlhsad1j12m.png-354.5kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注