Ubuntu16.04下安裝多版本cuda和cudnn


Ubuntu16.04下安裝多版本cuda和cudnn

 

原文 https://blog.csdn.net/tunhuzhuang1836/article/details/79545625

 

前言
因為之前針對Pytorch,caffe,torch等,裝了cuda8.0和對應cudnn5.1,但是最近在裝MxNet的時候,發現官網上能下載到的MxNet版本僅支持cuda9.0和對應cudnn7.0.5,所以無奈不想卸載cuda8.0只能在電腦上安裝多個版本的cuda和對應cudnn。
 
 
安裝cuda
好了進入正題,首先安裝cuda 需要去nvidia官網注冊一個賬號登錄下載。這里給一下歷史版本的cuda鏈接(現在官網好像進去默認下載最新版本)。這里我們舉例下載cuda9.0:(當你電腦上只有一個cuda時候下載哪種類型無所謂,如果已存在一個或以上時候需要選擇runfile安裝)
 
安裝按照官方指引就好 
# if deb
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-rc_9.0.103-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda
# if runfile
sudo chmod +x cuda_9.0.176_384.81_linux.run
./cuda_9.0.176_384.81_linux.run12345678
這里我給了deb版本和runfile版本cuda安裝。 如果你是第一遍裝cuda,按官方教程什么版本都可以; 如果是電腦上已存在cuda,則安裝需要runfile,且有幾個需要注意的地方:(這里詳情可參考Maple2014博客)
Do you accept the previously read EULA? (accept/decline/quit): accept
You are attempting to install on an unsupported configuration. Do you wish to continue? ((y)es/(n)o) [ default is no ]: y
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 346.46? ((y)es/(n)o/(q)uit): n
Do you want to install the OpenGL libraries? ((y)es/(n)o/(q)uit) [ default is yes ]: n
Install the CUDA 9.0 Toolkit? ((y)es/(n)o/(q)uit): y
Enter Toolkit Location [ default is /usr/local/cuda-9.0 ]:
/usr/local/cuda-9.0 is not writable.
Do you wish to run the installation with ‘sudo’? ((y)es/(n)o): y
Please enter your password:
Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): n
Install the CUDA 9.0 Samples? ((y)es/(n)o/(q)uit): y
Enter CUDA Samples Location [ default is /home/xxx ]:
Installing the CUDA Toolkit in /usr/local/cuda-9.0 …
Installing the CUDA Samples in /home/xxx …
Copying samples to /home/xxx/NVIDIA_CUDA-9.0_Samples now…
Finished copying samples.12345678910111213141516
安裝好后我們可以去/usr/local/下看到安裝好的cuda-9.0文件夾:
    
 
安裝cudnn
其次我們需要安裝cudnn,同理去nvidia官網下載cudnn。這里我們安裝的是cudnn7.0.5。 
 
注意,我們這里選擇cuda9.0下cuDNN v7.0.5 Library for Linux。下載好后直接命令行解壓然后復制lib64和include文件夾到usr/local/cuda-9.0,命令如下:
# Installing from a Tar File
sudo cp cuda/include/cudnn.h /usr/local/cuda-9.0/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64
sudo chmod a+r /usr/local/cuda-9.0/include/cudnn.h /usr/local/cuda-9.0/lib64/libcudnn*1234
 
 
cuda版本的自由切換
以上講的就是多版本cuda的安裝。最后,我們要做的就是cuda版本的自由切換。命令行sudo gedit ~/.bashrc打開.bashrc,也許你已經裝過cuda8.0,則.bashrc下應該有如下行:(詳情請參考mumoDM博客)
export PATH="$PATH:/usr/local/cuda-8.0/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64/"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda-8.0/lib64"  123
我們將所有的cuda-8.0更改為cuda文件夾: 
 
export PATH="$PATH:/usr/local/cuda/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64/"
export LIBRARY_PATH="$LIBRARY_PATH:/usr/local/cuda/lib64"  123
到這一步我們已經設置好了鏈接庫,最后我們只需要在終端敲入: 
 
sudo rm -rf /usr/local/cuda #刪除之前創建的軟鏈接
sudo ln -s /usr/local/cuda-8.0 /usr/local/cuda #創建新 cuda 的軟鏈接12
這里我是從cuda8.0切換到9.0 。同理反一下就可以切換回8.0 。所有完事后,可以用命令來查看cuda是否切換完成: 
$ nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Sep__1_21:08:03_CDT_2017
Cuda compilation tools, release 9.0, V9.0.17612345
 
總結
當然本人在安裝過程中還是踩過好多坑的,舉幾個栗子說明。 
(1)  nvcc可能默認是你以前deb安裝時候其他版本的,所以你會發現就算你操作按上面一步步來,nvcc –version結果還是沒變。所以我們可以找到nvcc位置,然后創建usr/local/cuda/nvcc軟鏈接到原先nvcc位置,應該是usr/bin/nvcc,操作為: 
which nvcc # 找到nvcc位置,假定在/usr/bin/nvcc且是以前版本8.0
sudo ln -s /usr/local/cuda/bin/nvcc  /usr/bin/nvcc # 創建軟鏈接鏈接到當前cuda的nvcc
nvcc --version # 顯示當前cuda版本123
 
(2)  也許你切換到8.0跑Pytorch的時候發現報錯了: 
 
Traceback (most recent call last):
  File "train.py", line 318, in <module>
    main()
  File "train.py", line 182, in main
    out = model(inputs)
  File "/usr/local/lib/python2.7/dist-packages/torch/nn/modules/module.py", line 206, in __call__
    result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/torch/nn/parallel/data_parallel.py", line 61, in forward
    outputs = self.parallel_apply(replicas, inputs, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/torch/nn/parallel/data_parallel.py", line 71, in parallel_apply
    return parallel_apply(replicas, inputs, kwargs)
  File "/usr/local/lib/python2.7/dist-packages/torch/nn/parallel/parallel_apply.py", line 45, in parallel_apply
    raise output
RuntimeError: CUDNN_STATUS_INTERNAL_ERROR1234567891011121314
這個時候需要刪除root下一個隱藏文件夾 .nv:
 
sudo rm -rf ~/.nv1
就是這么多,祝玩得開心!(附一張成功圖:原8.0切換到9.0) 
 
 
引用

 
  http://blog.csdn.net/maple2014/article/details/78574275
  http://blog.csdn.net/mumoDM/article/details/79462604
  https://github.com/SeanNaren/deepspeech.pytorch/issues/32


免責聲明!

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



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