CUDA+cuDNN+TensorRT 配置避坑指南

深度学习模型加速部署的环境配置,需要在本地安装NVIDIA的一些工具链和软件包,这是一个些许繁琐的过程,而且一步错,步步错。笔者将会根据自己的经验来提供建议,减少踩坑几率。当然可以完全按照官方教程操作,但是本人也发现一些问题,下面会说到。官方教程:Installation Guide :: NVIDIA Deep Learning TensorRT Documentation

笔者的PC配置信息为:ubuntu22.04 + 1650

下面将会从cuda driver驱动安装说起,各个步骤的注意事项和技巧。

1.驱动安装

        对于显卡驱动安装,网上的教程五花八门,大部分教程都是手动安装,原因是比较稳定。但并不总是如此。nvidia官方推荐的是通过系统自带的软件更新器安装,因此推荐使用这种简单的方法,效果一样。

        当然通过自带的软件更新器安装也可以通过命令行进行。

        首先检查驱动:ubuntu-drivers devices 

        效果和上图一样

        然后安装驱动 (建议安装带recommanded) :sudo apt-get install nvidia-driver-xxx(替换成自己的)

        然后重启 reboot

        查看显卡驱动安装情况:nvidia-smi

        可以看见驱动版本号525.125,CUDA版本号12.0。第一个坑

        此处需要注意,此处的CUDA Version意思是最大支持的cuda版本,等会实际安装的cuda toolkit可能会小于这个版本,但下载的时候仍然需要按照此处的版本为标准,而不是toolkit的版本。对于笔者,后续也就是12.0,切记。

        至此,驱动安装结束。

2.cuda toolkit安装

        cuda toolkit安装需要按照官方指定的对应驱动版本下载。CUDA 12.2 Release Notes — cuda-toolkit-release-notes 12.2 documentation

        笔者驱动为525.125,因此选择第一个进行下载(从我的驱动信息同样说明,笔者的cuda最高支持版本为12.0,刚好与其对应)。各位根据自己的版本下载,官方链接:                           CUDA Toolkit Archive | NVIDIA Developer

        进行完上面的操作之后,还需要手动安装nvcc        

        sudo apt install nvidia-cuda-toolkit

        安装可能失败,提示需要安装其他的XXX依赖包,

        只需要根据提示操作:sudo apt-get install XXX   

        安装结束,验证:nvcc -V

        查看cuda toolkit版本  

        此处,第二个坑,本站有帖子说此处显示的为cuda版本,也就是11.5。但通过笔者的实践操作,这是不对的,接下来如果按照这个版本去安装cudNN和tensorRT会导致失败,笔者已经通过不同的方式验证了其失败的情况。我已经删除一些我下过的deb包了,因为太占空间,下面是我还没来得及删除的。因此cuda版本请参考第一条,驱动安装,以那里为准。NVIDIA官方在教程里并为明确说明,因此这是一个坑。

3.cuDNN安装

        nvcc安装结束,开始安装cuDNN。首先从中文官网下载匹配的deb包,选择对应版本。CUDA 深度神经网络库 (cuDNN) | NVIDIA 开发者

        此时会发现cn网站不提供下载,也是醉了。

        被迫转到CUDA Deep Neural Network (cuDNN) | NVIDIA Developer英文官网下载,而且需要注册账号,没办法。登陆之后,你有两个下载选择。

        上文已经讲到,一切以第一小节里的cuda version信息为准。笔者为cuda为12.0因此选择第一个。同样选择对应平台版本下载即可。

        下载完成之后进行安装:sudo dpkg -i xxx.deb

        安装完成之后继续执行:

sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/

sudo apt-get update

        接下来是第三个坑,官方文档里需要继续安装三个软件包,但是按照官方的提示是无法安装的,如下图,红色的是上面两个已经执行的命令,绿色的是接下来要执行的命令。分别是安装三个软件包。

        然而,这三个软件包是放在系统的:/var/cudnn-local-repo-ubuntu目录下

        进入该目录直接sudo dpkg -i xxx.deb安装即可。

        安装完成之后,进行验证,直接按照官方的verify方法即可:Installation Guide - NVIDIA Docs

最后输出test passed即可。

4.tensorRT安装

        官网下载Log in | NVIDIA Developer,找到自己的cuda版本和平台。官方安装步骤Installation Guide :: NVIDIA Deep Learning TensorRT Documentation

        安装下载的deb包,根据提示操作。

        最后测试是否成功:dpkg -l | grep TensorRT

        输出如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/98969.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Sentinel】Sentinel原码分析

本文内容来自【黑马】Sentinel从使用到源码解读笔记,做了部分修改和补充 目录 Sentinel 基本概念 基本流程 Node Entry 定义资源的两种方式 使用try-catch定义资源 使用注解标记资源 基于注解标记资源的实现原理 Context 什么是Context Context的初始化 …

SpringBoot青海省旅游系统

本系统采用基于JAVA语言实现、架构模式选择B/S架构,Tomcat7.0及以上作为运行服务器支持,基于JAVA、JSP等主要技术和框架设计,idea作为开发环境,数据库采用MYSQL5.7以上。 开发环境: JDK版本:JDK1.8 服务器…

查看本机Arp缓存,以及清除arp缓存

查看Arp缓存目录 Windows 系统使用 winR,输入cmd 在命令窗口输入 arp -a 删除Arp缓存目录 在命令窗口输入 arp -d * 查看主机路由表

深度学习纯小白如何从零开始写第一篇论文?看完这篇豁然开朗!

📢前言 上个月小贾消失了一段时间,原因就是。。。 写论文去啦!!! 先拿我导的认可镇个楼: 本篇文章将分享我个人从迷茫地找方向→苦苦做了48次实验才高效涨点→写论文到头秃等等一系列真实经历&#xff0c…

R语言通过接口获取网上数据平台的免费数据

大家好,我是带我去滑雪! 作为一名统计学专业的学生,时常和数据打交道,我深知数据的重要性。数据是实证研究的重要基础,每当在完成一篇科研论文中的实证研究部分时,我都能深刻体会实证研究最复杂、最耗时的工…

【广州华锐互动】VR线上播控管理系统让虚拟现实教学效果更加显著

随着科技的不断发展,虚拟现实(VR)技术已经逐渐走进我们的生活,尤其在教育领域,VR技术的应用为学生提供了全新的学习体验。 广州华锐互动作为一家成立16年的老牌VR公司,开发了不少VR教学课件,包括物理、化学、农林、土木…

【Linux】 grep命令使用

grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。 grep命令 -Linux手册页 语法 grep [选项] pattern [files] ls命令常用选项及作用 执行令 grep --help 执行命令结果 参数 -i:忽略大小写进行匹配。-v:反…

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测

分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-BiLSTM开普勒算法优化卷积双向长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-BiLST…

剑指offer——JZ68 二叉搜索树的最近公共祖先 解题思路与具体代码【C++】

一、题目描述与要求 二叉搜索树的最近公共祖先_牛客题霸_牛客网 (nowcoder.com) 题目描述 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 1.对于该题的最近的公共祖先定义:对于有根树T的两个节点p、q,最近公共祖先LCA(T,p,q)表示一个节点x&#…

你知道AI智能知识库最大的用处在哪里吗?

在当今信息爆炸的时代,获取准确、及时的知识变得至关重要,而AI智能知识库的出现正好可以很好地解决这些问题。AI智能知识库的最大用处是在于帮助人们快速、高效地获取所需的知识和信息。它不仅可以减少人们在查找和筛选信息上的时间和精力投入&#xff0…

Arm64体系架构-MPIDR_EL1寄存器

背景 在Arm64多核处理器中, 各核间的关系可能不同. 比如1个16 core的cpu, 每4个core划分为1个cluster,共享L2 cache. 当我们需要从core 0将任务调度出来时,如果优先选择core 1~3, 那么性能明显时优于其他core的. 那么操作系统怎么知道core之间这样的拓扑信息呢? Arm提供了MPID…

Selenium+Phantomjs动态获取CSDN下载资源信息和评论

源代码 # codingutf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys import selenium.webdriver.support.ui as ui from selenium.webdriver.common.action_chains import ActionChains import time import re…

FPGA设计时序约束三、设置时钟组set_clock_groups

目录 一、背景 二、时钟间关系 2.1 时钟关系分类 2.2 时钟关系查看 三、异步时钟组 3.1 优先级 3.2 使用格式 3.3 asynchronous和exclusive 3.4 结果示例 四、参考资料 一、背景 Vivado中时序分析工具默认会分析设计中所有时钟相关的时序路径,除非时序约束…

Games104现代游戏引擎笔记 基础ai

游戏AI navigation(导航系统) 地图的表达形式, 寻路,路径优化 Map representation: 1.可行走区域(物理碰撞,跳跃距离,攀爬高度) 2.表达形式:waypoint networks(路点网络图)&#…

交互式ICP

以下程序演示如何编写交互式ICP查看器。该程序将加载点云并对其进行刚性变换。之后&#xff0c;使用ICP算法将变换后的点云与原来的点云对齐。每次用户按下“空格”&#xff0c;进行ICP迭代&#xff0c;刷新可视化界面。 代码实现 资源准备 monkey.ply #include <string&…

I/O多路复用【Linux/网络】(C++实现select、poll和epoll服务器)

阅读前导&#xff1a; “I/O 多路复用”处于知识树中网络和操作系统的最后&#xff0c;因此本文默认读者有计算机网络和操作系统的基础。 1. 引入&#xff1a;C10K 问题 c10k 问题是指如何让一个服务器同时处理超过 10000 个客户端的连接&#xff0c;这是一个网络编程中的经…

STM32+USB3300复位枚举异常的问题

关键字&#xff1a;STM32F4&#xff0c;STM32H7&#xff0c;USB3300&#xff0c;USBHS&#xff0c;Reset复位 F4和H7用的都是DWC2的USBIP&#xff0c;我的板子上3300单片机工作的很好&#xff0c;插入枚举一切正常&#xff0c;但是设备收到上位机的复位命令后&#xff0c;单片…

Redis之主从复制,哨兵模式,集群

Redis之主从复制&#xff0c;哨兵模式&#xff0c;集群 1、主从复制1.1主从复制概述1.2Redis主从复制作用1.3Redis主从复制流程1.4部署Redis 主从复制 2、哨兵模式2.1哨兵模式原理2.2哨兵模式的作用2.3哨兵模式的结构2.4故障转移机制2.5搭建Redis 哨兵模式 3、Redis集群模式3.1…

Deep learning of free boundary and Stefan problems论文阅读复现

Deep learning of free boundary and Stefan problems论文阅读复现 摘要1. 一维一相Stefan问题1.1 Direct Stefan problem1.2 Inverse Type I1.3 Inverse Type II 2. 一维二相Stefan问题2.1 Direct Stefan problem2.2 Inverse Type I2.3 Inverse Type II 3. 二维一相Stefan问题…

数据结构 | (四) Queue

队列 &#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(First In First Out) 入队列&#xff1a;进行插入操作的一端称为 队尾&#xff08; Tail/Rear &#xff09; 出队列&#xff1a;进行删除操…