美文网首页linux&github
Linux服务器中非 root 用户安装(多版本) CUDA 和

Linux服务器中非 root 用户安装(多版本) CUDA 和

作者: char_jianjian | 来源:发表于2020-04-01 13:07 被阅读0次

    为什么是非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

    https://developer.nvidia.com/rdp/cudnn-archive
    下载cudnn需要NVIDIA账号,花3分钟注册一个即可。

    选择对应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 <CudaInstaller> with the name of this run file:
        sudo <CudaInstaller>.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

    https://www.cnblogs.com/wuliytTaotao/p/12169315.html

    相关文章

      网友评论

        本文标题:Linux服务器中非 root 用户安装(多版本) CUDA 和

        本文链接:https://www.haomeiwen.com/subject/yocxphtx.html