# 2023-03-06 更新

如果有小伙伴看了 2023-03-05 更新,发现设置环境变量后运行 cuda 代码在链接过程中仍然会有报错问题啥的,那我这里建议,先别管 2023-03-05 更新的内容了,还是按照我博客里的安装步骤一步一步往下安装,用 sudo apt install nvidia-cuda-toolkit 命令去安装 nvcc,也不需要配置环境变量了。因为博客里的安装步骤是我亲自执行过的,在我的 WSL2 环境里是一点问题都没有。

如果跟着我的博客步骤走,发现在测试 ./mnistCUDNN 时有问题,那就再根据我 2023-03-05 更新的内容尝试一下。不过这里我觉得可以先别卸载 nvidia-cuda-toolkit ,先去配置环境变量,然后跑代码看有没有问题,没有问题的话那就最好啦,如果还有问题,那就卸载 nvidia-cuda-toolkit ,配置好环境变量,再重启下,然后再跑下代码看看~

目前根据小伙伴的反映,就先记录到这里吧,后面有新情况也会继续更新的~

# 2023-03-05 更新

有小伙伴反映,按照 NVIDIA 官网命令安装完 CUDA 后,nvcc 实际上也是被成功安装啦,且 nvcc 的版本和我们选择 CUDA 的版本是保持一致的。但如果再运行 sudo apt install nvidia-cuda-toolkit 命令,就会导致 nvcc 的版本被覆盖为低版本。

比如,我们选择 CUDA 的版本是 11.8,那安装完 CUDA 后,我们是可以在 /usr/local/cuda/bin 目录下找到 nvcc 可执行文件的,在那个目录下运行 ./nvcc -V 就可以看到版本和 CUDA 保持一致,也是 11.8。所以实际上我们 不需要 再运行 sudo apt install nvidia-cuda-toolkit 命令安装 nvcc 啦,只需要再安装完 CUDA 后,配置下环境变量即可,如下

export CPATH=/usr/local/cuda-11.8/include:$CPATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda-11.8/bin:$PATH
export CUDA_ROOT=/usr/local/cuda-11.8

当然,如果你运行了 sudo apt install nvidia-cuda-toolkit 命令,从我博客里记录的图片可以看到 nvcc 的版本被覆盖为 10.1 啦,在我的 WSL2 环境里,10.1 的 nvcc 版本并没有什么问题,后面用 ./mnistCUDNN 测试也是成功哒~

但小伙伴测试说会报 CUDA driver version is insufficient for CUDA runtime version 版本不匹配的错误,所以后面的小伙伴可以参考下,先不要运行 sudo apt install nvidia-cuda-toolkit 命令,直接根据 NVIDIA 官网安装完 CUDA,然后配置下环境变量即可~

如果已经用 sudo apt install nvidia-cuda-toolkit 命令安装完了,测试也真报错了,就卸载掉 nvidia-cuda-toolkit,然后再配置下环境变量,再测试下看看吧~

# 前言

之前我写了一篇博客:Win11 安装 WSL2 和 Nvidia 驱动,记录了在 WSL2 里安装 CUDA,当时我选择了第二种安装方式,即用 WSL2 里的 MiniConda 去安装的 PyTorch 和 CUDA 等相关库,最近在使用中发现了这种方式的不足,即使用 cudanvcc 等命令时都要切换到 conda 相关环境下才能使用。比如我之前在 py38 环境下安装的,当我进入终端处于 base 环境下,nvcc 命令是不能使用哒

最近也在跟着恩培老师学 TensorRT,担忧用 MiniConda 安装的 CUDA 等库可能导致 TensorRT 安装失败,所以这次就试试直接在 base 环境下用上一篇博客的第一种方式安装 cudacudnntensorrt 吧~

结果也是很顺利的安装成功啦,便在此记录下来哈哈~

# TensorRT 介绍

  • NVIDIA® TensorRT™是一个用于高性能深度学习的推理框架,能够在 NVIDIA GPU 上实现低延迟、高吞吐量的部署
  • TensorRT 包含用于训练好的模型的优化器,以及用于执行推理的 runtime
  • 它可以与 TensorFlow、PyTorch 和 MXNet 等训练框架相辅相成地工作

# 环境配置

# CUDA Driver

使用 CUDA 前,要求 GPU 驱动与 cuda 的版本要匹配,匹配关系如下:

参考:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#cuda-major-component-versions__table-cuda-toolkit-driver-versions

安装可以参考我之前的 WSL2 博客吖:Win11 安装 WSL2 和 Nvidia 驱动

# 检查安装

输入 nvidia-smi 命令,查看 GPU 驱动版本

(base) aayu@AayuComputer-Pro:~$ nvidia-smi
Tue Feb 28 00:58:02 2023
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 525.65       Driver Version: 527.56       CUDA Version: 12.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  On   | 00000000:01:00.0  On |                  N/A |
| N/A   40C    P8    13W / 139W |   1668MiB /  6144MiB |      6%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A        23      G   /Xwayland                       N/A      |
+-----------------------------------------------------------------------------+

可以看到当前安装的驱动版本是 527.56 ,后面的 CUDA Version: 12.0 是指当前驱动支持的最高 CUDA 版本~

# 安装 CUDA

在 Nvidia 官网选择对应版本:https://developer.nvidia.com/cuda-toolkit-archive

比如我选择的是 11.8 版本,选择 Linuxx86_64WSL-Ubuntu2.0deb(local) ,如下图

安装命令已经给出啦,如下,直接在 WSL2 终端执行就好~

wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-8-local_11.8.0-1_amd64.deb
sudo cp /var/cuda-repo-wsl-ubuntu-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

成功安装如下图

# 安装 nvcc

sudo apt install nvidia-cuda-toolkit

安装完后重启电脑,检查安装结果,成功如下图~

# 安装 cuDNN

下载安装包:访问:https://developer.nvidia.com/zh-cn/cudnn,选择对应的版本,下载对应的安装包(建议使用 Debian 包安装)

比如我下载的是:Local Installer for Ubuntu20.04 x86_64 (Deb),下载后的文件名为 cudnn-local-repo-ubuntu2004-8.7.0.84_1.0-1_amd64.deb

# 安装

参考链接:https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html

# 注意,运行下面的命令前,将下面的 X.Y 和 v8.x.x.x 替换成自己具体的 CUDA 和 cuDNN 版本,如我的 CUDA 版本是 11.8,cuDNN 版本是 8.7.0.84
# Enable the local repository.
sudo dpkg -i cudnn-local-repo-${OS}-8.x.x.x_1.0-1_amd64.deb
# 我的:sudo dpkg -i cudnn-local-repo-ubuntu2004-8.7.0.84_1.0-1_amd64.deb
# Import the CUDA GPG key.
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/
# Refresh the repository metadata.
sudo apt-get update
# Install the runtime library.
sudo apt-get install libcudnn8=8.x.x.x-1+cudaX.Y
# 我的:sudo apt-get install libcudnn8=8.7.0.84-1+cuda11.8
# Install the developer library.
sudo apt-get install libcudnn8-dev=8.x.x.x-1+cudaX.Y
# 我的:sudo apt-get install libcudnn8-dev=8.7.0.84-1+cuda11.8
# Install the code samples and the cuDNN library documentation.
sudo apt-get install libcudnn8-samples=8.x.x.x-1+cudaX.Y
# 我的:sudo apt-get install libcudnn8-samples=8.7.0.84-1+cuda11.8

# 验证

# 复制文件
cp -r /usr/src/cudnn_samples_v8/ $HOME
cd  $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN

可能报错:test.c:1:10: fatal error: FreeImage.h: No such file or directory

解决办法:sudo apt-get install libfreeimage3 libfreeimage-dev

成功验证如下图

# 安装 TensorRT

访问:https://developer.nvidia.com/nvidia-tensorrt-8x-download 下载对应版本的 TensorRT

比如我选择的是 8.5.3 版本,下载完文件名为: nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8_1.0-1_amd64.deb

# 安装

参考地址:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html#installing-debian

# 替换成自己的 OS 和版本信息
os="ubuntuxx04"
tag="8.x.x-cuda-x.x"
sudo dpkg -i nv-tensorrt-local-repo-${os}-${tag}_1.0-1_amd64.deb
# 我的:sudo dpkg -i nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8_1.0-1_amd64.deb
sudo cp /var/nv-tensorrt-local-repo-${os}-${tag}/*-keyring.gpg /usr/share/keyrings/
# 我的:sudo cp /var/nv-tensorrt-local-repo-ubuntu2004-8.5.3-cuda-11.8/*-keyring.gpg/usr/share/keyrings/
sudo apt-get update
sudo apt-get install tensorrt

# 验证

输入 dpkg -l | grep TensorRT

(base) aayu@HPSCIL:~/tensorrt_install$ dpkg -l | grep TensorRT
ii  libnvinfer-bin                                    8.5.3-1+cuda11.8                  amd64        TensorRT binaries
ii  libnvinfer-dev                                    8.5.3-1+cuda11.8                  amd64        TensorRT development libraries and headers
ii  libnvinfer-plugin-dev                             8.5.3-1+cuda11.8                  amd64        TensorRT plugin libraries
ii  libnvinfer-plugin8                                8.5.3-1+cuda11.8                  amd64        TensorRT plugin libraries
ii  libnvinfer-samples                                8.5.3-1+cuda11.8                  all          TensorRT samples
ii  libnvinfer8                                       8.5.3-1+cuda11.8                  amd64        TensorRT runtime libraries
ii  libnvonnxparsers-dev                              8.5.3-1+cuda11.8                  amd64        TensorRT ONNX libraries
ii  libnvonnxparsers8                                 8.5.3-1+cuda11.8                  amd64        TensorRT ONNX libraries
ii  libnvparsers-dev                                  8.5.3-1+cuda11.8                  amd64        TensorRT parsers libraries
ii  libnvparsers8                                     8.5.3-1+cuda11.8                  amd64        TensorRT parsers libraries
ii  tensorrt                                          8.5.3.1-1+cuda11.8                amd64        Meta package for TensorRT

如果遇到 unmet dependencies 的问题,一般是 cuda cudnn 没有安装好。TensorRT 的 INCLUDE 路径是 /usr/include/x86_64-linux-gnu/ , LIB 路径是 /usr/lib/x86_64-linux-gnu/ ,Sample code 在 /usr/src/tensorrt/samples , trtexec/usr/src/tensorrt/bin 下。

更新于 阅读次数

请我喝[茶]~( ̄▽ ̄)~*

宇凌喵 微信支付

微信支付

宇凌喵 支付宝

支付宝