linux 搜索文件名中非,Linux服务器中非 root 用户安装(多版本) CUDA 和 cuDNN
為什么是非root用戶安裝cuda和cudnn?
共用服務器時,系統公共環境中安裝的cuda和cudnn的版本往往與項目需求不符合。而且你一般沒有root權限,沒辦法更改系統公共環境中的cuda和cudnn,而且更改公共配置會影響別人使用。
而TensorFlow和pytorch等框架對cuda和cudnn版本很敏感。比如,cuda9.1和cuda9.0不能通用,cudnn7.1.4和cudnn7.0.5不能通用,版本號差一點都不行。(這一點會在跑別人訓練好的模型時候體現。)所以一定要確定好具體cuda、cudnn以及TensorFlow具體版本,使其匹配。
這時候可以,在自己用戶目錄下裝cuda和cudnn,不影響系統公共環境,滿足自己需求。也不用任何root權限。
安裝后,更改自己用戶目錄下的環境變量,指向自己路徑下的cuda。
具體步驟如下文。
下載安裝cuda(以9.1為例)
到NVIDIA官網 https://developer.nvidia.com/cuda-toolkit-archive 選擇對應版本的cuda,這里選擇9.1。
然后再選對應的系統型號和installer type
image
點“Base Installer”里面的下載鏈接,大約1.5G,
或者也可以自己復制鏈接地址用wget下載,然后安裝
wget https://developer.nvidia.com/compute/cuda/9.1/Prod/local_installers/cuda_9.1.85_387.26_linux
# sh后的文件名以實際下載文件名為準,不如我下載之后文件名為“cuda_9.1.85_387.26_linux.1”
sh cuda_9.1.85_387.26_linux.run
安裝指令之后,出現
# 按q退出協議說明.
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 410.48?
(y)es/(n)o/(q)uit: no
Install the CUDA 10.0 Toolkit?
(y)es/(n)o/(q)uit: yes
# 改成自己的用戶名(要求絕對路徑),這里可能會要求你再輸入一遍
Enter Toolkit Location
[ default is /usr/local/cuda-10.0 ]: /home/wuliyttaotao/cuda-10.0
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: y
# 使用默認路徑,回車
Enter CUDA Samples Location
[ default is /home/wuliyttaotao ]:
下載安裝cudnn
選擇對應cuda版本號以及項目要求的cudnn版本(親身經歷是,系統公共目錄下裝的7.1.4,然后代碼跑了一半報錯說,人家原項目用的是7.0.5。然后無奈在自己用戶路徑下,新裝了對應版本的cuda和cudnn)
image
選擇cuDNN v7.0.5 Library for Linux(大概200多M),不要錯選成cuDNN v7.0.5 Runtime for Ubuntu 16.04
因為下載cudnn是需要登錄的,所以不便用wget下載,在自己電腦上下載后,再傳到服務器上。
下載完 cuDNN,可能發現后綴是 .solitairetheme8,直接將這個后綴改成 .tgz 即可解壓。
解壓后發現cudnn總共分兩個目錄
復制 cuDNN 文件到 CUDA 安裝目錄:(cuDNN 解壓到 ~/cuda 目錄了,~/cuda-9.1 為自己設定的 CUDA 安裝目錄,~ 代表 /home/x007jianjian),并且給所有用戶添加讀的權限
cp ~/cuda/include/cudnn.h ~/cuda-9.1/include
cp ~/cuda/lib64/lib* ~/cuda-9.1/lib64
chmod a+r ~/cuda-9.1/include/cudnn.h ~/cuda-10.0/lib64/libcudnn*
建立軟連接:
cd ~/cuda-10.0/lib64
ln -sf libcudnn.so.7.6.4 libcudnn.so.7
ln -sf libcudnn.so.7 libcudnn.so
ldconfig -v
配置用戶環境變量
修改 ~/.bashrc 文件,將下面兩行加進去:(將 x007jianjian 改成自己的用戶名)
export PATH=/home/wuliyttaotao/cuda-9.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/home/wuliyttaotao/cuda-9.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
保存 ~/.bashrc 文件后,source ~/.bashrc 使其生效。
安裝多版本cudnn,cuda
安裝步驟同上述,需要哪個版本就把用戶環境變量指向按個版本。
當然,也可以將用戶環境變量指向系統公共的cuda
補充說明
安裝cuda時候會出現
Installing the CUDA Toolkit in /home/x007jianjian/cuda-9.1 ...
Missing recommended library: libXi.so
Missing recommended library: libXmu.so
Installing the CUDA Samples in /home/x007jianjian ...
Copying samples to /home/x007jianjian/NVIDIA_CUDA-9.1_Samples now...
Finished copying samples.
===========
= Summary =
===========
Driver: Not Selected
Toolkit: Installed in /home/x007jianjian/cuda-9.1
Samples: Installed in /home/x007jianjian, but missing recommended libraries
Please make sure that
- PATH includes /home/x007jianjian/cuda-9.1/bin
- LD_LIBRARY_PATH includes /home/x007jianjian/cuda-9.1/lib64, or, add /home/x007jianjian/cuda-9.1/lib64 to /etc/ld.so.conf and run ldconfig as root
To uninstall the CUDA Toolkit, run the uninstall script in /home/x007jianjian/cuda-9.1/bin
Please see CUDA_Installation_Guide_Linux.pdf in /home/x007jianjian/cuda-9.1/doc/pdf for detailed information on setting up CUDA.
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.1 functionality to work.
To install the driver using this installer, run the following command, replacing with the name of this run file:
sudo .run -silent -driver
Logfile is /tmp/cuda_install_92427.log
上面提示“Driver: Not Selected”是正常現象。
建立軟鏈接那一步會出現
/lib:
/usr/lib:
/sbin/ldconfig.real: Cannot stat /usr/lib/libopen-pal.so: No such file or directory
/sbin/ldconfig.real: Cannot stat /usr/lib/libopen-rte.so: No such file or directory
/sbin/ldconfig.real: Cannot stat /usr/lib/libmca_common_sm.so: No such file or directory
/sbin/ldconfig.real: Cannot stat /usr/lib/liboshmem.so: No such file or directory
libsatlas.so -> libsatlas.so
libmpi_mpifh.so.12 -> libmpi_mpifh.so.12.0.0
libibverbs.so.1 -> libibverbs.so.1.0.0
libmpi_usempi_ignore_tkr.so.6 -> libmpi_usempi_ignore_tkr.so.6.1.0
libGraphicsMagickWand-Q16.so.2 -> libGraphicsMagickWand.so
libgupnp-av-1.0.so.2 -> libgupnp-av-1.0.so.2.0.0
libBLTlite.2.5.so.8.6 -> libBLTlite.2.5.so.8.6
libopen-rte.so.12 -> libopen-rte.so.12.0.2
libcollada-dom2.4-dp.so.0 -> libcollada-dom2.4-dp.so.2.4.4
libmpi_cxx.so.1 -> libmpi_cxx.so.1.1.3
libgjs.so.0 -> libgjs.so.0.0.0
libGraphicsMagick-Q16.so.3 -> libGraphicsMagick.so
libgupnp-dlna-gst-2.0.so.3 -> libgupnp-dlna-gst-2.0.so.3.0.0
libmpi.so.12 -> libmpi.so.12.0.2
libmutter.so.0 -> libmutter.so.0.0.0
libmpi_usempif08.so.11 -> libmpi_usempif08.so.11.1.0
libgupnp-dlna-2.0.so.3 -> libgupnp-dlna-2.0.so.3.0.0
libBLT.2.5.so.8.6 -> libBLT.2.5.so.8.6
libmca_common_sm.so.4 -> libmca_common_sm.so.4.0.4
libmca_common_verbs.so.7 -> libmca_common_verbs.so.7.0.0
libnetpbm.so.10 -> libnetpbm.so.10.0
libompitrace.so.0 -> libompitrace.so.0.0.0
libid3tag.so.0 -> libid3tag.so.0.3.0
libbotan-1.10.so.1 -> libbotan-1.10.so.1.12
libopen-pal.so.13 -> libopen-pal.so.13.0.2
/sbin/ldconfig.real: Can't create temporary cache file /etc/ld.so.cache~: Permission denied
顯示看起來像是報錯。但實際用起來,暫時沒發現什么影響。
root用戶
Linux 服務器的用戶如果有 root 權限,那直接刪除原來的 cuDNN,然后再重裝新版本。
刪除已有的 cuDNN:
sudo rm -rf /usr/local/cuda/include/cudnn.h
sudo rm -rf /usr/local/cuda/lib64/libcudnn*
其他安裝方式跟非root用戶相同,只不過是把用戶路徑替換成/usr/local,其它命令前加了sudo
還有一點
使用公共服務器的同學也請注意,大家在安裝自己的cuda和cudnn后,最好刪除安裝文件,為自己和別人節省公共空間。(安裝其他包也是一樣,及時清理安裝緩存文件)
reference
總結
以上是生活随笔為你收集整理的linux 搜索文件名中非,Linux服务器中非 root 用户安装(多版本) CUDA 和 cuDNN的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: db2 10.5 64位 linux,d
- 下一篇: linux 其他常用命令