Ubuntu安装cuda
前言
本文为《CUDA与TensorRT部署学习笔记》系列中环境配置篇。本文主要从cuda相关知识点、安装前准备、安装的整体过程进行记录~
1 CUDA说明
一般我们提到cuda会涉及到几个东西:
(1)cuda驱动
(2)cuda toolkit
(3)cudnn
1.1 CUDA
CUDA 是 NVIDIA 开发的一套并行计算架构,可以将普通的 CPU 转变为支持并行计算的 GPU。CUDA 使用一种叫做 CUDA 编程语言来编写并行程序。
CUDA 主要有以下几个作用:
- 加速图形处理。
- 加速机器学习。
- 加速科学计算。
1.2 CUDA 驱动
CUDA 驱动是一种软件,它允许你的计算机操作系统与 NVIDIA 的 GPU 通信。这个驱动是必需的,因为它使得你的系统能够理解和利用 GPU 的计算能力。简单来说,CUDA 驱动是计算机和显卡之间的翻译器,确保它们能够顺畅地进行交流。
1.3 CUDA Toolkit
CUDA Toolkit 是 NVIDIA 开发的一套软件开发工具包,可以让软件开发人员利用 NVIDIA 的 GPU 来加速他们的程序。
一般说的安装cuda,大部分都指的是cuda toolkit的安装。也有听过指的是cuda驱动,所以说的时候还是需要明确下~
大白话理解
CUDA Toolkit 就像是一套工具箱,里面装着各种工具,可以帮助我们使用 GPU 来做各种事情。
例如,CUDA Toolkit 里面有一把工具,可以帮助我们把程序编译成可以运行在 GPU 上的代码。还有一把工具,可以帮助我们调试 GPU 程序。还有一把工具,可以帮助我们分析 GPU 程序的性能。
CUDA Toolkit 包括以下组件:
- CUDA Runtime API: 提供访问 GPU 硬件和运行 CUDA 程序的功能。CUDA Runtime 是一组库函数,它包含了在 GPU 上执行的任务所需的各种功能,比如分配内存、启动 GPU 核函数等。开发者可以通过调用这些库函数来实现 GPU 计算。
- CUDA Driver API: 提供更底层的访问 GPU 硬件的方法。
- CUDA 编译器(NVCC):(会经常打交道) 用于编译 CUDA 程序。nvcc 是 CUDA 编译器,它能够理解常规的 C/C++ 代码,同时还支持 CUDA 扩展,允许你在同一个程序中混合使用 CPU 和 GPU 代码。
- CUDA 工具: 用于调试和分析 CUDA 程序的工具。
1.4 cuDNN
cuDNN 是 NVIDIA 提供的深度学习加速库,它可以帮助在 GPU 上加速深度学习模型的训练和推理。cuDNN 包含了大量优化过的卷积、池化等算子,可以显著提高深度学习模型的性能。
2 安装前准备
2.1 检查显卡是否支持 CUDA
首先,需要确保NVIDIA 显卡支持 CUDA。可以在 NVIDIA 的官方网站上找到一个支持列表,看显卡是否在其中。
2.2 查看linux系统的版本
查看 Linux 系统的版本,可以使用以下命令:
cat /etc/os-release
该命令将会打印出系统的版本信息,包括发行版名称、版本号、内核版本等。
例如,在 Ubuntu 18.04 LTS 系统中,执行该命令会输出以下信息:
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
如果要查看更详细的版本信息,可以使用以下命令:
lsb_release -a
该命令将会打印出以下信息:
Distributor ID: Ubuntu
Description: Ubuntu 18.04.6 LTS
Release: 18.04
Codename: bionic
此外,还可以使用以下命令来查看系统的版本信息:
uname -a
该命令将会打印出以下信息:
Linux <主机名> <内核版本> <内核架构>
例如,在 Ubuntu系统中,执行该命令会输出以下信息:
Linux sikaomao 5.4.0-150-generic #167~18.04.1-Ubuntu SMP Wed May 24 00:51:42 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
2.2 确定TensorRT版本
要根据自己的项目或者要求寻找合适的TensorRT版本,然后从TensorRT官方的release note寻找对应的CUDA和cuDNN版本。
- TensorRT ReleaseNotes:docs.nvidia.com/deeplearnin…
举例子,如下图,每个版本的TensorRT都有对应的cuda相关版本要求的,因此安装前需要查看清楚:
3 CUDA 驱动(CUDA Driver)安装
CUDA 需要与正确版本的 NVIDIA 驱动配合使用。你可以在 NVIDIA 官方网站上找到适合你显卡的最新驱动程序。安装过程可能需要重启系统。
3.1 两种安装方式
- 方式一:通过 software & Updates 安装,安装 nvidia 驱动。
我为了省事直接按这个方式安装了。
- 方式二:通过终端安装,只安装 nvidia 驱动
(1)先通过查询推荐安装的驱动版本
ubuntu-drivers devices
(2)这里出现推荐安装 nvidia-driver-470
(3)所以可以通过命令的方式安装:
sudo apt install nvidia-driver-470 #安装470驱动
3.2 安装情况验证
上述方式安装后,进行重启,接下来验证是否安装好驱动。
通过命令查看即可:
nvidia-smi
如果能看到具体的信息,则证明安装正确。(注意安装完要重启下)
备注
画框的部分意思是:CUDA Version: 12.1 指的是当前显卡驱动支持的CUDA版本最大支持版本数!!!!
4 CUDA Toolkit 安装
4.1 说明
一般会有两种安装方式:
(1)通过系统包管理器(不建议)
sudo apt install nvidia-cuda-toolkit
(2)官方提供的脚本安装,(建议使用这个方式,下文用这个方式安装)
4.2 安装步骤
(1)可以打开官网,cuda toolkit工具包归档地址,选择自己需要安装的版本。
官方工具包地址:developer.nvidia.com/cuda-toolki…
(2)选择适合自己的版本信息和安装方式
我选择的是runfile这个方式,对应的下载、安装脚本如下:
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
(3)安装时只需要安装toolkit就行了,其他我都没有安装,看个人需要。结束后出现类似信息。
- 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
(4)此时需要进行环境变量的配置
# 打开配置表,我这边用的zsh,如果用bash就打开bashrc即可
vim ~/.zshrc
# 把路径改成自己的
export PATH=$PATH:/usr/local/cuda/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda/lib64
# 需要source下
source ~/.zshrc
#查看cuda是否安装成功
nvcc -V
大白话理解
问题:export PATH=$PATH:/usr/local/cuda/bin 这个怎么理解?
理解:
这表示将 /usr/local/cuda/bin 目录添加到 PATH 环境变量中。PATH 环境变量用于指定系统可以搜索可执行文件的目录。
export 命令用于将变量值导出到环境中, PATH=$PATH:/usr/local/cuda/bin 表示将 /usr/local/cuda/bin 目录的值添加到 PATH 环境变量的值中。
固定格式如下:
export PATH=$PATH:<目录路径>其中, <目录路径> 是要添加到 PATH 环境变量中的目录路径。
例如,要将 /usr/local/bin 目录添加到 PATH 环境变量中,您可以使用以下命令:
export PATH=$PATH:/usr/local/bin如果您要将多个目录添加到 PATH 环境变量中,您可以使用多个“ : ”分隔目录路径:
export PATH=$PATH:/usr/local/bin:/usr/bin这样,系统在搜索可执行文件时,会先在 /usr/local/bin 目录中搜索,然后在 /usr/bin 目录中搜索。
可以使用以下命令查看 PATH 环境变量:
echo $PATH如果已在 bashrc 中配置了 export PATH=$PATH:/usr/local/cuda/bin,则输出结果将会类似以下内容:
/usr/local/bin:/usr/bin:/usr/local/cuda/bin
4.3 QA
4.3.1 问题1:如何切换不同版本的cuda版本?
- 具体描述:
现在已经安装了/usr/local目录下有cuda_11.8 ,cuda_11.9两个版本的cuda,然后 /usr/local/下 看到软连接:cuda → /usr/local/cuda-11.8/ ,zshrc上export PATH=$PATH:/usr/local/cuda/bin配置是这个路径地址,现在调用是cuda_11.8 的版本,如果我想调用cuda_11.9的我应该怎么做?
- 做法如下:
方式 1:更改软连接
首先,需要查找现有的软连接。可以使用以下命令:
ls -l /usr/local/cuda
该命令将会列出 /usr/local/cuda 目录中的所有文件。如果安装了多个 CUDA 版本,则将看到多个软连接。
例如,如果当前的软连接是指向 CUDA 11.8 的,则输出结果如下:
lrwxrwxrwx 1 root root 20 2023-02-25 12:34 /usr/local/cuda -> /usr/local/cuda-11.8
接下来,需要创建新软连接,指向 CUDA 11.9。可以使用以下命令:
sudo ln -s /usr/local/cuda-11.9 /usr/local/cuda
该命令将会创建一个新的软连接,指向 /usr/local/cuda-11.9 目录。
最后,需要重启您的系统。重启后,新软连接将会生效。
方式 2:修改 bashrc
可以修改 bashrc 文件,将 PATH 环境变量指向CUDA 11.9的 bin 目录。可以使用以下命令:
sudo vim ~/.bashrc
在文件中,找到 PATH 环境变量,并添加以下内容:
export PATH=$PATH:/usr/local/cuda-11.9/bin
保存并退出文件。
然后,需要重新加载 bashrc 文件。可以使用以下命令:
source ~/.bashrc
重新加载后,PATH 环境变量将会指向 CUDA 11.9 的 bin 目录。
- 两种方式的示例
方式 1
#查找现有的软连接
ls -l /usr/local/cuda
#创建新软连接
sudo ln -s /usr/local/cuda-11.9 /usr/local/cuda
#重启系统
sudo reboot
方式 2
#修改 bashrc 文件
sudo vim ~/.bashrc
#添加 PATH 环境变量
export PATH=$PATH:/usr/local/cuda-11.9/bin
#保存并退出文件
:wq
#重新加载 bashrc 文件
source ~/.bashrc
使用哪种方式取决于您的个人喜好。您可以根据自己的需要选择合适的方式。
大白话理解
选择不同的cuda版本,有两种方式:如果通过修改软连接,bashrc的配置信息不用调整,好处就是引用环境变量的信息不用变化;如果改变环境变量的信息,就是直接指向选定的版本的信息,跟指向cuda软链接没有关系。