最近facebook更新了faiss的install.md,所以其實沒什麼好寫的,但是這一路上踩了不少坑還是稍作記錄。
雙系統安裝教程:win10+ubuntu16.04雙系統
gcc、g++、gfortran安裝和降級
推薦安裝gcc6以下版本,方便後面安裝gpu和faiss。ubuntu16.04預設gcc/g++ -5.4,gfortran版本要與gcc/g++相同。
sudo apt-get install -y gcc-5
sudo apt-get install -y g++-5
sudo apt-get install -y gfortran-5
#實現gcc/g++/gfortran降級
cd /usr/bin
sudo rm gcc
sudo ln -s gcc-5 gcc
sudo rm g++
sudo ln -s g++-5 g++
sudo ln -s gfortran-5 gfortran
cmake安裝和公升級
ubuntu16.04的預設cmake版本低於3.17.0,faiss的cmakelists.txt最低版本要求3.17,因此需要對cmake進行公升級
wget
tar -xzvf cmake-3.17.0-linux-x86_64.tar.gz
# 解壓出來的包,將其放在 /opt 目錄下,其他目錄也可以,主要別以後不小心刪了
sudo mv cmake-3.17.0-linux-x86_64 /opt/cmake-3.17.0
# 建立軟鏈結
sudo ln -sf /opt/cmake-3.17.0/bin/* /usr/bin/
# 檢視 cmake 版本
cmake --version
conda安裝
conda install -c pytorch faiss-cpu
直接安裝cpu-only version就python可以直接呼叫
gpu & cuda安裝(大坑,可以跳過)
faiss在編譯時可以自行選擇是否編譯gpu模組,如果不用也就不需要裝這些東西,我反正因為個人原因沒用。好吧其實是裝了驅動和cuda過後編譯也一直報莫名其妙的報錯,懶得搞了就乾脆不裝了。
網上關於nvidia顯示卡驅動的安裝方法很多,最簡單的直接用命令列安裝
#新增源
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
ubuntu-drivers devices
#自動安裝推薦版本的驅動
sudo ubuntu-drivers autoinstall
#檢視是否安裝成果,若失敗直接解除安裝,否則重啟後容易開不了機
nvidia-smi
#解除安裝sudo apt-get remove --purge nvidia*
#解除安裝可能存在的舊版本 nvidia 驅動(對沒有安裝過 nvidia 驅動的主機,這步可以省略,但推薦執行,無害),如果你安裝失敗了也需要執行這一步。
sudo apt-get remove --purge nvidia*
#若安裝失敗也是這樣解除安裝以及
./nvidia-linux-x86_64-430.64.run --uninstall #確保解除安裝乾淨。
#禁用nouveau驅動
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
#在檔案 blacklist-nouveau.conf 中加入如下內容:
blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off
#儲存 :wq
#禁用nouveau 核心模組
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf
sudo update-initramfs -u
reboot #重啟
lsmod |grep nouveau #無顯示則禁用nouveau成功
sudo update-initramfs -u
可能會出現一些warning報缺少韌體,可以參考這篇文章。進入bios關閉secure boot為disable,否則無法安裝成功。按ctr+alt+f1進入tty1字元終端介面。在tty1終端裡執行
sudo service lightdm stop
cd ~/downloads
chmod a+x nvidia-linux-x86_64-430.64.run
sudo ./nvidia-linux-x86_64-430.64.run --no-opengl-files #不安裝opengl
安裝過程中會出現一條什麼pre-install script failed的資訊,不用在意選擇繼續安裝就好。還有一些其他選項。
#驗證安裝是否成功
nvidia-smi
sudo service lightdm start #返回桌面,沒自動跳的話ctrl+alt+f7
sudo service lightdm stop
sudo chmod a+x cuda_10.0_linux.run
sudo ./cuda_10.0_linux.run --no-opengl-libs #不安裝opengl
安裝過程中會有乙個選項問你是否安裝驅動,選no,因為我們之前已經安裝過驅動了,安裝完成後將cuda寫入環境
vim ~/.bashrc
export cuda_home=/usr/local/cuda-10.0
export ld_library_path=/usr/local/cuda-10.0/lib64:$ld_library_path
export path=/usr/local/cuda-10.0/bin:$path
#儲存 :wq
# 驗證cuda是否安裝成功
nvcc --version #顯示cuda版本
openblas & lapack 安裝#在/opt下openblas安裝
cd /opt
git clone
cd openblas
make fc=gfortran
make install
#之後將編譯好的動態庫鏈結至/usr/lib目錄下
ln -s /opt/openblas/lib/libopenblas.so /usr/lib/libopenblas.so
#在/etc/profile中新增環境變數
sudo vim /etc/profile
ld_library_path=/opt/openblas/lib
export ld_library_path
#lapack安裝
wget
tar -zxf lapack-3.4.2.tgz
cd lapack-3.4.2
cp ./install/make.inc.gfortran ./
mv make.inc.gfortran make.inc
#修改makefile中的注釋,就在前面幾行
#lib: lapacklib tmglib
lib: blaslib variants lapacklig tmglib
#儲存 :wq
#開始編譯
make
cd lapacke
make
# 將lapacke的標頭檔案複製到系統頭檔案目錄
cp include/*.h /usr/include
# 返回到 lapack-3.4.2 目錄
cd ..
# 將生成的所有庫檔案複製到系統庫目錄
cp *.a /usr/lib
安裝文件已經寫得很詳細了,在此記錄一下我的安裝過程
git clone
#進入faiss目錄,建立build資料夾
cd faiss
mkdir build
#開始編譯,不編譯gpu
cmake -b build . -dfaiss_enable_gpu=off -dbuild_shared_libs=on
make -c build -j faiss
sudo make -c build install
...後面測試**就跟github上的文件一樣了,有興趣的可以自己看下,測試成功則表示安裝成功
Re 從零開始的動態規劃
有的人,天天在說自己打cf太菜,要學線性規劃,卻連第一步都沒邁出去,不會吧,不會吧,不會那個人就是你吧 f 跑來寫部落格的時間都可以用來學幾個點 咳咳咳言歸正傳,這是我第一篇部落格,用來記錄我假期演算法的學習之路,先立下flag,以後我要每天一更!也許這樣自己就不會咕咕咕 步驟 階段 狀態 決策 策...
Re從零開始的每一天
廣告 日記pro 密碼請私信 雖然 re從零開始的異世界生活 這番我還沒看過 但這番真的太有名了,所以說就想到了,用一下 新的一年,希望我能更好,能把想做的事情堅持下去,也能做到我想做的事情 本日記僅限寒暑假,平時幾乎沒時間,如果記起來的話,會考慮寫一下 時間 time 計畫 plan 詳細資訊 d...
Re 從零開始的Python2 7學習 0
python簡易優雅.life is short,use python.python是guido van rossum在1989年聖誕節期間創造的語言.一邊看廖大教程一邊敲.關於python的基本輸入輸出 print 是python裡最基本也是最常用到的咒語.後來創造這個世界的人發現有些人念得太快了...