參照官網(wǎng)上資料 ,進(jìn)行準備工作
1. 驗證自己的電腦是否有一個(gè)可以支持CUDA的GPU
$ lspci | grep -i nvidia 我的顯示為T(mén)esla P800
if it is listed in http://developer.nvidia.com/cuda-gpus, your GPU is CUDA-capable
2.驗證自己的Linux版本是否支持 CUDA:The CUDA Development Tools are only supported on some specific distributions of Linux. These are listed in the CUDA Toolkit release notes
uname -m && cat /etc/*release
3. 驗證系統是否安裝了gcc 在終端中輸入: $ gcc –v
4. 驗證系統是否安裝了kernel header和 package development
sudo apt-get install linux-headers-$(uname -r)
結果顯示:升級了 0 個(gè)軟件包,新安裝了 0 個(gè)軟件包,要卸載 0 個(gè)軟件包,有 x個(gè)軟件包未被升級. 表示系統里已經(jīng)有了,不用重復安裝。
查看版本之間要求 https://www.tensorflow.org/install/source#linux
gcc需要降級、cudnn需要7,TensorFlow需要1.12.0
官網(wǎng)下載頁(yè)面上是最新的10.1版本,在后面的過(guò)程中才發(fā)現TensorFlow可能還不支持,所以想下載低版本的cuda
下載舊版本的cuda地址,本來(lái)想選擇cuda 9.* ,但里面Ubuntu最高只支持17.10,我的是18.04,所以只能選擇cuda 10.0
1) 禁用 nouveau驅動(dòng)

lsmod | grep nouveau 若無(wú)內容輸出,則禁用成功
我執行以上操作后,還是有輸出,reboot重啟后,無(wú)輸出了。
2)執行安裝腳本
sudo sh cuda_***_linux.run (你下載的runfile安裝包名字)
注意:先accept,安裝項里不要選擇安裝驅動(dòng),避免有坑,其他都yes
會(huì )提示:
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 10.0 functionality to work.忽略就行
可以看到軟連接已經(jīng)指向10.0版本了

3)設置環(huán)境變量
在主目錄下的~/.bashrc文件添加如下路徑
- export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64
- export PATH=$PATH:/usr/local/cuda-10.0/bin
- export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.0
用su直接切換到root,再執行 source ~/.bashrc
4)檢測是否安裝成功

出現以下結果



博客里說(shuō)這個(gè)result為pass則為成功
時(shí)隔幾個(gè)月之后,cuda又不能正常使用了

顯示是缺失driver(安裝的時(shí)候選了安,不知為何又bug了)
參照網(wǎng)上的安裝步驟
(1)方式1
- ubuntu-drivers devices
- sudo ubuntu-drivers autoinstall #自動(dòng)安裝
報錯

(2)方式2

(3)方式3
只能?chē)L試手動(dòng)下載,在https://www.nvidia.com/Download/index.aspx官網(wǎng)選擇
下載之后

提示說(shuō)一句有410.48版本
但是再用sudo dpkg --list | grep nvi,查不到410.48,用cat /proc/driver/nvidia/version,也是無(wú)此文件
交互過(guò)程中提示內核版本之類(lèi)的問(wèn)題,也是無(wú)疾而終
(4)方式4:重裝,并選擇install driver

發(fā)現這次報錯了,顯示missing recommended library,可由此篇博客解決,但解決之后對驅動(dòng)沒(méi)有太大影響
在nvidia安裝日志(/tmp/cuda_install_2971.log)里發(fā)現是dkms的問(wèn)題

又尋根到/var/lib/dkms/nvidia/...
找到error:unrecognized command line option 'fstack-protector-strong'

gcc之前是4.8.5問(wèn)題,我升級到5.5.0,再重新安裝

剛剛dkms的問(wèn)題沒(méi)有了,甚至執行王同學(xué)的代碼都能OK

但存在另一個(gè)問(wèn)題

(有人說(shuō)這個(gè)問(wèn)題不重要)
那難道是沒(méi)有卸載之前版本的問(wèn)題嗎? sudo apt-get purge nvidia*
一狠心就執行,全部刪掉,然后重新sh .run文件
還是不行。。。。重裝機器吧。。。
下載地址,需要自行注冊,然后選擇cuda10.0的對應版本,cudnn 7.4.1

解壓縮:tar -xzvf cudnn-9.0-linux-x64-v7.tgz
- 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版本 cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如果出現所示版本信息,說(shuō)明安裝成功。
查看python3對應的TensorFlow安裝版本,發(fā)現cpu與gpu并存

pip3 install tensorflow-gpu==1.13.1
結果import的時(shí)候報錯

查了下原因,應該是前面設置的環(huán)境變量沒(méi)有生效,參考博客
(1)臨時(shí)解決方法1(下次登錄失效)
在終端執行前面的的export操作,發(fā)現終于能正常運行

(2)臨時(shí)解決方法2

- # 轉自知乎.
- a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
- b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
- c = tf.matmul(a, b)
- # Creates a session with log_device_placement set to True.
- sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
- print(sess.run(c))

可以看到輸出信息都是關(guān)于GPU的,說(shuō)明TensorFlow-GPU版本正常工作了
聯(lián)系客服