因為目前的Tensorflow 10不支持Cuda 10.0所以以下教程可以直接略過,而下面教程是關於Cuda 9.0的安裝
安裝條件
檢查顯示卡是否可用
lspci -nnk | grep -i nvidia
會出現類似下面畫面:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b82] (rev a1)
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
01:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10f0] (rev a1)
02:00.0 VGA compatible controller [0300]: NVIDIA Corporation Device [10de:1b82] (rev a1)
Kernel driver in use: nvidia
Kernel modules: nvidiafb, nouveau, nvidia_drm, nvidia
02:00.1 Audio device [0403]: NVIDIA Corporation Device [10de:10f0] (rev a1)
前期準備
檢查升級:
sudo apt-get update
檢查gcc、 python和pip
sudo apt-get install libglu1-mesa libxi-dev libxmu-dev -y
sudo apt-get --yes install build-essential
sudo apt-get install python-pip python-dev -y
sudo apt-get install python-numpy python-scipy -y
安裝驅動程式
檢查是否有安裝Nvidia驅動程式:
若沒有安裝則進行安裝
首先先下載您電腦上安裝的GPU的驅動程式:(若您不是GTX1070,則按下這裡下載)
wget http://us.download.nvidia.com/XFree86/Linux-x86_64/390.87/NVIDIA-Linux-x86_64-390.87.run
添加執行權限:
sudo chmod +x NVIDIA-Linux-x86_64–390.87.run
運行驅動安裝程序
./NVIDIA-Linux-x86_64–390.87.run --silent
安裝後運行下面命令檢查是否安裝成功:
nvidia-smi
會出現
Tue Oct 16 14:47:47 2018
+ — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -+
| NVIDIA-SMI 390.87 Driver Version: 390.87 |
| — — — — — — — — — — — — — — — -+ — — — — — — — — — — — + — — — — — — — — — — — +
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 107… Off | 00000000:01:00.0 Off | N/A |
| 39% 42C P0 40W / 180W | 0MiB / 8119MiB | 0% Default |
+ — — — — — — — — — — — — — — — -+ — — — — — — — — — — — + — — — — — — — — — — — +
| 1 GeForce GTX 107… Off | 00000000:02:00.0 Off | N/A |
| 0% 33C P0 38W / 180W | 0MiB / 8119MiB | 2% Default |
+ — — — — — — — — — — — — — — — -+ — — — — — — — — — — — + — — — — — — — — — — — +
+ — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| No running processes found |
+ — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — -+
安裝CUDA
首先下載CUDA:
wget https://developer.nvidia.com/compute/cuda/10.0/Prod/local_installers/cuda_10.0.130_410.48_linux
添加執行權限:
sudo chmod +x cuda_10.0.130_410.48_linux
開始安裝CUDA:
sudo ./cuda_10.0.130_410.48_linux --driver --silent
sudo ./cuda_10.0.130_410.48_linux --toolkit --silent
sudo ./cuda_10.0.130_410.48_linux --samples --silent
若出現Missing recommended library: libGLU.so,則進行下面命令:
sudo apt-get install libglu1-mesa libxi-dev libxmu-dev libglu1-mesa-dev
安裝CUDA之後,還是需要將CUDA添加至~/.bashrc當中:
export PATH=/usr/local/cuda/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/64:$LD_LIBRARY_PATH
然後再激活~/.bashrc
source ~/.bashrc
再檢查是否安裝完成:
nvcc -V
出現下面信息表示安裝成功:
nvcc: NVIDIA (R) Cuda compiler driver
Copyright © 2005–2018 NVIDIA Corporation
Built on Sat_Aug_25_21:08:01_CDT_2018
Cuda compilation tools, release 10.0, V10.0.130
編譯以及運行Cuda例子,首先切換目錄
cd /usr/local/cuda/samples/7_CUDALibraries/batchCUBLAS/
然後編譯
sudo make
編譯成功會出現下面信息:
“/usr/local/cuda-10.0”/bin/nvcc -ccbin g++ -I../../common/inc -m64 -gencode arch=compute_30,code=compute_30 -o batchCUBLAS.o -c batchCUBLAS.cpp
“/usr/local/cuda-10.0”/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_30,code=compute_30 -o batchCUBLAS batchCUBLAS.o -lcublas
mkdir -p ../../bin/x86_64/linux/release
cp batchCUBLAS ../../bin/x86_64/linux/release
切換到編譯好的範例目錄:
cd /usr/local/cuda/samples/bin/x86_64/linux/release/
運行batchCUBLAS範例:
./batchCUBLAS
成功會出現下面類似畫面:
batchCUBLAS Starting…GPU Device 0: “GeForce GTX 1070 Ti” with compute capability 6.1==== Running single kernels ====Testing sgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0xbf800000, -1) beta= (0x40000000, 2)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00006795 sec GFLOPS=61.727
@@@@ sgemm test OK
Testing dgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0x0000000000000000, 0) beta= (0x0000000000000000, 0)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00038695 sec GFLOPS=10.8393
@@@@ dgemm test OK==== Running N=10 without streams ====Testing sgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0xbf800000, -1) beta= (0x00000000, 0)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00018406 sec GFLOPS=227.878
@@@@ sgemm test OK
Testing dgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0xbff0000000000000, -1) beta= (0x0000000000000000, 0)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00181317 sec GFLOPS=23.1324
@@@@ dgemm test OK==== Running N=10 with streams ====Testing sgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0x40000000, 2) beta= (0x40000000, 2)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00009513 sec GFLOPS=440.907
@@@@ sgemm test OK
Testing dgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0xbff0000000000000, -1) beta= (0x0000000000000000, 0)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00142288 sec GFLOPS=29.4775
@@@@ dgemm test OK==== Running N=10 batched ====Testing sgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0x3f800000, 1) beta= (0xbf800000, -1)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00012779 sec GFLOPS=328.212
@@@@ sgemm test OK
Testing dgemm
#### args: ta=0 tb=0 m=128 n=128 k=128 alpha = (0xbff0000000000000, -1) beta= (0x4000000000000000, 2)
#### args: lda=128 ldb=128 ldc=128
^^^^ elapsed = 0.00167418 sec GFLOPS=25.053
@@@@ dgemm test OKTest Summary
0 error(s)
若出現下面錯誤信息:
./batchCUBLAS: error while loading shared libraries: libcublas.so.10.0: cannot open shared object file: No such file or directory
則進行軟鍊接:
sudo ln -s /usr/local/cuda-10.0/lib64/libcublas.so.10.0 /usr/lib/libcublas.so.10.0
針對deviceQuery範例
sudo ln -s /usr/local/cuda-10.0/lib64/libcufft.so.10.0 /usr/lib/libcufft.so.10.0
安裝CuDNN
從這裡下載CuDNN,而這個頁面需要登錄,而我們在這裡下載了:
cuDNN v7.3.1 Library for Linux
下載後,在Ubuntu內解壓:
tar -xvf cudnn-10.0-linux-x64-v7.3.1.20.tgz
會得到有下面文件的文件夾:
cuda
cuda/include
cuda/lib64
cuda/NVIDIA_SLA_cuDNN_Support.txt
複製檔案過去
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/
sudo cp cuda/lib64/lib* /usr/local/cuda/lib64/
切換到/usr/local/cuda/lib64/文件夾下
cd /usr/local/cuda/lib64/
建立軟鍊結(需要把版本號換成自己的版本號)
sudo chmod +r libcudnn.so.7.3.1
sudo ln -sf libcudnn.so.7.3.1 libcudnn.so.7
sudo ln -sf libcudnn.so.7 libcudnn.so
sudo ldconfig
結束安裝