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

news/2025/2/27 4:51:44

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.niftyadmin.cn/n/5869454.html

相关文章

springcloud nacos 整合seata解决分布式事务

文章目录 nacos安装Mysql5.7安装及表初始化seata server安装下载并解压seata安装包在conf文件夹修改file.conf文件向本地数据库导入seata需要的表修改registry.conf文件将seata配置信息添加到nacos配置中心启动seata server springcloud整合seata测试流程正常下单流程扣减库存失…

学习路程四 向量数据库Milvus安装与连接

前序 在之前,已经简单完成了文档的加载,分割,向量化这些步骤,最后得到了结果。但是这些数据都是一次性的。假设一个律师所,有几千上万份卷宗,不可能每次使用都重新向量化数据吧。 所以我们需要有一个地方存…

LangChain系列:精通LangChain的合并文档链

LangChain的合并链旨在解决语言模型处理长文本时的上下文限制问题,包含Stuff、MapReduce、Refine和Rerank四种策略。Stuff链通过简单拼接文档块实现快速处理,适用于短文本但受限于模型token容量;MapReduce链采用分治思想,先独立处…

Gradio全解11——使用transformers.agents构建Gradio UI(6)

大模型WebUI:Gradio全解11——使用transformers.agents构建Gradio UI(6) 前言本篇摘要11. 使用transformers.agents构建Gradio UI11.6 通过agents构建Gradio UI11.6.1 ChatMessage数据类1. 数据结构2. 例程11.6.2 构建Gradio UI示例1. 代码及运行2. 代码解读参考文献前言 本…

【HTML— 快速入门】HTML 基础

准备工作 vscode下载 百度网盘 Subline Text 下载 Sublime Text下载 百度网盘 vscode 下载 Sublime Text 是一款轻量好用的文本编辑器,我们在写前端代码时,使用 Sublime Text 打开比使用记事本打开,得到的代码体验更好,比 vscode…

学习笔记05——HashMap实现原理及源码解析(JDK8)

HashMap实现原理及源码解析(JDK8) 一、核心设计思想 数组链表红黑树:桶数组存储Node节点,哈希冲突时形成链表,链表长度≥8且桶数量≥64时转红黑树扰动函数:(h key.hashCode()) ^ (h >>> 16) 消除…

springBoot统一响应类型3.0版本

前言&#xff1a;起于环境&#xff0c;先于实践&#xff0c;源于变化&#xff0c;升于思考&#xff0c;再于实践&#xff0c;形于总结——实践至上&#xff01; 简单回顾&#xff1a; /*** 基础统一响应类* param <T>*/Data public class apiResult<T> {private in…

九、数据治理架构流程

一、总体结构 《数据治理架构流程图》&#xff08;Data Governance Architecture Flowchart&#xff09; 水平结构&#xff1a;流程图采用水平组织&#xff0c;显示从数据源到数据应用的进程。 垂直结构&#xff1a;每个水平部分进一步划分为垂直列&#xff0c;代表数据治理的…