1. 程式人生 > >centos 7 筆記本 Intel nvidia 雙顯示卡 安裝nvidia驅動併成功安裝cuda

centos 7 筆記本 Intel nvidia 雙顯示卡 安裝nvidia驅動併成功安裝cuda

這是一篇介紹如何在筆記本上使用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裝置

lspci | grep -i "vga\|nvidia"


如果你有兩個顯示卡,並且有一個是nvidia顯示卡,再去官網查一下這個型號是否支援cuda,如果支援,最終能安裝cuda。

在安裝之前,一定要進入bios,關閉安全啟動選項。

新增elrepo 源

這個源是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源

sudo yum install epel-release

安裝大黃蜂

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的套路吧。

安裝另一個東西,也跟大黃蜂有關

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核心

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

新增使用者,使用者組

sudo usermod -aG bumblebee YOUR_USERNAME
像我添加了root,和
sudo usermod -aG bumblebee root
sudo usermod -aG bumblebee augushong

重啟,記住,在4.XX的核心啟動

原文運行了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

使用

原文沒有介紹,我在第二天就遇到這篇文章,但是當時的思路還是第一種方法的思路,而且對交火顯示卡技術和正確安裝大黃蜂后的使用方式不明確,所以第三天才轉過來彎。這裡介紹一下。

如果你的電腦配置一般,現在進入圖形介面,已經能感覺拖動視窗不如之前那麼流暢了。

執行所有命令,都是走cpu和intel,跟nvidia沒什麼關係,比如執行

glxspheres64

這是個3D圖幀速檢測,或許是,反正是檢測顯示卡的。

 optirun glxspheres64

這個是通過nvidia加速執行這個程式,明顯執行的畫面更快。

在命令前面加上 optirun,就相當於文章開頭在windows下右鍵使用高效能XXXXX執行一樣。

安裝cuda

可以參考其他教程,不過我感覺挺亂的,而且只有命令,沒有思路介紹,估計只是從國外教程搬過來的,如果你已經有好的教程,那麼可以直接去參照安裝了,

我的安裝方法,去官網檢查顯示卡是否支援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,直接搭建環境行不行。