Linux安装多个版本的CUDA,以及不同版本CUDA之间的切换使用(不同虚拟环境使用不同CUDA版本)

业精于勤荒于嬉
行成于思毁于随

昨天部署项目遇到错误

OSError: libcusparse.so.11: cannot open shared object file: No such file or directory

尝试了很多种方法,最终发现是原来装的/usr/local/CUDA-11.4中只有target文件夹,因此需要重新装。同时,有多个项目需要部署,它们用的是不同的CUDA,所以需要安装多个版本并切换。

CUDA安装

不同版本CUDA的安装包

https://developer.nvidia.com/cuda-toolkit-archive

  • 本文安装CUDA-11.1以及CUDA10.0
  • 安装过程中,会问你是否需要下载驱动(Drive),正常情况下请不要下载,即选择否
  • 默认安装目录是/usr/local/,后面会多次提到
  • vi ~/.bashrc末端加上配置信息
  • export CUDA_HOME=/usr/local/cuda
    export LD_LIBRARY_PATH=${CUDA_HOME}/lib64
    export PATH=${CUDA_HOME}/bin:${PATH}
    
  • 注意:上面的/usr/local/cuda是一个软连接,去usr/local/cuda一看便知,后面的不同版本CUDA切换会与之有关
  • source ~/.bashrc使之生效
  • nvcc -V查看CUDA版本信息
  • root@Tower:~# nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2020 NVIDIA Corporation
    Built on Mon_Oct_12_20:09:46_PDT_2020
    Cuda compilation tools, release 11.1, V11.1.105
    Build cuda_11.1.TC455_06.29190527_0
    
  • 测试是否成功安装,运行以下代码结束后显示“Result = PASS”即为成功安装
  • cd /usr/local/cuda-11.1/samples/1_Utilities/deviceQuery
    make
    ./deviceQuery
    
    

    不同版本CUDNN和CUDA的对应关系

    https://developer.nvidia.com/rdp/cudnn-archive

  • 请选择CUDA对应的CUDNN
  • 下载前需要注册、登陆,可能出现“安全挑战”页面反复循环,也收不到确认邮件,无法登陆… 可以求助周围的人帮忙登陆下载,确实很玄学,有的人登陆很快
  • 由于不同CUDA需要安装对应的CUDNN,下面演示CUDA-11.1的安装,CUDA-10.0安装同理
  • 将下载完成的CUDNN解压tar -zxvf cudnn-11.3-linux-x64-v8.2.1.32.tgz
  • 将解压后的cuda文件夹内文件复制到/usr/local/cuda-11.1/对应文件夹中,修改其权限
  • sudo cp cuda/include/* /usr/local/cuda-11.1/include/ 
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.1/lib64/ 
    sudo chmod a+r /usr/local/cuda-11.1/include/cudnn.h 
    sudo chmod a+r /usr/local/cuda-11.1/lib64/libcudnn*
    
  • 安装好的CUDNN版本可以在/usr/local/cuda-11.1/include中的cudnn_version.h文件中查看,本文演示的版本为8.2.1、
  • #define CUDNN_MAJOR 8
    #define CUDNN_MINOR 2
    #define CUDNN_PATCHLEVEL 1
    

    不同版本CUDA之间的切换使用(不同虚拟环境使用不同CUDA版本)

    /usr/local目录下可以看到软连接

    lrwxrwxrwx  1 root root    20 7月   8 22:27 cuda -> /usr/local/cuda-11.1/
    drwxr-xr-x 19 root root  4096 7月   8 21:59 cuda-10.0/
    drwxr-xr-x 16 root root  4096 7月   8 17:05 cuda-11.1/
    

    此时,系统使用的CUDA版本为11.1,如下所示:

    root@Tower:/usr/local# nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2020 NVIDIA Corporation
    Built on Mon_Oct_12_20:09:46_PDT_2020
    Cuda compilation tools, release 11.1, V11.1.105
    Build cuda_11.1.TC455_06.29190527_0
    

    想要更改为CUDA-10.0,将软链接cuda重新链接到cuda-10.0即可

    root@Tower:/usr/local# ln -snf /usr/local/cuda-10.0 /usr/local/cuda
    

    重新运行nvcc -V命令,即可发现CUDA版本已切换

    root@Tower:/usr/local# nvcc -V
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2018 NVIDIA Corporation
    Built on Sat_Aug_25_21:08:01_CDT_2018
    Cuda compilation tools, release 10.0, V10.0.130
    

    来源:汉秋_

    物联沃分享整理
    物联沃-IOTWORD物联网 » Linux安装多个版本的CUDA,以及不同版本CUDA之间的切换使用(不同虚拟环境使用不同CUDA版本)

    发表评论