不影響已安裝的低版本cuda8及其環境工具條件下安裝新版本cuda9


根據參考鏈接,心中熟悉流程

  1. 參考1確定了【高版本gpu driver 可以兼容 低版本】,所以放心卸載僅支持cuda8.0的舊版,安裝支持cuda9.0的新版gpu driver。因為driver與硬件相關,暫時我找不到可以隔離的方案
  2. 至於隔離cuda,至少有兩種方案:
  • 基於ubuntu的多用戶的隔離:每個用戶的cuda安裝在自己的home下面,不會影響原有的系統根目錄下的cuda8.0的文件。然后修改每個用戶自己的bashrc文件,將自己的cuda系統變量設置為指向自己home下面的cuda
  • 基於docker的隔離:基於docker-gpu,可以把cuda安裝在每一個docker中,各個docker彼此隔離,並且與主機無關
  1. 創建新的cuda環境:
    采取某個作者的方案,使用anaconda建立虛擬環境,定制cuda、tensorflow,與其他用戶的【深度學習環境】隔離開來

我的實際操作過程:

  • 現狀及目標:
    機器上已運行了基於舊版本的driver,cuda8.0及一系列application,需要在保證原有環境能正常運行的條件下安裝新cuda9.0,並實現各用戶的cuda環境隔離

0. 我的軟硬件環境:

object value
nvidia-gpu-brand & type Tesla-->K 80
OS Centos7
服務器是否有圖形界面 No
原driver 367.48
即將安裝的driver 384.145

1. 安裝gpu driver:

lspci | grep -i nvidia


uname -m && cat /etc/*release

gcc --version

uname -r

cat /proc/driver/nvidia/version (檢查當前的顯卡驅動版本,如果更新driver出錯,需要還原)


官網下面的step 3及之后的若干步驟
繁瑣且非必須了,所以下面參考這篇博客進行顯卡驅動安裝:https://bluesmilery.github.io/blogs/a687003b/#2、安裝CUDA-9-0-amp-cuDNN-7-1 (根據上述鏈接,去下載合適的driver)


  • 下面有兩步非常非常重要

關閉 nouveau (無論是否有圖形界面,建議都關閉掉)

vim /lib/modprobe.d/dist-blacklist.conf
#blacklist nvidiafb # 屏蔽掉這句
# 然后添加下面兩句:
blacklist nouveau
options nouveau modeset=0
# 驅動安裝好之后也可以不用改回來

lsmod | grep nouveau 【沒有輸出即圖形界面已關閉】

卸載原有顯卡驅動
這里與原有安裝方式有關,分為dpg和runfile兩種,實驗室服務器之前的安裝方式是dpg,系統是centos7,但根據查的參考博客,最好是用runfile、

// 如果是舊驅動是runfile安裝方式,試一下下面的命令就知道了
sudo /usr/bin/nvidia-uninstall
// 如果上述命令失敗,說明之前是非runfile方式裝的,就轉下面的方法:
yum remove nvidia*  // 干掉和nvidia有關的所有驅動文件

關閉 X Server {容易出現各種錯誤}

//注意,我在centos下面的命令,
//主要常規有幾種命令:
init 3
systemctl stop gdm.service 
// 安裝完后就:systemctl start gdm.service
//但是也會有意外,
//比如我這次就遇到上述命令無法關閉X //server的問題:
// 最后在一個國外小論壇上找到一個可行方案:
rm /tmp/ .X0-lock 
// 還有可能有 .X1-lock .X2-lock .etc
// 一個個試過去,我是 .X2-lock, .X3-lock .X4-lock
// 后來我猜測是【之前有啥應用鎖住了X server,無法釋放】

進入安裝界面后一路選yes,注意不要 no
我的問題是:這一步發現 X server沒有真正完全關閉,所以又回頭找方案關閉
X server

給new drtiver file 設置x執行權限並安裝

chmod u+x NVIDIA-Linux-x86_64-xxx.yyy.run
./NVIDIA-Linux-x86_64-xxx.yyy.run

測試是否兼容cuda 8.0

cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
make clean
make
./deviceQuery

// Result = PASS 即表示OK

之后建議重啟下服務器,能減少各種錯誤。

比如我就遇到:
An NVIDIA kernel module ‘nvidia-uvm’
appears to already be loaded in your kernel

nvidia-smi查看占用進程pid
kill 掉
但是最簡單的方法就是:重啟服務器

至此,最麻煩也最容易出問題的driver部分就OK了。

2. 安裝CUDA-9.0 & cuDNN-7.1:

  • 注:強烈建議之前就下載好driver,cuda,cudnnn,下載方法見前面的說明,並且做sha校驗,確保文件完整性,我就犯了這個低級錯誤:下錯了文件

  • 安裝cuda:

chmod u+x cuda_9.0.176_384.81_linux.run
./cuda_9.0.176_384.81_linux.run
  • 接下來就是安裝過程:
接下來會有一系列選擇

是否安裝顯卡驅動:選no,因為已經裝了最新的驅動
是否安裝CUDA 9.0:選yes
輸入安裝位置:默認即可,因為默認位置就區分開了不同的CUDA版本
是否創建軟鏈:選no,因為要實現多版本CUDA共存。待會兒手動建一個自己需要的軟鏈接。
是否安裝sample:選yes

不同系統可能會有 opengl選項,如果有,選擇no
  • 安裝幾個補丁:
chmod u+x cuda_9.0.176.1_linux.run
./cuda_9.0.176_384.81_linux.run
chmod u+x cuda_9.0.176.2_linux.run
./cuda_9.0.176_384.81_linux.run
chmod u+x cuda_9.0.176.3_linux.run
./cuda_9.0.176_384.81_linux.run
  • CUDA測試:
cd /usr/local/cuda-9.0/samples/1_Utilities/deviceQuery
make
./deviceQuery

// Result = PASS 即表示OK
  • Cudnn安裝:
tar zxvf cudnn-9.0-linux-x64-v7.1.tgz
// 默認解壓為一個cuda目錄,cd進去

cp cuda/include/cudnn.h /usr/local/cuda-9.0/include/
cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/
chmod a+r /usr/local/cuda-9.0/include/cudnn.h
chmod a+r /usr/local/cuda-9.0/lib64/libcudnn*

3. 配置自己用戶的環境變量,隔離cuda

  1. 之前的root 下面的 ~/.bashrc千萬不能動
  2. 為cuda-9.0建立屬於自己用戶zh的軟鏈接:
ln -s /usr/local/cuda-9.0 /usr/local/cuda_zh
  1. 修改自己的 .bashrc
export PATH="/usr/local/cuda_zh/bin:$PATH"
export LD_LIBRARY_PATH="/usr/local/cuda_zh/lib64/:$LD_LIBRARY_PATH"
export LIBRARY_PATH="/usr/local/cuda_zh/lib64:$LIBRARY_PATH"

// 注意:一定要確保自己的cuda_zh優先級
//比系統變量的優先級高,所以自己路徑寫在最前面
  1. source ~/.bashrc
  2. 在不同用戶下,分別執行 nvcc --version,查看各自的cuda版本。【我的情況是:一個8.0,一個9.0】

4. 配置下tensorflow-gpu環境:

  1. 切換國內源,安裝 Anaconda:
  2. 切換國內源,安裝tensorflow-gpu
  3. 測試tensorflow-gpu可用性
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
  1. 切換其他用戶,檢測其他用戶之前的tensorflow-gpu是否能正常運行
  2. 注:上述安裝具體過程參見我自己的一篇博客:ubuntu常見軟件的安裝

5. 遇到的最有印象的問題總結:

  1. sudoers文件被修改后需要恢復為read only 才能后續執行sudo 命令
  2. ubuntu帶圖形界面的測試機上的驅動安裝前必須要禁用圖形界面相關的noveau及X server,否則會出現循環登錄的問題,出現了最簡單的辦法是【卸載了重裝nvidia驅動】
  3. 驅動卸載的remove命令,只能后接nvidia*,否則會出問題
  4. centos上面 X server有時候會因為各種問題而不能【真正完全】關閉,我找到了一種方案:rm .X2-lock。可能還有其他可能
  5. 遇到一些異常bug,先google,並且試着重啟下服務器
  6. 利用linux多用戶的天然隔離效果+自己的bashrc用戶變量可以做【某些軟件的多版本共存】

參考鏈接:

  1. https://bluesmilery.github.io/blogs/a687003b/
    https://bluesmilery.github.io/blogs/a687003b/#2、安裝CUDA-9-0-amp-cuDNN-7-1
    (先測試高版本顯卡可以兼容低版本)

  2. https://blog.csdn.net/tunhuzhuang1836/article/details/79545625
    https://blog.csdn.net/ksws0292756/article/details/80120561
    (基於多用戶的cuda隔離,只是影響當前用戶,也不影響之前的主機環境)

  3. (基於docker的cuda級別隔離,可以拿來多用戶共享某cuda且不干擾原來的主機環境)
    https://blog.skyaid-service.org/2017/11/16/nvidia-docker/
    https://blog.csdn.net/zh_jessica/article/details/79644544
    https://blog.opskumu.com/docker-gpu.html
    https://github.com/NVIDIA/nvidia-docker (官方tutorial)
    https://github.com/NVIDIA/nvidia-docker/wiki/Docker-Hub (官方tutorial)
    https://blog.csdn.net/sinat_26917383/article/details/78728215

  4. 深入理解整個安裝流程進行所參考的:

  1. 實際操作后,出各種錯后參考的一些鏈接
  1. centos 7下面的實際操作的參考:
  1. 我自己的ubuntu下面的常用軟件安裝連接:
    xxx


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM