Debian CUDA-9.0 & CUDA-8.0 混合安裝

<(  ̄^ ̄)> 不服, Tensorflow1.4 版本還不支持 CUDA-9, 放著 1070 不用怎么說的過去, 只能硬著頭皮把 CUDA 版本降下去. 又一曲折的過程開始了.

安裝過程均在文本模式下完成~

1c8b. 直接安裝 CUDA-8.0

好吧, 不支持我也沒辦法, 降級吧.


sudo nvidia-uninstall

卸載掉 CUDA-9 的顯卡驅動, 然后


sudo /usr/local/cuda-9.0/bin/uninstall*.pl

卸載掉所有 CUDA-9 相關的文件.

我從官網下載了 CUDA-8.0.run 文件, 還是跟上一文記錄的一樣開始安裝, 然而, 一開始就掛了...

1c8c. 解決 gcc g++ 版本的問題

Debian 雖然穩定, 但是依賴處理真的是比不上 Ubuntu, 不過當然是穩定為主, 不想再遇到各種莫名其妙的問題. 首先, CUDA-8 支持的 gcc 版本是 4.4. 在網上直接找到了 Debian 的安裝包, 無法安裝成功. 原因就是系統無法解決很多依賴問題. 而 Strech 的官方源里面已經找不到 gcc-4.4 g++-4.4 了. 那么就是說, 源的版本太新了. 遂找到 Wheezy 的源, update 之后就能通過官方源安裝 4.4 版本的 gcc g++了. 很奇怪啊, 為什么通過官方源安裝就可以解決依賴了, 看來以后還要研究一下 aptdpkg 的區別. 好了, 反正安裝成功了. 安裝好之后把 Wheezy 的源注釋掉. 之后創建一下鏈接.


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++

這樣做就能讓系統使用 4.4 版本的 gcc g++ cc 了. gcccc 是在安裝 CUDA-8 過程中使用的, g++ 是在編譯 CUDA-Sample 的時候用的.

好了, 編譯器的版本問題就解決了.

安裝起來吧, 問題二來了~

1c8d. 解決找不到 Kernel Source Tree 的問題

CUDA-8 報找不到 kernel-source-tree, 說如果你確定安裝了 kernel source, 就把路徑包含進來. 我是安裝了的, 但不過貌似不用這樣處理.

用過


sudo apt install linux-headers-$(uname -r)

來安裝最新的內核源碼, 安裝完成之后, 通過


sudo apt install dkms

安裝 dkms. 系統通過 dkms, 在安裝 CUDA-8 驅動的時候把顯卡驅動模塊編譯進內核. 安裝了 dkms 之后, 安裝包也能順利找到內核源碼了, 這個原因不明...

好啦, 繼續安裝, 喔吼, 還有問題...

1c8e. 解決找不到 libXmu.so 的問題

肯定是哪個依賴包沒有安裝嘛, 谷歌一下之后, 通過


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

一概解決~

繼續嘗試安裝, 成功了~ 嗯哼, 驅動, CUDA-Toolkit 以及 CUDA-Sample 全部安裝完成~

很開心, startx 一下檢查顯卡驅動是否正常, 然后就跪了...

1c8f. 375.26 版本顯卡驅動加載失敗

錯誤信息是 Cannot find monitor, 然后 X window 就退出了. 看了一眼 /etc/X11/xorg.conf, 顯示的部分, vendormodel 都顯示 unkown, 并且刷新率也不對. 再看顯卡 Device 部分, 沒有識別出是 NVIDIA GTX 1070. 如果用之前正確的 xorg.conf 文件嘗試一下, 結果是 X window 可以正常工作了, 但是顯示分辨率極低, 顯卡驅動顯然是沒有工作的. 后面經過反復確認, CUDA-9 的顯卡驅動是沒有問題的. 那么現在的困境就在于, 怎么讓顯卡正常工作, 并且系統里安裝的是 CUDA-8-ToolkitTensorflow 正常使用.

1c90. CUDA-8 & CUDA-9 混裝

既然想兩全其美, 那么就保留 CUDA-8ToolkitSample, 然后安裝 CUDA-9 的驅動. 這里經過嘗試, 不能先安裝 CUDA-9 的驅動, 然后去安裝 CUDA-8, 這樣會得到 CUDA-8 Toolkit 需求 CUDA-8 版本的顯卡驅動才能正確安裝的問題. 所以, 先完整安裝完 CUDA-8, 然后


sudo nvidia-uninstall

卸載掉顯卡驅動, 然后安裝 CUDA-9 的顯卡驅動, 其他兩項都給 n, 即可.

安裝結束之后, 運行一下


sudo nvidia-xconfig

生成新的 xorg.conf, 然后就可以 startx 進入 X window 了. 可以打開 nvidia-settings 選擇一下顯示器的刷新率然后保存一下配置.

最后結果就是, 顯卡和 Tensorflow 都能正常工作.

最后, 在編譯 CUDA-8 Sample 的時候, 給出了 warning, 找不到 libGLU.so libX11.so libGL.so 這三個動態庫. 因為 Debian 不是 CUDA 默認支持的 Linux 版本, 所以一些配置是沒有的. 這些庫其實都是有的, 只是沒有鏈接在正確的位置.


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~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容