<(  ̄^ ̄)> 不服, Tensorflow
到 1.4
版本還不支持 CUDA-9
, 放著 1070
不用怎么說的過去, 只能硬著頭皮把 CUDA
版本降下去. 又一曲折的過程開始了.
安裝過程均在文本模式下完成~
1c8b. 直接安裝 CUDA-8.0
好吧, 不支持我也沒辦法, 降級吧.
sudo nvidia-uninstall
卸載掉 CUDA-9
的顯卡驅(qū)動, 然后
sudo /usr/local/cuda-9.0/bin/uninstall*.pl
卸載掉所有 CUDA-9
相關(guān)的文件.
我從官網(wǎng)下載了 CUDA-8.0
的 .run
文件, 還是跟上一文記錄的一樣開始安裝, 然而, 一開始就掛了...
1c8c. 解決 gcc g++ 版本的問題
Debian
雖然穩(wěn)定, 但是依賴處理真的是比不上 Ubuntu
, 不過當(dāng)然是穩(wěn)定為主, 不想再遇到各種莫名其妙的問題. 首先, CUDA-8
支持的 gcc
版本是 4.4
. 在網(wǎng)上直接找到了 Debian
的安裝包, 無法安裝成功. 原因就是系統(tǒng)無法解決很多依賴問題. 而 Strech
的官方源里面已經(jīng)找不到 gcc-4.4 g++-4.4
了. 那么就是說, 源的版本太新了. 遂找到 Wheezy
的源, update
之后就能通過官方源安裝 4.4
版本的 gcc g++
了. 很奇怪啊, 為什么通過官方源安裝就可以解決依賴了, 看來以后還要研究一下 apt
和 dpkg
的區(qū)別. 好了, 反正安裝成功了. 安裝好之后把 Wheezy
的源注釋掉. 之后創(chuàng)建一下鏈接.
sudo ln -sf /usr/bin/gcc-4.4 /usr/bin/gcc
sudo ln -sf /usr/bin/gcc /usr/bin/cc
sudo ln -sf /usr/bin/g++-4.4 /usr/bin/g++
這樣做就能讓系統(tǒng)使用 4.4
版本的 gcc g++ cc
了. gcc
和 cc
是在安裝 CUDA-8
過程中使用的, g++
是在編譯 CUDA-Sample
的時(shí)候用的.
好了, 編譯器的版本問題就解決了.
安裝起來吧, 問題二來了~
1c8d. 解決找不到 Kernel Source Tree 的問題
CUDA-8
報(bào)找不到 kernel-source-tree
, 說如果你確定安裝了 kernel source
, 就把路徑包含進(jìn)來. 我是安裝了的, 但不過貌似不用這樣處理.
用過
sudo apt install linux-headers-$(uname -r)
來安裝最新的內(nèi)核源碼, 安裝完成之后, 通過
sudo apt install dkms
安裝 dkms
. 系統(tǒng)通過 dkms
, 在安裝 CUDA-8
驅(qū)動的時(shí)候把顯卡驅(qū)動模塊編譯進(jìn)內(nèi)核. 安裝了 dkms
之后, 安裝包也能順利找到內(nèi)核源碼了, 這個(gè)原因不明...
好啦, 繼續(xù)安裝, 喔吼, 還有問題...
1c8e. 解決找不到 libXmu.so
的問題
肯定是哪個(gè)依賴包沒有安裝嘛, 谷歌一下之后, 通過
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev libglfw3-dev libgles2-mesa-dev
一概解決~
繼續(xù)嘗試安裝, 成功了~ 嗯哼, 驅(qū)動, CUDA-Toolkit
以及 CUDA-Sample
全部安裝完成~
很開心, startx
一下檢查顯卡驅(qū)動是否正常, 然后就跪了...
1c8f. 375.26 版本顯卡驅(qū)動加載失敗
錯(cuò)誤信息是 Cannot find monitor
, 然后 X window
就退出了. 看了一眼 /etc/X11/xorg.conf
, 顯示的部分, vendor
和 model
都顯示 unkown
, 并且刷新率也不對. 再看顯卡 Device
部分, 沒有識別出是 NVIDIA GTX 1070
. 如果用之前正確的 xorg.conf
文件嘗試一下, 結(jié)果是 X window
可以正常工作了, 但是顯示分辨率極低, 顯卡驅(qū)動顯然是沒有工作的. 后面經(jīng)過反復(fù)確認(rèn), CUDA-9
的顯卡驅(qū)動是沒有問題的. 那么現(xiàn)在的困境就在于, 怎么讓顯卡正常工作, 并且系統(tǒng)里安裝的是 CUDA-8-Toolkit
供 Tensorflow
正常使用.
1c90. CUDA-8 & CUDA-9 混裝
既然想兩全其美, 那么就保留 CUDA-8
的 Toolkit
和 Sample
, 然后安裝 CUDA-9
的驅(qū)動. 這里經(jīng)過嘗試, 不能先安裝 CUDA-9
的驅(qū)動, 然后去安裝 CUDA-8
, 這樣會得到 CUDA-8 Toolkit
需求 CUDA-8
版本的顯卡驅(qū)動才能正確安裝的問題. 所以, 先完整安裝完 CUDA-8
, 然后
sudo nvidia-uninstall
卸載掉顯卡驅(qū)動, 然后安裝 CUDA-9
的顯卡驅(qū)動, 其他兩項(xiàng)都給 n
, 即可.
安裝結(jié)束之后, 運(yùn)行一下
sudo nvidia-xconfig
生成新的 xorg.conf
, 然后就可以 startx
進(jìn)入 X window
了. 可以打開 nvidia-settings
選擇一下顯示器的刷新率然后保存一下配置.
最后結(jié)果就是, 顯卡和 Tensorflow
都能正常工作.
最后, 在編譯 CUDA-8 Sample
的時(shí)候, 給出了 warning
, 找不到 libGLU.so libX11.so libGL.so
這三個(gè)動態(tài)庫. 因?yàn)?Debian
不是 CUDA
默認(rèn)支持的 Linux 版本, 所以一些配置是沒有的. 這些庫其實(shí)都是有的, 只是沒有鏈接在正確的位置.
sudo ln -sf /usr/lib/x86_l64-linux-gnu/libGLU.so.1 /usr/lib/libGLU.so
sudo ln -sf /usr/lib/x86_l64-linux-gnu/libX11.so.1 /usr/lib/libX11.so
sudo ln -sf /usr/lib/x86_l64-linux-gnu/libGL.so.1 /usr/lib/libGL.so
然后將
GLPATH=/usr/lib
添加到 PATH
中. 然后再編譯, no more missing library warnings~
We did it! Enjoy cuda~