這是一篇介紹如何在筆記本上使用centos 7 系統安裝nvidia驅動和cuda 的文章。
本篇還會介紹清晰的安裝思路。
探索了三天才完成,最后才搞懂思路,中間其實遇到了一個正確的教程,但是沒有思路,所以一直沒成功,這里先介紹一下前兩天發生的坑。
事情是這樣發生的,一天下午下了班,我想在linux下開發和研究神經網絡模型,我通過gpuz發現我的筆記本nvidia顯卡是支持cuda的,那為何不用呢?所以我產生了一個需求,使用nvidia跑caffe模型。
這個需求在windows下是不好完成的,因為我跑得東西在docker 鏡像里,在docker想使用gpu加速,還需要安裝nvidia-docker插件,這個插件,我不想再windows下安裝,所以我選擇linux,而首選的是centos。實際上ubuntu的桌面體驗比centos還好點,而且根據網上的教程,也更順利,但是我還是選擇了cetnos。
所以我必須要在centos上安裝nvidia驅動,cuda,docker,nvidia-docker。
一開始我以為事情很簡單。
我就直接搜索 centos 7 安裝 nvidia 驅動 。
這是第一種方法:
類似的教程有這些:
http://blog.csdn.net/alex_my/article/details/44705663
https://www.linuxidc.com/Linux/2017-03/141644.htm
https://www.cnblogs.com/snake553/p/7159376.html
還有很多,換湯不換藥,我甚至還找到了這些安裝思路的原版國外教程:
http://www.advancedclustering.com/act_kb/installing-nvidia-drivers-rhel-centos-7/
這些教程的思路是這樣的:
檢查電腦是否支持cuda,是否有nvidia顯卡,需要什么驅動
禁用開源的nvidia驅動,安裝官方驅動
重啟成功
安裝cuda?
? 有思路也有套路,既有手動安裝,也有yum安裝,我都試過,對于我來說都失敗了,根本就沒進行到安裝cuda。因為我安裝完成之后,電腦無法進入桌面環境,只能進命令行模式,期間辛虧早已開啟ssh,用另一臺電腦ssh鏈接,嘗試了很多次,但最終都失敗。最后成功的時候,至重啟一次,一直在圖形界面都成功了。
為什么不成功,以上針對部分電腦能成功,主要針對只有主板集顯和nvidia獨顯的電腦,或者Intel核顯和vga的nvidia獨顯,如果你是這種電腦,可能很容易的就安裝成功,并且進入桌面環境。
不過我的筆記本電腦不是,我的筆記本電腦是vga intel 核顯和 nvidia獨顯,nvidia不支持vga,就是不支持直接屏幕輸出,我了解到一種新的主板設計,我不搞硬件,第一次聽說:現在很多筆記本都采用 NVIDIA??Optimus? 技術,摘自官網的介紹:NVIDIA??Optimus? 技術聰明地將您的筆記本電腦 PC 提升到絕佳狀態,提供出色的圖形性能,并在需要時延長電池續航時間,使您能夠更長時間地享受視覺盛宴。
官網鏈接:? http://www.nvidia.cn/object/optimus_technology_cn.html
大體的意思是說,這些筆記本有兩個顯卡,一個intel ,負責顯示,一個nvidia,負責解鎖高難度姿勢,比如3D渲染,cuda等等。工作原理:把一些高難度姿勢交給nvidia,nvidia計算完成,交給intel,Intel顯示給用戶。
比如這樣:
這是筆記本右鍵彈出的菜單,我也是才知道有這個操作。
這是在linux下檢測硬件顯示的,其中帶有VGA的只有intel的圖形處理器。
這樣就明顯了,前面的那種安裝nvidia驅動或者cuda的方法是錯誤的。因為前一種安裝方法針對兩個顯卡都是nvidia切都可以直接vga輸出的。因為第一種方法,只能讓nvidia驅動開啟并且會是xorg服務(linux的圖形桌面服務)使用nvidia驅動開啟,但是并不能,因為nvidia不能直接輸出到屏幕,頂多nvidia計算資源,將結果交給intel,Intel顯示到屏幕,所以還是需要在intel上啟動xorg,
這個思路是我自己嘗試的,網上沒有具體的教程,是我看相關的介紹才想出來的,但是配置xorg老是出問題還是沒有解決,不過方向是對了。
這個時候我已經快要放棄了,但是我也意識到,或許是對的方向,所以我就安裝Bumblebee(大黃蜂),什么是大黃蜂?
"Bumblebee 致力于使 NVIDIA Optimus 在 GNU/Linux 系統上可用,實現兩塊不同的供電配置的顯卡同時插入使用,共享同一個 framebuffer。"
原文鏈接:
https://wiki.archlinux.org/index.php/Bumblebee_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
這個軟件就是linux 上的?Optimus技術,只是在需要的時候啟用nvidia來計算,正是這個思路。
第二個方法出現了,在centos上安裝Bumblebee
相關教程如下:
https://www.linuxidc.com/Linux/2012-09/70418.htm
https://www.linuxidc.com/Linux/2012-09/70418.htm
http://leenux.lofter.com/post/165224_54b752
項目地址:
https://github.com/Bumblebee-Project/Bumblebee/wiki
arch wiki地址:(arch的wiki真心好)
https://wiki.archlinux.org/index.php/Bumblebee_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)
但是我參照上面的方法包括官網,都沒有成功,這我就不太清楚了,可能是因為期間我又自己安裝了nvidia顯卡驅動的原因,不過我有一個猜想,就是上面的方法,只是安裝了大黃蜂,但是并沒有安裝bumblebee-nvidia驅動,或者內核不夠高,或者內核錯誤,總之,上面的教程都是關閉圖形界面,進入命令行,禁用開源nvidia驅動(禁用nouveau驅動)等等,但是最終我都沒有成功,最后在一片國外文章上安裝,期間只是跟著復制命令,重啟,最后成功了,終于進入教程部分,請大家跟著我做:
你也可以直接去這個頁面:
https://linuxhint.com/install-nvidia-drivers-centos/
截圖所示的大體意思就是很多電腦的設計是用了nvidia optimus技術,如何安裝的,跟著我做,等等。
我就模仿這篇文章寫一下教程:
檢查pci設備
need-to-insert-img
lspci?|?grep?-i?"vga\|nvidia"??
如果你有兩個顯卡,并且有一個是nvidia顯卡,再去官網查一下這個型號是否支持cuda,如果支持,最終能安裝cuda。
在安裝之前,一定要進入bios,關閉安全啟動選項。
添加elrepo 源
need-to-insert-img
這個源是linux上的硬件驅動源,就跟驅動精靈差不多。
sudo?rpm?--import?https://www.elrepo.org/RPM-GPG-KEY-elrepo.org??
sudo?rpm?-Uvh?http://www.elrepo.org/elrepo-release-7.0.3.el7.elrepo.noarch.rpm??
具體的安裝方法去官網,第二個鏈接可能有誤:
官網地址:http://elrepo.org/tiki/tiki-index.php
添加epel源
need-to-insert-img
sudo?yum?install?epel-release??
安裝大黃蜂
need-to-insert-img
sudo?yum?-y?--nogpgcheck?install?http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee/rhel7/noarch/bumblebee-release-1.2-1.noarch.rpm??
這個安裝途徑和上面提到的第二個方法的教程所示都不一樣,我也不知道問什么,可能是因為那些教程采用的是ubuntu的套路吧。
安裝另一個東西,也跟大黃蜂有關
need-to-insert-img
sudo?yum?-y?--nogpgcheck?install?http://install.linux.ncsu.edu/pub/yum/itecs/public/bumblebee-nonfree/rhel7/noarch/bumblebee-nonfree-release-1.2-1.noarch.rpm??
說真的,我也不知道這為什么不一樣,直接從原教程拿過來的,原教程還有結果截圖,可以去看看。
升級cetnos內核
need-to-insert-img
sudo?yum?--enablerepo=elrepo-kernel?install?kernel-ml??
sudo?yum?--enablerepo=elrepo-kernel?install?kernel-ml-devel??
這時候內核已經是4.XX了,并且在啟動時不會自動引導這個選項,還是默認3.xx的,我還沒調整,回頭在搜搜看怎么調,在這里記住,之后重啟時,一定要選擇4.xx的內核
如果是32位系統,就不要運行上面的第二條命令,而是輸入下面這條,我是上面的第二條
sudo?yum?install?bumblebee-nvidia?bbswitch-dkms?VirtualGL.x86_64?VirtualGL.i686?primus.x86_64?primus.i686?kernel-devel??
添加用戶,用戶組
need-to-insert-img
sudo?usermod?-aG?bumblebee?YOUR_USERNAME??
像我添加了root,和
sudo?usermod?-aG?bumblebee?root??
sudo?usermod?-aG?bumblebee?augushong??
重啟,記住,在4.XX的內核啟動
need-to-insert-img
原文運行了nvidia setting,是圖形界面,我沒運行,就算了。
至此,安裝結束。
運行檢查
bumblebee-nvidia?--check??
應該會出現成功的界面
如果有問題,就運行:
sudo?bumblebee-nvidia?--debug?--force??
可以多運行幾次,或者重啟在運行,然后在運行檢查,理論上,都能正常了。
卸載:
sudo?yum?remove?bumblebee-nvidia?bbswitch-dkms?primus?kernel-devel??
sudo?yum?remove?kernel-ml?kernel-ml-dev??
使用
need-to-insert-img
原文沒有介紹,我在第二天就遇到這篇文章,但是當時的思路還是第一種方法的思路,而且對交火顯卡技術和正確安裝大黃蜂后的使用方式不明確,所以第三天才轉過來彎。這里介紹一下。
如果你的電腦配置一般,現在進入圖形界面,已經能感覺拖動窗口不如之前那么流暢了。
運行所有命令,都是走cpu和intel,跟nvidia沒什么關系,比如運行
glxspheres64??
這是個3D圖幀速檢測,或許是,反正是檢測顯卡的。
optirun?glxspheres64??
這個是通過nvidia加速運行這個程序,明顯運行的畫面更快。
在命令前面加上 optirun,就相當于文章開頭在windows下右鍵使用高性能XXXXX運行一樣。
安裝cuda
need-to-insert-img
可以參考其他教程,不過我感覺挺亂的,而且只有命令,沒有思路介紹,估計只是從國外教程搬過來的,如果你已經有好的教程,那么可以直接去參照安裝了,
我的安裝方法,去官網檢查顯卡是否支持cuda
https://developer.nvidia.com/cuda-gpus
下載cuda,一定下載run安裝包,不要試圖用yum,
安裝時,會閱讀協議,可以看看,最后
(不截圖了,自己走走看就知道了。。。。只介紹下思路吧,命令其他教程都爛大街了)
開始輸入accecpt,同意
然后會提示是否安裝驅動,一定輸入n
接下來是安裝cuda toolkit,安裝y
安裝案例smaple,安裝y
接下來是目錄等,一路回車或者自己看
最后,安裝成功,注意,安裝成功會最下面幾行信息是警告,說是有東西沒安裝,不用管,不要怕,沒有問題。
在這些信息上面,有兩三行這樣的東西
PATH xxxxx
LD_LABRARY_XX xxxx
xxx是我忘了,意思是說把這兩個加到環境變量里,
具體的操作可以去搜,這里只介紹思路。
之后去運行一個案例,自己去搜
會讓你編譯一個例子,然后讓你運行,你直接運行會報錯,說你沒有相關設備
你只要在運行的命令前面加上optirun就行,像這樣,應該是這個命令沒錯
optirun?deviceQuery??
安裝docker更簡單,去搜教程,都能用,
不過想要用顯卡加速,還要安裝nvidia-docker,繼續搜。
開啟docker服務正常
開啟nvidia-docker不正常,就是說運行systemctl? start nvidia-docker.service
我通過大黃蜂運行nvidia-docker 好像也不行,估計是docker鏡像得對大黃蜂支持才行,唉,還是有很長的路要走啊。
回頭試試不用docker,直接搭建環境行不行。
?