服务器(Dell T360+2块Tesla P100)配置显卡驱动和cuda最终版(终于配置好了)
前言: 一開始我們實驗室嘗試用deb安裝包的方法安裝NVIDIA Tesla P100對應的顯卡驅動和CUDA,但是總是出現重復登錄的問題,迫不得已我們最后采用比較繁瑣的用run文件安裝顯卡驅動和CUDA的方法。(還是建議先用deb文件安裝一下試試,因為比較簡便。)
首先明確一下,我沒有安裝NVIDIA驅動程序。我改為運行了cuda.run文件,并在提示我時安裝了NVIDIA驅動程序。
1)下載相關CUDA.run文件。
2)安裝前準備
3)無需創建xorg.conf文件。如果你有一個,刪除它(假設你安裝了新的操作系統)。
$ sudo rm /etc/X11/xorg.conf4)屏蔽系統自帶的顯卡驅動nouveau
新建blacklist-nouveau.conf文件,輸入命令:
往文件中寫入:
blacklist nouveau options nouveau modeset=0保存并退出。這一步是為了禁掉Ubuntu自帶開源驅動nouveau。
然后執行命令:
接下來需要重啟,輸入reboot命令,重啟后執行:
lsmod | grep nouveau查看nouveau模塊是否被加載。如果什么都沒輸出,則已成功禁用。
5)使用下面命令禁用X server
會出現黑屏,然后同時按:Ctrl + Alt + F1,然后輸入用戶名和密碼。
6)轉到您擁有CUDA驅動程序的目錄,然后運行
$ chmod a+x cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb7)現在,運行命令進行安裝,請注意,我明確不希望安裝OpenGL標志:
$ sudo bash cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb --no-opengl-libs8)我的會出現以下問題,如果您的沒有問題,可跳過這一步。
Installing the NVIDIA display driver... The driver installation is unable to locate the kernel source. Please make sure that the kernel source packages are installed and set up correctly. If you know that the kernel source packages are installed and set up correctly, you may pass the location of the kernel source with the '--kernel-source-path' flag.參考文章:Oldpan博客-安裝cuda9.1內核問題:Unable to locate the kernel source
參考文章:zgwLinux-Ubuntu16.04修改內核啟動
我的解決方案是降低ubuntu16.04系統的內核。網上有很多方法,都是坑,我采用了如下方法,親測有效!
下面開始將我系統的內核由4.15.0-29降為4.4.0-98
(1)使用下面命令回到圖形界面
(2)基本知識
linux更換內核很簡單,一個系統中可以安裝多個內核,也可以在開機的時候通過grub來選擇要啟動的內核。首先我們要做的是先看自己系統中現在存在幾個內核。
使用uname -r查看當前使用的內核。
然后我們明確幾個有關內核的文件:
/etc/default/grub 定義了有關啟動過程的一系列設置,比如設置內核啟動順序、系統等待啟動時間、或者啟動過程中相關設置等;
/boot/grub/grub.cfg 注意一下這個文件是由上一個文件而自動生成的,不建議修改這個文件的內容
/etc/grub.d 是操作系統菜單目錄,也是由系統生成,我們也不用修改。
(3)開始更換,使用下面命令安裝4.4.0的內核
執行完這個命令之后,可以到/boot中看現在存在的kernels
(4)修改/boot/grub/grub.cfg中的內容。
使用以下命令打開這個文件:
找到如下代碼塊:
linux /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro quiet splash $vt_handoffinitrd /boot/initrd.img-4.15.0-29-generic }將其改為自己想使用的內核,我的如下:
linux /boot/vmlinuz-4.4.0-98-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro quiet splash $vt_handoffinitrd /boot/initrd.img-4.4.0-98-generic然后找到如下代碼塊:
submenu 'Advanced options for Ubuntu' $menuentry_id_option 'gnulinux-advanced-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {將此行代碼下的與4.15.0-29相關的代碼全部刪除:
menuentry 'Ubuntu, with Linux 4.15.0-29-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-29-generic-advanced-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {recordfailload_videogfxmode $linux_gfx_modeinsmod gzioif [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fiinsmod part_gptinsmod ext2set root='hd0,gpt3'if [ x$feature_platform_search_hint = xy ]; thensearch --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 8086863d-2eca-415d-85d1-1bebdcf0ef3aelsesearch --no-floppy --fs-uuid --set=root 8086863d-2eca-415d-85d1-1bebdcf0ef3afiecho 'Loading Linux 4.15.0-29-generic ...'linux /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro quiet splash $vt_handoffecho 'Loading initial ramdisk ...'initrd /boot/initrd.img-4.15.0-29-generic}menuentry 'Ubuntu, with Linux 4.15.0-29-generic (upstart)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-29-generic-init-upstart-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {recordfailload_videogfxmode $linux_gfx_modeinsmod gzioif [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fiinsmod part_gptinsmod ext2set root='hd0,gpt3'if [ x$feature_platform_search_hint = xy ]; thensearch --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 8086863d-2eca-415d-85d1-1bebdcf0ef3aelsesearch --no-floppy --fs-uuid --set=root 8086863d-2eca-415d-85d1-1bebdcf0ef3afiecho 'Loading Linux 4.15.0-29-generic ...'linux /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro quiet splash $vt_handoff init=/sbin/upstartecho 'Loading initial ramdisk ...'initrd /boot/initrd.img-4.15.0-29-generic}menuentry 'Ubuntu, with Linux 4.15.0-29-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.15.0-29-generic-recovery-8086863d-2eca-415d-85d1-1bebdcf0ef3a' {recordfailload_videoinsmod gzioif [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fiinsmod part_gptinsmod ext2set root='hd0,gpt3'if [ x$feature_platform_search_hint = xy ]; thensearch --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt3 --hint-efi=hd0,gpt3 --hint-baremetal=ahci0,gpt3 8086863d-2eca-415d-85d1-1bebdcf0ef3aelsesearch --no-floppy --fs-uuid --set=root 8086863d-2eca-415d-85d1-1bebdcf0ef3afiecho 'Loading Linux 4.15.0-29-generic ...'linux /boot/vmlinuz-4.15.0-29-generic root=UUID=8086863d-2eca-415d-85d1-1bebdcf0ef3a ro recovery nomodeset echo 'Loading initial ramdisk ...'initrd /boot/initrd.img-4.15.0-29-generic}然后點擊保存!
(5)在/boot目錄中,執行以下命令刪除掉這個目錄內所有4.15內核的文件
(6)執行下面命令來對你之前的設置進行更新。
sudo update-grub(7)最后重啟,輸入下面命令檢查是否以更換到了4.4.0內核
uname -r如果顯示內核已經更改為4.4.0,則從第5步開始重新安裝!
9)安裝過程中
接受EULA條件
安裝NVIDIA驅動程序說“是”
安裝CUDA工具包+驅動程序說“是”
安裝CUDA樣品說“是”
不用Nvidia重建任何Xserver配置。
10)安裝應該完成,但是我有以下小問題,如果您沒有問題,可以跳過這一步。
原因是缺少相關的依賴庫,安裝相應庫就解決了:
sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev再次執行第7步進行安裝,就不再提示了。
11)重啟電腦,檢查Device Node Verification
執行:
結果顯示
/dev/nvidia0 /dev/nvidiactl /dev/nvidia-modeset /dev/nvidia-uvm 或者 /dev/nvidia0 /dev/nvidiactl /dev/nvidia-uvm則安裝成功。
如果不顯示這幾個文件,搜索以下博客進行解決:
QLULIBIN-Ubuntu 16.04 上安裝 CUDA 9.0 詳細教程
12)添加環境路徑變量:
終端中輸入
在打開的文件末尾,添加以下兩行:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64\${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}保存文件,并重啟。因為source /etc/profile是臨時生效,重啟電腦才是永久生效。
這里有點與官方安裝文檔稍有不同,需要說明:
官方文檔里說只需在終端中運行上述兩條export語句即可,但如果不將它們不寫入/etc/profile文件的話,這樣的環境變量在你退出終端后就消失了,不起作用了,所以寫入才是永久的做法。
重啟電腦,檢查上述的環境變量是否設置成功
a、 驗證驅動版本,在終端中輸入以下命令:
結果顯示
gs@gs:~$ cat /proc/driver/nvidia/version NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.130 Wed Mar 21 03:37:26 PDT 2018 GCC version: gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.10)b、 驗證CUDA Toolkit,在終端中輸入以下命令:
nvcc -V會輸出CUDA的版本信息
如果是這樣的:
The program ‘nvcc’ is currently not installed. You can install it by typing:
sudo apt-get install nvidia-cuda-toolkit
可能是環境配置沒有成功,請重復上述步驟7)。
13)嘗試編譯cuda提供的例子
在簡書上搜文章:永興呵呵噠-ubuntu16.04以deb包方式安裝cuda9.0(package manager installation)
14)重新啟動。一切都應該沒問題。
六、遠程連接安裝
這里安裝的是 windows 訪問Ubuntu的,你們可以在windows 系統運行mstsc,選擇ip端口訪問遠程Ubuntu桌面。
這個方便所有人一塊使用服務器
使用快捷鍵"Ctrl+Alt+T"打開一個終端窗口,輸入"sudo apt-get install xrdp"–>回車–>輸入root用戶的密碼–>回車–>輸入"y"–>回車,安裝完成。
輸入"sudo apt-get install vnc4server"–>回車–>輸入root用戶的密碼–>回車–>輸入"y"–>回車,安裝完成。
輸入"sudo apt-get install xubuntu-desktop"–>回車–>輸入root用戶的密碼–>回車–>輸入"y"–>回車–>輸入"echo “xfce4-session” >~/.xsession"–>回車–>輸入"sudo service xrdp restart"–>回車,安裝完成。
vim /etc/xrdp/startwm.sh
#在./etc/X11/Xsession前插入
xfce4-session
#重啟xrdp
cd /etc/init.d/
./xrdp restart
總結
以上是生活随笔為你收集整理的服务器(Dell T360+2块Tesla P100)配置显卡驱动和cuda最终版(终于配置好了)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 类似手机html框架,GitHub -
- 下一篇: Deep Reinforcement L