当前位置: 首页 > article >正文

被裁20240927 --- WSL-Ubuntu20.04安装cuda、cuDNN、tensorRT

cuda、cuDNN、tensorRT的使用场景

1. CUDA(Compute Unified Device Architecture)

作用

  • GPU 通用计算:CUDA 是 NVIDIA 的并行计算平台和编程模型,允许开发者直接利用 GPU 的并行计算能力,加速通用计算任务(如科学计算、图像处理、深度学习等)。
  • 硬件抽象层:提供 API 和工具链(如编译器、调试器),让开发者能够编写运行在 NVIDIA GPU 上的代码。

使用场景

  • 深度学习训练与推理:为深度学习框架(如 TensorFlow、PyTorch)提供底层 GPU 加速支持。
  • 高性能计算(HPC):加速物理模拟、分子动力学、金融建模等计算密集型任务。
  • 图形渲染与游戏开发:支持 GPU 加速的图形渲染和实时计算。

核心特点

  • 支持 C/C++、Python 等语言的 GPU 编程。
  • 提供多线程并行计算能力,显著提升计算效率。

2. cuDNN(CUDA Deep Neural Network Library)

作用

  • 深度学习专用加速库:cuDNN 是 NVIDIA 针对深度学习优化的 GPU 加速库,专注于加速神经网络的核心操作(如卷积、池化、归一化、激活函数等)。
  • 框架集成:主流深度学习框架(如 TensorFlow、PyTorch、MXNet)依赖 cuDNN 实现高效的 GPU 加速。

使用场景

  • 训练深度学习模型:在模型训练阶段,cuDNN 加速卷积、循环神经网络(RNN)等操作。
  • 推理加速:在模型推理阶段优化计算性能。

核心特点

  • 高度优化的算法实现,比直接使用 CUDA 实现更快。
  • 支持自动选择最优算法(如根据输入尺寸选择最快的卷积算法)。
  • 与 CUDA 紧密集成,需配合 CUDA 使用。

3. TensorRT(Tensor Runtime)

作用

  • 推理优化引擎:TensorRT 是 NVIDIA 的高性能深度学习推理(Inference)优化器和运行时引擎,专注于将训练好的模型部署到生产环境。
  • 模型压缩与加速:通过层融合(Layer Fusion)、精度校准(INT8/FP16)、内核自动调优等技术,显著降低模型延迟、提高吞吐量。

使用场景

  • 生产环境部署:在边缘设备(如 Jetson 系列)、云端服务器或数据中心部署训练好的模型。
  • 低延迟推理:适用于实时应用(如自动驾驶、视频分析、语音识别)。
  • 资源受限环境:通过量化(INT8)减少模型内存占用和计算量。

核心特点

  • 支持模型格式转换(如 ONNX、TensorFlow、PyTorch → TensorRT 引擎)。
  • 动态张量形状(Dynamic Tensor Shape)支持(适用于可变输入尺寸)。
  • 跨平台部署(支持 Windows/Linux/Jetson 等)。

三者的关系与协作流程

  1. 训练阶段

    • 使用 CUDA 提供 GPU 计算能力。
    • 依赖 cuDNN 加速深度学习框架的核心操作(如卷积)。
    • 框架示例:PyTorch + CUDA + cuDNN 训练 ResNet 模型。
  2. 推理阶段

    • 使用 TensorRT 对训练好的模型进行优化(如 FP16/INT8 量化、层融合)。
    • 最终生成轻量化的 TensorRT 引擎,在部署时显著提升推理速度。
    • 示例:将训练好的 YOLOv5 模型转换为 TensorRT 引擎,部署到 NVIDIA Jetson 边缘设备。

总结对比

工具定位主要场景依赖关系
CUDAGPU 通用计算平台所有 GPU 加速任务
cuDNN深度学习专用加速库训练和推理依赖 CUDA
TensorRT推理优化引擎生产环境部署依赖 CUDA 和 cuDNN

注意事项

  • 版本兼容性:CUDA、cuDNN、TensorRT 和深度学习框架(如 PyTorch)需版本匹配。
  • 硬件限制:仅支持 NVIDIA GPU(如 RTX 系列、Tesla 系列、Jetson 系列)。

通过合理使用 CUDA、cuDNN 和 TensorRT,可以显著提升深度学习模型的训练效率和推理性能。

安装cuda、cuDNN、tensorRT

环境:WSL-Ubuntu20.04
参考资料:

  • https://blog.csdn.net/JineD/article/details/131201121
  • https://blog.csdn.net/qq_43515934/article/details/123897435
  • https://zhuanlan.zhihu.com/p/615053337
  • https://blog.csdn.net/weixin_45628358/article/details/130408132
  • CUDA Toolkit Documentation
  • CUDA on WSL User Guide
  • NVIDIA cuDNN Documentation
  • NVIDIA Deep Learning TensorRT Documentation
  • NVIDIA TensorRT Documentation
  • 阿木实验室SpireCV安装脚本
  • DeepSeek

一些概念

  • 安装CUDA即安装nvidia-cuda-toolkit
  • 只要Windows中安装好了NVIDIA显卡驱动,在WSL中可以直接使用该驱动,最新的NVIDIA Windows GPU驱动程序将完全支持WSL,所以不要在WSL-Ubuntu20.04上安装任何的NVIDIA显卡驱动!以免造成覆盖问题!请不要apt install nvidia-cuda-toolkit,因为nvidia-cuda-toolkit 包含了一个显卡驱动!
  • CUDA
    加速运算(科学计算、图形运算);
    训练推理过程中均可使用;
  • cuDNN
    加速DNN的运算;
    被TensorFlow、PyTorch、OpenCV等深度学习框架、模块调用;
    训练推理过程中均可使用;
  • TensorRT:优化深度学习网络的推理;
    被TensorFlow、PyTorch、OpenCV等深度学习框架、模块调用;
    只在推理过程中使用;
  • Cuda版本切换
    如果机器上安装了多个版本的cuda,则会在/usr/local/中存在多个cuda-xx的文件夹,如下:
    在这里插入图片描述
    其中/usr/local/cuda文件夹是个软链接,链接到目前的cuda版本目录,所以如果要切换版本的话,只需要将原来cuda软链删除,重新建立指向另一个cuda-xx目录即可。
  • 安装cuda的系统要求、硬件条件、编程语言要求、内核要求等、系统版本要求、编译器版本要求请查阅:Pre-installation Actions
  • GPG、GPG public key:GPG(GNU Privacy Guard)是一个用于加密、签名和验证文件的开源加密工具。它可以帮助用户保护他们的数据免受未经授权的访问和篡改。您可以使用GPG来加密和签名电子邮件、文件和文本消息,以确保它们的安全性和完整性。

安装 CUDA

安装 CUDA 即安装 CUDA Toolkit

  • 0)安装前的准备工作
    确认WSL中可以正常访问GPU:nvidia-smi

  • 1)卸载WSL中为Ubuntu安装的显卡驱动
    一旦在Windows 上安装了NVIDIA GPU驱动程序,CUDA就可以在WSL2中以libcuda.so的形式使用。因此,不要在WSL 2中安装任何NVIDIA显卡驱动,否则会造成驱动覆盖问题!假如安装了,要卸载掉并重启wsl2:

    sudo apt-get remove --purge nvidia*
    sudo reboot
    
  • 2)卸载旧的 CUDA
    卸载掉可能存在的旧 CUDA -Toolkit,以进行正确版本 CUDA 的安装:

     sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
     "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
    sudo apt-get autoremove
    
  • 3)删除旧的 GPG key,GPG 秘钥用于从CUDA仓库中下载文件的身份认证!7fa2af80是旧的key,目前CUDA repository最新的key是3bf863cc,推荐使用cuda-keyring来安装最新的key:

    sudo apt-key del 7fa2af80 
    
  • 4)查看显卡驱动版本
    nvidia-smi
    也可以在windows中的NVIDIA控制面板中查看!
    在这里插入图片描述

    • 二,当前安装的显卡驱动支持哪些版本的cuda?
      查看方法:Table 2 CUDA Toolkit and Minimum Required Driver Version for CUDA Minor Version Compatibility.
      注意:CUDA驱动程序是向后兼容的,例如:CUDA 11.6.x 要求显卡驱动版本 >= 450.80.02,假如你的显卡驱动版本是 536.67的话,那么你的显卡驱动同样可以兼容 CUDA 11.6.x.
    • 三,要选择与其他软件包互相兼容的cuda版本。
      例如:你的程序使用了TensorRT包,那么在选择CUDA 版本时要考虑与TensorRT的相互兼容,或在选择TensorRT版本时要考虑与CUDA 版本的相互兼容!
  • 5)在 WSL-Ubuntu 中安装 CUDA-Toolkit
    安装Linux默认的CUDA-Toolkit时总是附带安装一个显卡驱动,因此不能使用这种方式给WSL2-Ubuntu安装CUDA-Toolkit。为了避免显卡驱动覆盖问题,应该使用下面的方式为WSL2-Ubuntu安装CUDA-Toolkit:

    • 5.1)从CUDA Toolkit Archive中选择一个合适的cuda版本,以cuda11.6为例:
      在这里插入图片描述
    • 5.2)安装类型选择 wsl-ubuntu :
      在这里插入图片描述
    • 5.3)在bash中执行安装命令(任选一种安装方式,推荐使用Network方式):
      # Network 方式安装:
      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
      sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/7fa2af80.pub
      sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/ /"
      sudo apt-get update
      sudo apt-get -y install cuda
      # Local方式安装:
      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.6.0/local_installers/cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
      sudo dpkg -i cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
      sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-6-local/7fa2af80.pub
      sudo apt-get update
      sudo apt-get -y install cuda
      
  • 6)查看是否安装成功(先重启一下wsl)

    # 先重启一下wsl
    dpkg -l cuda
    
  • 7)安装完成可以删除掉.deb文件以释放存储空间

    sudo rm cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
    
  • CUDA默认安装路径为 /usr/local/cuda/
    /usr/cuda/

安装 cuDNN

  • 0)准备工作

    • 安装显卡驱动:在WSL中不需要这步;
    • 安装CUDA Toolkit:在上一节中已安装;
    • 安装Zlib
      sudo apt-get install zlib1g
      
  • 1)下载和已安装的CUDA相兼容的cuDNN安装文件:cuDNN Archive.
    在这里插入图片描述

  • 2)选择一个符合您环境的安装方法:tar文件安装适用于所有Linux平台;Deb文件安装适用于Debian 11、Ubuntu 18.04、Ubuntu 20.04和22.04;RPM文件安装适用于RHEL7、RHEL8和RHEL9;包管理工具(如apt)安装方式,适合联网条件下安装。
    在这里插入图片描述

  • 3)以apt-get安装方式为例,为wsl2-Ubuntu安装 cuDNN v8.4.1:
    sudo apt-get install libcudnn8=8.4.1.*-1+cuda11.6
    sudo apt-get install libcudnn8-dev=8.4.1.*-1+cuda11.6
    sudo apt-get install libcudnn8-samples=8.4.1.*-1+cuda11.6

  • 4)验证安装是否成功
    查看cudnn_version.h或cudnn.h
    如果出现版本号则安装成功

    cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
    或者:
    cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 
    如果cudnn_version.h文件不存在就搜索一下,安装路径可能有出入
    sudo find / -name 'cudnn_version.h'
    或查找文件cudnn.h
    
  • 参考文献
    官网:cuDNN installation Guide on Linux
    博客:https://blog.csdn.net/qq_43515934/article/details/123897435

安装TensorRT

  • 1)下载
    查看与已安装的CUDA Toolkit、cuDNN版本相互兼容的TensorRT版本,并下载安装文件,以deb安装方式为例。
  • 2)安装tensorrt,以TensorRT 8.4 EA、cuda11.6.0、cuDNN8.4.1为例
    sudo dpkg -i nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.0.6-ea-20220212_1-1_amd64.deb
    
  • 3)添加第三方仓库秘钥
    sudo apt-key add /var/nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.0.6-ea-20220212/*.pub
    #或:
    sudo cp /var/nv-tensorrt-repo-ubuntu2004-cuda11.6-trt8.4.0.6-ea-20220212/*.gpg /usr/share/keyrings/
    
  • 4)更新软件源,要保证运行后无错误提示
    sudo apt-get update
    
  • 5)安装tensorrt的依赖
    TensorRT 提供三种安装模式:完整安装、lean runtime 安装、dispatch runtime安装,根据具体需要来进行安装!了解更多请参考:TensorRT Documentation。
    以完整安装为例:
    sudo apt-get install tensorrt -y
    python3 -m pip install numpy
    sudo apt-get install python3-libnvinfer-dev
    
  • 6)验证是否安装成功
    dpkg-query -W tensorrt
    
    显示如 tensorrt 8.6.1.x-1+cuda12.0 则表明安装成功!
  • 7)安装完毕后可以删除安装文件 *.deb 以释放空间。
  • 参考文献
    NVIDIA Deep Learning TensorRT Documentation
    阿木实验室SpireCV安装脚本

卸载

  • 卸载CUDA
    # To remove CUDA Toolkit:
    sudo apt-get --purge remove "*cuda*" "*cublas*" "*cufft*" "*cufile*" "*curand*" \
     "*cusolver*" "*cusparse*" "*gds-tools*" "*npp*" "*nvjpeg*" "nsight*" "*nvvm*"
    # To remove NVIDIA Drivers:
    sudo apt-get --purge remove "*nvidia*" "libxnvctrl*"
    # To clean up the uninstall:
    sudo apt-get autoremove
    
  • 卸载cuDNN
     sudo apt-get --purge remove "*cuDNN*"
     sudo apt-get autoremove
    
  • 卸载TensorRT
    Uninstalling TensorRT

Troubleshooting

  • 1) the public key is not available: NO_PUBKEY F60F4B3D7FA2AF80 Hit:4 https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64 InRelease
    原因:key不正确!!
    解决办法:找到该源,为它重新配置一个正确的key(无效的源就删掉!)
    在这里插入图片描述

  • 2)W: GPG error: https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64 InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A4B469963BF863CC
    E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64 InRelease' is not signed.
    原因:缺少公钥
    解决办法:https://blog.csdn.net/A15130402745/article/details/131643433
    https://keyserver.ubuntu.com/

  • 3)Version '8.4.1-1+cuda11.6' for 'libcudnn8' was not found
    在这里插入图片描述
    解决办法:sudo apt-get install libcudnn8=8.4.1.*-1+cuda11.6

  • 4)安装libcudnn8-samples出现:Version '8.4.1.*-1+cuda11.6' for 'libcudnn8-samples' was not found
    解决办法:sudo apt-get install libcudnn8-samples

  • 5)Processing triggers for libc-bin (2.31-0ubuntu9.14) ... /sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link
    在安装完cuda或tensorRT后出现该问题。
    解决办法:重新建立软连接,它们正确的关系应该是:libcuda.so -> libcuda.so.1 -> libcuda.so.1.1。步骤:
    在windows Powershell中:

    cd C:\Windows\System32\lxss\lib
    rm libcuda.so
    rm libcuda.so.1
    

    在wsl中:

    cd /usr/lib/wsl/lib/
    ln -s libcuda.so.1.1 libcuda.so.1
    ln -s libcuda.so.1.1 libcuda.so
    
  • 6)export: bad variable name
    待解决…




在这里插入图片描述

点赞、收藏、关注哟!

http://www.kler.cn/a/562303.html

相关文章:

  • 【Python修仙编程】(二) Python3灵源初探(2)
  • 【Python爬虫(74)】用Python爬虫解锁法律条文数据的宝库
  • Oracle创建视图提示:ORA-01031 权限不足
  • 基于无人机遥感的烟株提取和计数研究
  • 11.Docker 之分布式仓库 Harbor
  • 温湿度监控设备融入智慧物联网
  • element ui的time时间和table表格
  • 朝天椒USB服务器在汽车生产企业中的应用分析
  • DeepSeek写扫雷手机小游戏
  • WiFi相关功能使用教程(wpa_supplicant及wpa_cli)
  • 使用AWS服务Amazon Bedrock构建大模型应用
  • AI agent(以AutoGPT为例)和AI Workflow 区别
  • DeepSeek 与其他大语言模型相比,优势和劣势
  • Ae:导入 3D 模型
  • 在Linux上创建一个Docker容器并在其中执行Python脚本
  • Windows程序设计28:MFC模态与非模态对话框
  • Jenkins 构建 Unity 打包 .apk 同时生成 .aab
  • 爬虫解析库:pyquery的详细使用
  • 数据安全_笔记系列03:数据脱敏(Data Masking)深度解析
  • 批量导出数据库表到Excel