第一部分,準備材料(NVIDIA官網下載下傳):
顯示卡驅動NVIDIA-Linux-x86_64-367.44.run
Cuda8.0cuda_8.0.27_linux.run
網址:https://developer.nvidia.com/cuda-downloads
Cudnncudnn-7.0-linux-x64-v4.0-prod.tgz
網址:https://developer.nvidia.com/cudnn
第二部分,安裝步驟
2.1系統安裝
系統選擇ubuntu14.04,下載下傳後ultrISO制作到U盤安裝,不細說了。關閉系統更新。
2.2、安裝依賴
安裝編譯工具:$sudo apt-get install build-essential # basic requirement
$sudo apt-get install cmake git
$sudo apt-get update #update source
安裝依賴項: $sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev protobuf-compiler
$sudo apt-get install --no-install-recommends libboost-all-dev
$sudo apt-get install libopenblas-dev liblapack-dev libatlas-base-dev
$sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev
$sudo apt-get install python-numpy python-scipy python-matplotlib
2.3、禁用nouveau驅動
ALT+CTRL+F1,進指令行;
$sudo service lightdm stop
$sudo apt-get --purge remove nvidia-*
建立黑名單,禁止系統自帶驅動:$sudo vi /etc/modprobe.d/blacklist-nouveau.conf
輸入: blacklist nouveau
options nouveau modset=0
儲存推出(:wq)
然後執行:$sudo update-initramfs –u #更新核心
執行 $lspci | grep nouveau,檢視是否有内容,沒有說明禁用成功,如果有内容,就$sudo reboot
重新開機:$sudo reboot
重新開機後,在登入界面,不要登入進桌面,直接ALT+CTRL+F1進指令行
2.4、安裝cuda8.0
進入cuda_8.0.27_linux.run所在目錄
$cd /home/smith/Downloads
$sudo chmod +x cuda_8.0.27_linux.run
$sudo ./cuda_8.0.27_linux.run
按q鍵退出RELU文檔,按照如下選擇,顯示卡驅動一定要選n,不裝
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 361.62?
(y)es/(n)o/(q)uit: n
Install the CUDA 8.0 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-8.0 ]:
Do you want to install a symbolic link at /usr/local/cuda?
Install the CUDA 8.0 Samples?
Enter CUDA Samples Location
[ default is /home/zhou ]:
Installing the CUDA Toolkit in /usr/local/cuda-8.0 …
完成後看到
Driver: Not Selected
Toolkit: Installed in /usr/local/cuda-8.0
Samples: Installed in /home/zhou, but missing recommended libraries
最後,配置環境變量,直接放在系統配置檔案profile裡面:
$sudo gedit /etc/profile
在最後面加入兩行代碼:
export PATH=/usr/local/cuda-8.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64:$LD_LIBRARY_PATH
儲存退出.
執行:$sudo ldconfig
此時,顯示卡驅動沒裝,等待下一步顯示卡驅動裝好後檢查cuda8.0是否裝好。
關于解除安裝cuda:
$cd /usr/local/cuda-8.0/bin
$sudo ./uninstall_cuda_8.0.pl
2.5、顯示卡驅動安裝
進入顯示卡驅動目錄
$sudo su
$sudo ./NVIDIA-Linux-x86_64-367.44.run
一路按照提示選擇安裝,具體不記得了,主要有接受協定,在系統核心注冊,用新路徑注冊,更新X-server,安裝完成後會自動回到指令行
重新開機電腦:$sudo reboot
輸入密碼進入桌面
2.6、檢查之前的安裝
此時在home目錄下會出現檔案夾NVIDIA_CUDA-8.0_Samples,打開終端,進入該目錄:
$sudo make –j8 #編譯samples,我電腦8線程,全開編譯
等待2分鐘左右,編譯完成,執行下條指令:
$sudo ./1_Utilities/deviceQuery/deviceQuery
出現如下資訊,cuda8.0安裝成功(忘記截圖了,下面資訊是gtx670裝cuda6.5的)
./deviceQuery Starting...
CUDA Device Query (Runtime API) version (CUDART static linking)
Detected 1 CUDA Capable device(s)
Device 0: "GeForce GTX 670"
CUDA Driver Version / Runtime Version 6.5 / 6.5
CUDA Capability Major/Minor version number: 3.0
Total amount of global memory: 4095 MBytes (4294246400 bytes)
( 7) Multiprocessors, (192) CUDA Cores/MP: 1344 CUDA Cores
GPU Clock rate: 1098 MHz (1.10 GHz)
Memory Clock rate: 3105 Mhz
Memory Bus Width: 256-bit
L2 Cache Size: 524288 bytes
Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers
Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 49152 bytes
Total number of registers available per block: 65536
Warp size: 32
Maximum number of threads per multiprocessor: 2048
Maximum number of threads per block: 1024
Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
Max dimension size of a grid size (x,y,z): (2147483647, 65535, 65535)
Maximum memory pitch: 2147483647 bytes
Texture alignment: 512 bdeclared as function returning an arrayytes
Concurrent copy and kernel execution: Yes with 1 copy engine(s)
Run time limit on kernels: Yes
Integrated GPU sharing Host Memory: No
Support host page-locked memory mapping: Yes
Alignment requirement for Surfaces: Yes
Device has ECC support: Disabled
Device supports Unified Addressing (UVA): Yes
Device PCI Bus ID / PCI location ID: 1 / 0
Compute Mode:
< Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = GeForce GTX 670
Result = PASS
可以看到,最後出現了PASS,安裝cuda完成。
還可以:
$nvcc –version
檢視nvcc版本
$nvidia–smi
顯示(具體機子不一樣,這圖不是我的):
2.7、Atlas安裝
sudo apt-get install libatlas-base-dev
實際上這步在之前安裝依賴項時已經安裝過了。
2.8、cuDNN安裝
$tar -zxvf cudnn-7.0-linux-x64-v5.1-prod.tgz
$cd cuda
$sudo cp lib64/lib* /usr/local/cuda/lib64/
$sudo cp include/cudnn.h /usr/local/cuda/include/
更新軟連接配接:
$cd /usr/local/cuda/lib64/
$sudo chmod +r libcudnn.so.5.1.5
$sudo ln -sf libcudnn.so.5.1.5 libcudnn.so.5
$sudo ln -sf libcudnn.so.5 libcudnn.so
更新設定:
$sudo ldconfig
2.9拉取caffe源碼
git clone https://github.com/BVLC/caffe.git
2.10.安裝python的pip和easy_install,友善安裝軟體包(超慢的下載下傳。。。)
$sudo wget --no-check-certificate https://bootstrap.pypa.io/ez_setup.py
$sudo python ez_setup.py --insecure
$wget https://bootstrap.pypa.io/get-pip.py
$sudo python get-pip.py
2.11.安裝python依賴(路徑根據自己的目錄可能要調一下)
$cd caffe/python
$for req in $(cat requirements.txt); do pip install $req; done
這步安裝也有點慢,别急,等會兒,先去幹點别的 ^_^(幹點别的回來還沒好。。。)
2.12.編輯caffe所需的Makefile檔案,配置
$cd caffe
$cp Makefile.config.example Makefile.config
$sudo gedit Makefile.config
$Makefile.config裡面有依賴庫的路徑,及各種編譯配置,取消USE_CUDNN := 1的注釋,開啟GPU,USE_LMDB := 1
配置運作環境,調用CUDA庫,在/etc/ld.so.conf.d目錄建立caffe.conf,
$sudo gedit /etc/ld.so.conf.d/caffe.conf
添加:
/usr/local/cuda/lib64
儲存退出,執行:
2.13、編譯caffe、pycaffe
進入caffe根目錄,
$sudo make –j4
測試一下結果,
$sudo make test –j4
$sudo make runtest –j4
(runtest中個别沒通過沒關系,不影響使用)
$sudo make pycaffe –j4
$sudo make distribute
第三部分,拿cifar10測試下效果
$cd /home/smith/caffe
$sudo sh data/cifar10/get_cifar10.sh (腳本下載下傳速度太慢,找個迅雷下載下傳拷進來,再照腳本解壓)
# sudo sh examples/cifar10/create_cifar10.sh
# sudo sh examples/cifar10/train_quick.sh
下面,網絡開始初始化、訓練了,loss會開始下降,很快的就會出現優化完成。
PS:
1、嘗試了安裝opencv3.0.0,可惜失敗了,有部落格說是cuda8.0版本太新,不支援了,後面有時間再搞了。
2、Python出現import caffe出錯時,添加;
import sys
sys.path.append(“/home/smith/caffe/python”)
or: $export PYTHONPATH=$PYTHONPATH:/home/smith/caffe/python