步驟:
(一)ubuntu 18.04操作系統(tǒng)
(二)安裝顯卡驅(qū)動程序
(三)安裝cuda驅(qū)動程序
(四)安裝cuDNN驅(qū)動程序
(五)安裝pytorch
(六)安裝tensorflow-gpu
注:pytorch和tensorflow在系統(tǒng)環(huán)境安裝,未采用conda
(一)ubuntu 18.04操作系統(tǒng)
操作系統(tǒng)是由同事幫忙安裝,并且不帶NVIDIA顯卡驅(qū)動和CUDA驅(qū)動。因為之前安裝了一版ubuntu20.04,集成了NVIDIA顯卡驅(qū)動和CUDA驅(qū)動,出現(xiàn)驅(qū)動和tensorflow-gpu不匹配的情況,具體原因未知。所以,同事友好地重新裝了一版ubuntu 18.04,然后驅(qū)動從NVIDIA官網(wǎng)下載自行安裝。
(二)安裝顯卡驅(qū)動程序
1、下載顯卡驅(qū)動程序
驅(qū)動程序下載地址:https://www.nvidia.cn/Download/index.aspx?lang=cn
按環(huán)境進行選擇,下載界面如下:

下載后的文件格式:NVIDIA-Linux-x86_64-460.80.run(我的版本)
2、禁用默認顯卡驅(qū)動
安裝.run文件之前,禁用Ubuntu18.04默認的系統(tǒng)顯卡驅(qū)動,命令如下:
// 修改屬性
$sudo chmod 666 /etc/modprobe.d/blacklist.conf
//用vim打開
$sudo vim /etc/modprobe.d/blacklist.conf
// 在最后一行加入以下幾句,保存退出
blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb
// 對剛才修改的文件進行更新
$sudo update-initramfs -u
// 最好重啟一下服務(wù)器
$sudo reboot
//若執(zhí)行完該句,沒有任何輸出,則nouveau被成功禁用
$lsmod | grep nouveau
3、卸載舊版本的nvidia驅(qū)動
因為我的系統(tǒng)不帶nvidia驅(qū)動,可以不卸載,但如果已經(jīng)有nvidia驅(qū)動,執(zhí)行以下語句卸載:
$sudo apt-get remove --purge nvidia*
4、安裝gcc編譯
如果沒有安裝,或者版本不對應(yīng),有可能會導(dǎo)致驅(qū)動安裝失敗。(我的版本7.5.0)
$sudo apt-get install build-essential \\安裝gcc
$gcc --version \\檢查gcc是否安裝成功
如果有提示g++或cmake沒安裝,執(zhí)行以下語句:
$sudo apt-get install g++
$sudo apt-get install make
5、安裝新的nvidia驅(qū)動
有資料說需要關(guān)閉圖形界面,我并沒有操作這一步。直接執(zhí)行以下命令,并按提示安裝。
//進入文件所在目錄下
$cd /home/xxx/
//修改權(quán)限
$sudo chmod a+x NVIDIA-Linux-x86_64-xxx.run
//執(zhí)行安裝
$sudo ./NVIDIA-Linux-x86_64-460.80.run
安裝成功后,輸入:nvidia-smi,顯示以下界面便是成功。

更新內(nèi)核,并重新啟動計算機(這一步非必須,但最好有)
//更新內(nèi)核
$sudo update-initramfs -u
//重啟服務(wù)器
$sudo reboot now
(三)安裝cuda驅(qū)動程序
1、下載cuda驅(qū)動程序
下載地址:https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=18.04
按照版本環(huán)境進行選擇,下載界面如下:

2、安裝程序
選擇完版本后,會生成幾條安裝語句,執(zhí)行生成的語句即可,建議安裝方式采用runfile[local]:
$wget https://developer.download.nvidia.com/compute/cuda/11.3.1/local_installers/cuda_11.3.1_465.19.01_linux.run
$sudo sh cuda_11.3.1_465.19.01_linux.run
3、配置環(huán)境變量
$sudo vim ~/.bashrc \\進入vim界面。輸入字母i,進入編輯模式
//在bashrc文件中輸入以下命令,注意修改你的cuda版本
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-11.1/lib64
export PATH=$PATH:/usr/local/cuda-11.1/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-11.1
//輸入完成后,點擊esc鍵并輸入:wq!,再按esc鍵退出vim。
//運行.bashrc文件
$source ~/.bashrc
//重啟服務(wù)器
$sudo reboot now
4、檢查安裝成功
輸入:nvcc --version,出現(xiàn)以下界面,便是成功。

注:我安裝的明明是cuda11,nvcc -V顯示版本是9.1,不知道問題出現(xiàn)在哪里,最后也好像沒啥影響。如有大佬知道,請評論留言。
(四)安裝cuDNN驅(qū)動程序
cuDNN其實不用安裝,是把文件下載下來放在cuda指定的目錄下。
1、下載cuDNN
下載地址:https://developer.nvidia.com/rdp/cudnn-archive
下載界面如下,也是按照版本選擇的,下載后是一個壓縮包:

2、安裝
//用tar命令解壓,得到cuda的文件夾:
$tar -zxvf cudnn-11.2-linux-x64-v8.1.0.77.tgz
//拷貝相關(guān)文件到上面安裝的cuda文件中,并賦予權(quán)限:
$sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
cuDNN驅(qū)動程序就算安裝好了。
(五)安裝pytorch
安裝語句:
pip3 install torch==1.7.0+cu110 torchvision==0.8.1+cu110 torchaudio===0.7.0 -f https://download.pytorch.org/whl/torch_stable.html
安裝pytorch一般不太有問題,完成后按以下程序進行測試:
//運行python (啟動命令與你上文中起的別名有關(guān))
$python3
$import torch
$torch.cuda.is_available() \\輸出True則安裝成功
可以用pytorch對cuda版本和cuDNN版本進行打?。?/p>
import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.backends.cudnn.version())
(六)安裝tensorflow
安裝語句(豆瓣源加速更快):
pip3 install tensorflow-gpu==2.4.0 -i http://pypi.douban.com/simple
這里可能遇到的問題:
1、提示:no matching distribution found for tensorflow-gpu==2.4.0
這里我踩了一個巨大的坑,我的系統(tǒng)里有兩個版本的python:python2.7和python3.6。用pip安裝tensorflow-gpu==2.4.0應(yīng)該不會成功,因為在兩個版本的情況下,pip是為python2.7安裝,python2.7最高能安裝tensorflow_gpu-1.15.0版本和tensorflow2.1.0。用pip3也安裝不成功,因為pip3的版本只能升級到9.1版本(這里不知道為什么)。最后解決的方式是:卸載了python2.7,只留python3.6,然后pip3就能升級到21.1版本,tensorflow-gpu==2.4.0安裝成功。
2、import tensorflow之后,不報錯,但提示一堆以下文字:

解決方式是:進入dtype.py,修改對應(yīng)行的代碼,把np.dtype([("quint8", np.uint8, 1)])修改為np.dtype([("quint8", np.uint8, (1,))]),一共修改了6行。
3、import tensorflow之后,不報錯,但tf.test.is_gpu_available()輸出是False。
導(dǎo)致這個問題的原因很多,我的原因是我在安裝tensorflow-gpu==2.4.0之前,安裝了tensorflow1.14.0。解決的方式是:卸載tensorflow1.14.0。
4、import tensorflow之后,tf.test.is_gpu_available()輸出是False,并提示:
解決方式一:運行sudo ln -s /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcusolver.so.11 /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcusolver.so.10,這里的路徑需要和本機保持一致。(對我沒起作用)
解決方式二:運行sudo ln -s /usr/local/cuda-11.3/targets/x86_64-linux/lib/libcusolver.so.11 /usr/local/lib/python3.6/dist-packages/tensorflow/python/libcusolver.so.10,這里的路徑需要和本機保持一致。(對我起作用了)
測試語句:
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
print('GPU', tf.test.is_gpu_available())
a = tf.constant(2.0)
b = tf.constant(4.0)
print(a + b)
輸出:
GPU True
tf.Tensor(6.0, shape=(), dtype=float32)
以上安裝完畢!
參考:
https://www.landui.com/help/nshow-10631.html
https://blog.csdn.net/m0_37412775/article/details/109355044