当前位置:   article > 正文

Ubuntu CUDA相关问题全解(版本查看、安装、多版本切换、conda虚拟环境使用CUDA版本确定)_怎么查看虚拟环境下的cuda版本

怎么查看虚拟环境下的cuda版本

问题描述

在运行和学习 Pytorch 工程库时,不少项目会限定所使用的 Pytorch 和 cuda 版本信息。为了满足应用程序和框架本身对不同版本的 cuda 的需求,介绍如何本地环境确定所使用的cuda版本,如何切换cuda版本适配不同工程要求。

概念简介

Nvidia 官方提供的 CUDA Toolkit
是一个完整的工具安装包,其中提供了 Nvidia 驱动程序、开发 CUDA 程序相关的开发工具包等可供安装的选项。使用 Nvidia 官网提供的 CUDA Toolkit 可以安装开发 CUDA 程序所需的工具,包括 CUDA 程序的编译器、IDE、调试器等,CUDA 程序所对应的各式库文件以及它们的头文件。
安装路径: /usr/local/cuda

Annaconda 的 cudatoolkit
对于 Pytorch 之类的深度学习框架而言,Pytorch 本身与 CUDA 相关的部分是提前编译好的 ,只需要其所依赖的动态链接库存在即可正常运行,在安装了cudatoolkit 后,只要系统上存在与当前的 cudatoolkit 所兼容的 Nvidia 驱动,则已经编译好的 CUDA 相关的程序就可以直接运行,而不需要安装完整的 Nvidia 官方提供的 CUDA Toolkit。
安装路径:/home/xxx/anaconda3/pkgs/

一、查看现有系统目录下CUDA版本

cuDNN版本查看

cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
  • 1

CUDA运行API版本查看

nvcc -V
  • 1

或者:
在/usr/local路径下通过stat cuda命令查看当前使用的CUDA版本:

cd ~/usr/local
stat cuda
  • 1
  • 2

CUDA驱动API版本查看

nvidia-smi
  • 1

二、安装新版本

CUDA:CUDA下载地址
1、下载对应版本的CUDA安装包(选择下载runfile文件 .run文件)
在这里插入图片描述

wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run
sudo sh cuda_11.8.0_520.61.05_linux.run
  • 1
  • 2

2、在下载文件的目录下,通过sudo sh cuda_10.0.130_410.48_linux.run命令进行安装,安装过程中各项选择如下:

#..一堆协议说明...
accept/decline/quit: accept  #接受协议

# 提示Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing 
如果当前nvidia-smi中的CUDA Version高于安装版本,可选择continue
在下一步中去除driver项(在driver上回车),选择install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在这里插入图片描述

Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: n #如果之前安装过另一个版本的cuda,除非你确定想要用这个新版本的cuda,否则这里就建议选no,因为指定该链接后会将cuda指向这个新的版本**
 
Install the CUDA 10.0 Samples?
(y)es/(n)o/(q)uit: n #不安装样例
  • 1
  • 2
  • 3
  • 4
  • 5

安装成功后提示(需添加环境变量、需要的话后续可单独安装driver):

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-11.8/

Please make sure that
 -   PATH includes /usr/local/cuda-11.8/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-11.8/lib64, or, add /usr/local/cuda-11.8/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run cuda-uninstaller in /usr/local/cuda-11.8/bin
***WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 520.00 is required for CUDA 11.8 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3、查看环境变量:

sudo gedit ~/.bashrc
  • 1

确保存在:

export PATH=/usr/local/cuda/bin:$PATH  
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=/usr/local/cuda
  • 1
  • 2
  • 3

使配置的环境生效:

source ~/.bashrc
  • 1

4、安装后,在/usr/local路径下,通过ls命令查看是否存在新安装的CUDA目录:

cd /usr/local
ls
  • 1
  • 2

cuDNN:cuDNN下载地址
1、首先下载对应版本的cuDNN
2、cd到cudnn所在的文件夹下进行解压等操作:

wget https://developer.download.nvidia.com/compute/cudnn/9.1.0/local_installers/cudnn-local-repo-ubuntu2204-9.1.0_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2204-9.1.0_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-9.1.0/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn
  • 1
  • 2
  • 3
  • 4
  • 5

Ubuntu中安装cudnn详细步骤参考:链接: Ubuntu系统安装CUDA和cuDNN

三、CUDA版本切换

总览:

#在切换cuda版本时
rm -rf /usr/local/cuda  #删除之前创建的软链接,//删除软链接,注意是 /usr/local/cuda 而不是 /usr/local/cuda/,前者仅删除软链接,而后者会删除软链接所指向的目录的所有内容,操作请小心
sudo ln -s /usr/local/cuda-11.8/ /usr/local/cuda/ #建立新的指向cuda-11.8的软连接
nvcc --version #查看当前 cuda 版本
  • 1
  • 2
  • 3
  • 4

1、查看当前 cuda 版本

cd ~/usr/local
stat cuda
  • 1
  • 2

在这里插入图片描述
当前cuda软链接在cuda-11.6上

2、切换版本

#cuda11.6 切换到 cuda11.8 
cd ~/usr/local
sudo rm -rf cuda
sudo ln -s cuda-11.8 cuda
stat cuda
  • 1
  • 2
  • 3
  • 4
  • 5

四、确定pytorch所使用的cuda版本

查看编译时版本:

import torch
    >>>torch.version.cuda  # 输出一个 cuda 版本
    >>>torch.__version__  # pytorch版本查看
  • 1
  • 2
  • 3

查看运行时版本:

import torch
    >>> import torch.utils
    >>> import torch.utils.cpp_extension
    >>> torch.utils.cpp_extension.CUDA_HOME  #输出 Pytorch 运行时使用的 cuda 
  • 1
  • 2
  • 3
  • 4

cuda使用时查询路径:

若在运行时需要使用 cuda 进行程序的编译或其他 cuda 相关的操作,Pytorch 会首先定位一个 cuda 安装目录(来获取所需的特定版本 cuda 提供的可执行程序、库文件和头文件等文件 )。具体而言,Pytorch 首先尝试获取环境变量CUDA_HOME/CUDA_PATH 的值作为运行时使用的 cuda 目录。若直接设置了 CUDA_HOME/CUDA_PATH 变量,则Pytorch 使用 CUDA_HOME/CUDA_PATH 指定的路径作为运行时使用的 cuda 版本的目录。

若上述环境变量不存在,则 Pytorch 会检查系统是否存在固定路径 /usr/local/cuda。默认情况下,系统并不存在对环境变量 CUDA_HOME 设置,故而 Pytorch 运行时默认检查的是 Linux 环境中固定路径 /usr/local/cuda 所指向的 cuda 目录。

从 Pytorch 确定使用的 cuda 版本的流程来看,想要指定 Pytorch 使用的 cuda 版本,主要有两种方法:
1、修改软链接 /usr/local/cuda 所指向的 cuda 安装目录

#cuda11.6 切换到 cuda11.8 
cd ~/usr/local
sudo rm -rf cuda
sudo ln -s cuda-11.8 cuda
stat cuda
  • 1
  • 2
  • 3
  • 4
  • 5

2、通过设置环境变量 CUDA_HOME 指向所需使用的 cuda 版本的安装目录。

临时方案:通过 export 命令修改全局变量,在当前终端退出后即失效:

export CUDA_HOME=/usr/local/cuda-11.8/   //设置全局变量 CUDA_HOME
export PATH=$PATH:/usr/local/cuda-11.8/bin/  //在 PATH 变量中加入需要使用的 cuda 版本的路径,使得系统可以使用 cuda 提供的可执行文件,包括 nvcc
  • 1
  • 2

参考博文:
https://zhuanlan.zhihu.com/p/91334380
https://blog.csdn.net/qq_41094058/article/details/116207333

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/901666
推荐阅读
相关标签
  

闽ICP备14008679号