概述,需要注意以下幾個問題:
(1)NVIDIA的顯卡驅動程序和CUDA完全是兩個不同的概念哦!CUDA是NVIDIA推出的用於自家GPU的並行計算框架,也就是說CUDA只能在NVIDIA的GPU上運行,而且只有當要解決的計算問題是可以大量並行計算的時候才能發揮CUDA的作用。
CUDA的本質是一個工具包(ToolKit);但是二者雖然不一樣的。
顯卡驅動的安裝:
當我們使用一台電腦的時候默認的已經安裝了NVIDIA的顯卡驅動,因為沒有顯卡驅動根本用不了顯卡嘛,但是這個時候我們是沒有CUDA可以用的,我們可以更新我們的驅動,更新鏈接為:
https://www.nvidia.com/Download/index.aspx?lang=en-us
在這個里面可以根據自己的顯卡類型選擇最新的驅動程序。顯卡驅動程序當前大小大概500多M。
CUDA ToolKit的安裝:
CUDA的下載地址為:https://developer.nvidia.com/cuda-downloads
我們可以選擇兩種安裝方式,一種是在線安裝(我還沒用過),一中離線安裝(我采用的)即本地安裝,
當我們選擇離線安裝,當我們選定相對應的版本之后,下載的時候發現這個地方的文件大小大概在2G左右,Linux系統下面我們選擇runfile(local)
完整安裝包從本地安裝,或者是選擇windows的本地安裝。CUDA Toolkit本地安裝包時內含特定版本Nvidia顯卡驅動的,所以只選擇下載CUDA Toolkit就足夠了,如果想安裝其他版本的顯卡驅動就下載相應版本即可。
所以,NVIDIA顯卡驅動和CUDA工具包本身是不具有捆綁關系的,也不是一一對應的關系,只不過是離線安裝的CUDA工具包會默認攜帶與之匹配的最新的驅動程序。
注意事項:NVIDIA的顯卡驅動器與CUDA並不是一一對應的哦,CUDA本質上只是一個工具包而已,所以我可以在同一個設備上安裝很多個不同版本的CUDA工具包,比如我的電腦上同事安裝了 CUDA 9.0、CUDA 9.2、CUDA 10.0三個版本。一般情況下,我只需要安裝最新版本的顯卡驅動,然后根據自己的選擇選擇不同CUDA工具包就可以了,但是由於使用離線的CUDA總是會捆綁CUDA和驅動程序,所以在使用多個CUDA的時候就不要選擇離線安裝的CUDA了,否則每次都會安裝不同的顯卡驅動,這不太好,我們直接安裝一個最新版的顯卡驅動,然后在線安裝不同版本的CUDA即可。
總結:CUDA和顯卡驅動是沒有一一對應的。
(2)cuDNN是一個SDK,是一個專門用於神經網絡的加速包,注意,它跟我們的CUDA沒有一一對應的關系,即每一個版本的CUDA可能有好幾個版本的cuDNN與之對應,但一般有一個最新版本的cuDNN版本與CUDA對應更好。
總結:cuDNN與CUDA沒有一一對應的關系
(3)CUDA 工具包附帶的 CUPTI。
CUPTI,即CUDA Profiling Tools Interface (CUPTI)。在CUDA分析工具接口(CUPTI)能夠分析和跟蹤靶向CUDA應用程序的工具的創建。CUPTI提供以下API:
- Activity API,
- Callback API,
- 事件API,
- Metric API,和
- Profiler API。
使用這些API,您可以開發分析工具,深入了解CUDA應用程序的CPU和GPU行為。CUPTI作為CUDA支持的所有平台上的動態庫提供。請參閱CUPTI文檔。
一、tensorflow各個版本需要的CUDA版本以及Cudnn的對應關系
1.1 對應表格
相應的網址為:
https://www.tensorflow.org/install/source#common_installation_problems
https://www.tensorflow.org/install/source_windows
版本 | Python 版本 | 編譯器 | 編譯工具 | cuDNN | CUDA |
---|---|---|---|---|---|
tensorflow_gpu-2.0.0-alpha0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.19.2 | 7.4.1以及更高版本 | CUDA 10.0 (需要 410.x 或更高版本) |
tensorflow_gpu-1.13.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.19.2 | 7.4 | 10.0 |
tensorflow_gpu-1.12.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.11.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.10.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.15.0 | 7 | 9 |
tensorflow_gpu-1.9.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.11.0 | 7 | 9 |
tensorflow_gpu-1.8.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.10.0 | 7 | 9 |
tensorflow_gpu-1.7.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.6.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.9.0 | 7 | 9 |
tensorflow_gpu-1.5.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.8.0 | 7 | 9 |
tensorflow_gpu-1.4.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.5.4 | 6 | 8 |
tensorflow_gpu-1.3.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 6 | 8 |
tensorflow_gpu-1.2.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.5 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 2.7、3.3-3.6 | GCC 4.8 | Bazel 0.4.2 | 5.1 | 8 |
現在NVIDIA的顯卡驅動程序已經更新到 10.1版本,最新的支持CUDA 10.1版本的cuDNN為7.5.0
1.2 CUDA的命名規則
下面以幾個例子來說
(1)CUDA 9.2
CUDA 9.2.148
(2)CUDA 10.0
CUDA 10.0.130.411.31(后面的411.31對應更具體的版本號)
(3)CUDA 10.1
CUDA 10.1.105.418.96(后面的418.96對應更具體的版本號)
更多詳細的請參考如下官網:
https://developer.nvidia.com/cuda-toolkit-archive
1.3 如何查看自己所安裝的CUDA的版本:
(1)直接在NVIDIA的控制面板里面查看NVCUDA.DLL的版本。
注意:這里網上有很多說法是錯誤的,這個版本並不能絕對說明自己所安裝的CUDA工具包一定這個版本
(2)通過命令查看:nvcc -V 或者是nvcc --version都可以,但前提是添加了環境變量
(3)直接通過文件查看,這里分為Linux和windows兩種情況
在windows平台下,可以直接進入CUDA的安裝目錄,比如我的是:
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2 里面有一個version.txt的文本文件,直接打開即可,也可以使用命令,即
首先進入到安裝目錄,然后執行:type version.txt 即可查看
在Linux平台下:
同windows類似,進入到安裝目錄,然后執行 cat version.txt 命令
1.4 如何查看自己的cuDNN的版本
因為cuDNN本質上就是一個C語言的H頭文件,
(1)在windows平台下:
直接進入安裝目錄:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include 之下,然后找到
cudnn.h 的頭文件,直接到開查看,在最開始的部分會有如下定義:
即7500,也就是cudnn的版本為7.5.0版本;
(2)在Linux下當然也可以直接查看,但是通過命令更簡單,進入到安裝目錄,執行如下命令:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2 即可查詢
即5005,即5.0.5版本的cudnn。
二、CUDA與相對應的Cudnn對應關系
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 10.0
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.2
Download cuDNN v7.4.2 (Dec 14, 2018), for CUDA 9.0
Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 10.0
Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 9.2
Download cuDNN v7.4.1 (Nov 8, 2018), for CUDA 9.0
Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 10.0
Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 9.2
Download cuDNN v7.3.1 (Sept 28, 2018), for CUDA 9.0
Download cuDNN v7.3.0 (Sept 19, 2018), for CUDA 10.0
Download cuDNN v7.3.0 (Sept 19, 2018), for CUDA 9.0
Download cuDNN v7.2.1 (August 7, 2018), for CUDA 9.2
Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.2
Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.0
Download cuDNN v7.1.4 (May 16, 2018), for CUDA 8.0
Download cuDNN v7.1.3 (April 17, 2018), for CUDA 9.1
Download cuDNN v7.1.3 (April 17, 2018), for CUDA 9.0
Download cuDNN v7.1.3 (April 17, 2018), for CUDA 8.0
Download cuDNN v7.1.2 (Mar 21, 2018), for CUDA 9.1 & 9.2
Download cuDNN v7.1.2 (Mar 21, 2018), for CUDA 9.0
Download cuDNN v7.0.5 (Dec 11, 2017), for CUDA 9.1
Download cuDNN v7.0.5 (Dec 5, 2017), for CUDA 9.0
Download cuDNN v7.0.5 (Dec 5, 2017), for CUDA 8.0
Download cuDNN v7.0.4 (Nov 13, 2017), for CUDA 9.0
Download cuDNN v6.0 (April 27, 2017), for CUDA 8.0
Download cuDNN v6.0 (April 27, 2017), for CUDA 7.5
Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0
Download cuDNN v5.1 (Jan 20, 2017), for CUDA 7.5
Download cuDNN v5 (May 27, 2016), for CUDA 8.0
Download cuDNN v5 (May 12, 2016), for CUDA 7.5
Download cuDNN v4 (Feb 10, 2016), for CUDA 7.0 and later.
Download cuDNN v3 (September 8, 2015), for CUDA 7.0 and later.
Download cuDNN v2 (March 17,2015), for CUDA 6.5 and later.
Download cuDNN v1 (cuDNN 6.5 R1)
三、NVIDIA顯卡以及對應的顯卡驅動的對應關系
由於NVIDIA存在多個系列的顯卡類型,把這里僅僅顯示出GeForce系列的顯卡以及各個顯卡的計算能力(compute capability),詳情可以參考官網鏈接:
https://developer.nvidia.com/cuda-gpus
(2)GeForce Notebook Products(筆記本電腦)
官網文檔:https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
https://www.tensorflow.org/install/gpu
Ubuntu 安裝 CUDA 和 cuDNN 詳細步驟 for tf2x
1. 確保 nvidia 驅動已安裝
先安裝 nvidia
驅動,請參考前面文章 https://blog.csdn.net/wohu1104/article/details/107032493
2. 安裝 CUDA
2.1 下載安裝
在官網 https://developer.nvidia.com/cuda-toolkit-archive如下截圖, 選擇自己系統對應的 CUDA
版本,
2.2 CUDA 10.2 安裝
然后點擊進去,進入安裝方式頁面,如下圖然后在命令行中執行以下語句:
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.runsudo sh cuda_10.2.89_440.33.01_linux.run
安裝過程如下:
這里注意去勾選 NVIDIA Driver
因為前面已經安裝,所以此處不需要再安裝。
確認
Yes
,添加動態鏈接。
安裝完成后的輸出結果如下:
wohu@ubuntu1804:~/CUDA10-linux$ sudo ./cuda_10.2.89_440.33.01_linux.run =========== = Summary = =========== Driver: Not Selected Toolkit: Installed in /usr/local/cuda-10.2/ Samples: Installed in /home/wohu/, but missing recommended libraries Please make sure that - PATH includes /usr/local/cuda-10.2/bin - LD_LIBRARY_PATH includes /usr/local/cuda-10.2/lib64, or, add /usr/local/cuda-10.2/lib64 to /etc/ld.so.conf and run ldconfig as root To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-10.2/bin Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-10.2/doc/pdf for detailed information on setting up CUDA. ***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 440.00 is required for CUDA 10.2 functionality to work. To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file: sudo <CudaInstaller>.run --silent --driver Logfile is /var/log/cuda-installer.log
可以看到 /usr/local/
目錄下已經有 cuda -> /usr/local/cuda-10.2//
軟鏈接。
wohu@ubuntu1804:~/CUDA10-linux$ ll /usr/local/
total 48
drwxr-xr-x 12 root root 4096 6月 30 09:25 ./
drwxr-xr-x 11 root root 4096 2月 4 02:25 ../ drwxr-xr-x 2 root root 4096 2月 4 02:22 bin/ lrwxrwxrwx 1 root root 21 6月 30 09:25 cuda -> /usr/local/cuda-10.2// drwxr-xr-x 18 root root 4096 6月 30 09:25 cuda-10.2/ drwxr-xr-x 2 root root 4096 2月 4 02:22 etc/ drwxr-xr-x 2 root root 4096 2月 4 02:22 games/ drwxr-xr-x 2 root root 4096 2月 4 02:22 include/ drwxr-xr-x 4 root root 4096 6月 29 18:35 lib/ lrwxrwxrwx 1 root root 9 6月 16 16:24 man -> share/man/ drwxr-xr-x 2 root root 4096 2月 4 02:22 sbin/ drwxr-xr-x 6 root root 4096 2月 4 02:25 share/ drwxr-xr-x 2 root root 4096 2月 4 02:22 src/ drwxr-xr-x 6 root root 4096 6月 19 18:49 sunlogin/ wohu@ubuntu1804:~/CUDA10-linux$
2.3 CUDA 10 安裝
Do you accept the previously read EULA? accept/decline/quit: accept Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48? (y)es/(n)o/(q)uit: n Install the CUDA 10.0 Toolkit? (y)es/(n)o/(q)uit: y Enter Toolkit Location [ default is /usr/local/cuda-10.0 ]: 回車 Do you want to install a symbolic link at /usr/local/cuda? (y)es/(n)o/(q)uit: y Install the CUDA 10.0 Samples? (y)es/(n)o/(q)uit: y Enter CUDA Samples Location [ default is /home/linkdome ]: 回車
2.4 添加環境變量
打開 ~/.bashrc
sudo vi ~/.bashrc
在文件最后添加以下環境變量到 ~/.bashrc
並保存退出。
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
使其生效
sudo source ~/.bashrc
2.5 驗證安裝成功
最后輸入命令 nvcc -V
有如下輸出,說明已安裝成功。
wohu@ubuntu1804:/$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2019 NVIDIA Corporation Built on Wed_Oct_23_19:24:38_PDT_2019 Cuda compilation tools, release 10.2, V10.2.89 wohu@ubuntu1804:/$
3. 安裝 cuDNN
3.1 下載
官網地址 https://developer.nvidia.com/rdp/form/cudnn-download-survey 注冊賬號,並下載對應版本的 cuDNN
版本。
3.2 安裝
對壓縮包進行解壓:
tar -xvf cudnn-10.2-linux-x64-v7.6.5.32.tgz
解壓過程如下:
wohu@ubuntu1804:~/CUDA10-linux$ tar -xvf cudnn-10.2-linux-x64-v7.6.5.32.tgz cuda/include/cudnn.h cuda/NVIDIA_SLA_cuDNN_Support.txt cuda/lib64/libcudnn.so cuda/lib64/libcudnn.so.7 cuda/lib64/libcudnn.so.7.6.5 cuda/lib64/libcudnn_static.a wohu@ubuntu1804:~/CUDA10-linux$
執行以下命令:
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
3.3 驗證是否安裝成功
輸入以下命令,
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
有如下輸出,說明已安裝成功。
Ubuntu 安裝 NVIDIA 顯卡驅動詳細步驟(ERROR: The Nouveau kernel driver is currently in use by your system)
1. 禁用 Nouveau 驅動
在禁用 Nouveau
驅動前我們先了解下它是啥?有什么作用。
Nouveau
是由第三方為 NVIDIA
顯卡開發的一個開源 3D 驅動,也沒能得到 NVIDIA
的認可與支持。雖然 Nouveau Gallium3D
在游戲速度上還遠遠無法和 NVIDIA
官方私有驅動相提並論,不過卻讓 Linux
更容易的應對各種復雜的 NVIDIA
顯卡環境,讓用戶安裝完系統即可進入桌面並且有不錯的顯示效果,所以,很多 Linux
發行版默認集成了 Nouveau
驅動,在遇到 NVIDIA
顯卡時默認安裝。
企業版的Linux
更是如此,幾乎所有支持圖形界面的企業 Linux
發行版都將 Nouveau
收入其中。
對於個人桌面用戶來說,處於成長階段的 Nouveau
並不完美,與企業版不一樣,個人用戶除了想讓正常顯示圖形界面外很多時候還需要一些 3D 特效,Nouveau
多數時候並不能完成,而用戶在安裝 NVIDIA
官方私有驅動的時候 Nouveau
又成為了阻礙,不禁用 Nouveau
安裝時總是報錯, 錯誤如下:
ERROR: The Nouveau kernel driver is currently in use by your system. This driver is incompatible with the NVIDIA driver……
打開 terminal
,輸入
sudo vim /etc/modprobe.d/blacklist-nouveau.conf
在文件最后加入以下內容
blacklist nouveau
options nouveau modeset=0
更新使其生效
sudo update-initramfs -u
重啟機器
reboot
檢查是否禁用成功
lspci | grep nouveau
沒有內容輸出,說明禁用成功。
2. 安裝 gcc/cmake
sudo apt-get install build-essential sudo apt-get install cmake
檢查是否安裝成功:
gcc --version
cmake --version
有版本號顯示說明安裝成功。
3. 安裝 NVIDIA 驅動
輸入以下命令,檢查系統推薦的驅動版本
ubuntu-drivers devices
輸出如下:
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 == modalias : pci:v000010DEd00001B80sv00007377sd00001110bc03sc00i00 vendor : NVIDIA Corporation model : GP104 [GeForce GTX 1080] manual_install: True driver : nvidia-driver-440 - distro non-free recommended driver : xserver-xorg-video-nouveau - distro free builtin
可以看到 driver
一行中共有推薦的驅動程序版本號
這里不推薦使用 sudo apt install nvidia-driver-440
這種方式安裝。
3.1 官網下載驅動
https://www.nvidia.cn/Download/index.aspx?lang=cn
選擇自己系統對應的驅動,並點擊 “搜索” 下載進行下載。
3.2 關閉顯示模式
同時按住 Ctrl+Alt+F1
進入 tty1 終端模式,並且輸入下面命令關閉顯示管理:
sudo service lightdm stop
3.3 安裝驅動
在命令行終端運行剛才下載的驅動:
sudo ./NVIDIA-Linux-x86_64-440.82.run --no-opengl-files
安裝過程按照下面步驟進行選擇:
3.4 檢查安裝結果
重啟機器后,輸入 nvidia-smi
查看輸出顯示類似下面,就說明已經安裝成功。
wohu@ubuntu1804:/home$ nvidia-smi
Tue Jun 30 06:35:37 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.82 Driver Version: 440.82 CUDA Version: 10.2 | |-------------------------------+----------------------+----------------------+ | 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 1080 Off | 00000000:01:00.0 Off | N/A | | 0% 47C P8 8W / 180W | 17MiB / 8116MiB | 0% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 916 G /usr/lib/xorg/Xorg 15MiB | +-----------------------------------------------------------------------------+ wohu@ubuntu1804:/home$