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

nomoremorphine 2024-07-24 14:37:01 阅读 94

Ubuntu CUDA相关问题全解

问题描述概念简介一、查看现有系统目录下CUDA版本cuDNN版本查看CUDA运行API版本查看CUDA驱动API版本查看

二、安装新版本三、CUDA版本切换四、确定pytorch所使用的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版本查看

<code>cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

CUDA运行API版本查看

nvcc -V

或者:

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

cd ~/usr/local

stat cuda

CUDA驱动API版本查看

nvidia-smi

二、安装新版本

CUDA:CUDA下载地址

1、下载对应版本的CUDA安装包(选择下载runfile文件 .run文件)

在这里插入图片描述

<code>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

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

在这里插入图片描述

<code>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 #不安装样例

安装成功后提示(需添加环境变量、需要的话后续可单独安装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

3、查看环境变量:

sudo gedit ~/.bashrc

确保存在:

export PATH=/usr/local/cuda/bin:$PATH

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH

export CUDA_HOME=/usr/local/cuda

使配置的环境生效:

source ~/.bashrc

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

cd /usr/local

ls

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

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、查看当前 cuda 版本

cd ~/usr/local

stat cuda

在这里插入图片描述

当前cuda软链接在cuda-11.6上

2、切换版本

<code>#cuda11.6 切换到 cuda11.8

cd ~/usr/local

sudo rm -rf cuda

sudo ln -s cuda-11.8 cuda

stat cuda

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

查看编译时版本:

import torch

>>>torch.version.cuda # 输出一个 cuda 版本

>>>torch.__version__ # pytorch版本查看

查看运行时版本:

import torch

>>> import torch.utils

>>> import torch.utils.cpp_extension

>>> torch.utils.cpp_extension.CUDA_HOME #输出 Pytorch 运行时使用的 cuda

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

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

参考博文:

https://zhuanlan.zhihu.com/p/91334380

https://blog.csdn.net/qq_41094058/article/details/116207333



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。