在windows和linux上玩转Tensorrt

为避免重复,一些安装内容我直接贴其他大佬的帖子了,我是按照他们的步骤来操作的,趟过一遍,没有问题。
本篇着重在tensort在Cmakelist中如何配置,以及如何配置编译动/静态库,比较基础,也是想做个笔记记录一下。


文章目录

  • 一、环境
  • 二、安装cuda和cudnn
  • 三、安装tensorrt以及配置
  • 四、CMakeLists如何配置tensorrt以及坑

一、环境

  • windows
    1. windows11
    2. cuda:11.8
    3. cudnn:8(注意和cuda配套)
    4. tensorrt:8.6.1.6
  • linux
    1. ubuntu18.04 x86
    2. cuda: 11.4
    3. cudnn: 8
    4. tensorrt:8.6.1.6

二、安装cuda和cudnn

linux可以参考:ubunu安装cuda

三、安装tensorrt以及配置

均可以参考:https://blog.csdn.net/djstavaV/article/details/125195569

四、CMakeLists如何配置tensorrt以及坑

这里的场景是这样的,有两个工程,A工程来调用B工程,B工程中包含tensorrt的推理操作依赖tensorrt,那么这就需要把B工程打包成库文件,关于Cmakelist详细指导可以跳转到如何在CMakelist中配置,这里编译成库文件,在Cmakelist中,需要把

add_executable(${PROJECT_NAME} ${SOURCE_FILES})

改成

add_library(${PROJECT_NAME} STATIC ${SOURCE_FILES}) 

注意: 这里一定要用静态库,不然会报这个错误:

ERROR: 1: [dispatchStubs.cpp::deserializeEngine::14] Error Code 1: Internal Error (Unexpected call to stub)

查询资料参考:https://github.com/NVIDIA/TensorRT/issues/3307

然后要注意顺序:

include_directories -> link_directories -> add_library -> target_link_libraries -> install

对了,这里最后一步最好install一下,可以加入到系统路径/usr/local/lib/中。可参考:

install(TARGETS ${PROJECT_NAME} LIBRARY DESTINATION /usr/local/lib/)

其他的,target_link_libraries把tensorrt依赖的库文件放入即可,包括cuda的,这里也举例:

target_link_libraries(${PROJECT_NAME}  cublas cudart cudadevrt nvinfer nvinfer_dispatch nvinfer_lean nvinfer_plugin nvinfer_vc_plugin nvonnxparser nvparsers)

然后include_directorieslink_directories分别放入cuda和tensorrt的include文件和lib文件即可。
注意: include、lib和链接库一定要加,不然会出现以下问题:

cmakelist  /usr/bin/ld: cannot find -lcublas
  • 小抄
    1. add_executable 用来生成可执行文件;
    2. add_library 用来生成库文件,其中的关键字SHAREDSTATIC又分别代表动态库和静态库。

以上就是全部内容,有什么问题可以评论,一起交流 ,Enjoy~

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

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

相关文章

MySQL:表所在库及注释信息查找

一、MySQL查看表所在库 ​ 使用数据库过程中,使用到的表太多后,很难记住每张表在哪个库,这时候可以通过以下方式查找表所在位置: (一)通过表名查找 SELECT * FROM information_schema.TABLES WHERE tabl…

【DIY小记】修复Win10启动出现蓝屏0xc0000185错误的一些方法

近些日子想到自己尘封已久的笔记本电脑没有开机了,很多软件驱动之类的没有更新,就打算把电脑开起来做一轮批量升级。但开电脑的时候很久没有进入Win10桌面,等了很长一段时间蓝屏提示0xc0000185错误,说系统需要恢复。经历了一番折腾…

QT-day5

1、添加注册功能到数据库 头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMessageBox> //消息对话框类头文件 #include <QDebug> #include <QPushButton> #include <QSqlDatabase> //数据库管理类 #include…

Vue路由和Node.js环境搭建

文章目录 一、vue路由1.1 简介1.2 SPA1.3 实例 二、Node.js环境搭建2.1 Node.js简介2.2 npm2.3 环境搭建2.3.1 下载解压2.3.2 配置环境变量2.3.3 配置npm全局模块路径和cache默认安装位置2.3.4 修改npm镜像提高下载速度 2.4 运行项目 一、vue路由 1.1 简介 Vue 路由是 Vue.js…

C++项目:仿mudou库实现高性能高并发服务器

文章目录 一、实现目标二、前置知识&#xff08;一&#xff09;HTTP服务器1.概念2.Reactor模型&#xff1a;3.分类 一、实现目标 仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器&#xff1a; 通过咱们实现的高并发服务器组件&#xff0c;可以简洁快速的完成⼀…

git的详细使用

文章目录 前言一、Git工作流程二、Git的安装、配置与使用1.Git安装与配置2.从本地仓库推送到远程仓库2.从远程仓库拉取文件到本地,修改、新增并提交到(更新远程仓库)前言 参考网上文章,在这里总结一篇,方便自己查询 参考1 参考2

【深度学习】卷积神经网络(LeNet)【文章重新修改中】

卷积神经网络 LeNet 前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码…

云服务器ECS_云主机_服务器托管_计算-阿里云

阿里云服务器是什么&#xff1f;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;云服务器可以降低IT成本提升运维效率&#xff0c;免去企业或个人前期采购IT硬件的成本&#xff0c;阿里云服务器让用户像使用水、电、天然气等公共资源一样便捷、高效地使用服务器…

新手怎样快速上手接口测试?掌握这几个知识点直接起飞!

接口测试是测试系统组件间接口的一种方式&#xff0c;接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的增删改查操作&#xff0c;以及系统之间的逻辑关系等 接口的几种类型 接口的类型包括&#xff1a;post &#xff0c;get&am…

沉积物微体古生物鉴定

声明 本文是学习GB-T 42629.4-2023 国际海底区域和公海环境调查规程 第4部分&#xff1a;海洋沉积物物理特性调查. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了国际海底区域和公海环境调查中的沉积物组成、物理力学性质、生物…

SQL Server对象类型(5)——4.5. 同义词(Synonym)

4.5. 同义词(Synonym) 4.5.1. 同义词概念 与Oracle中相同,SQL Server中的同义词是虚的、被定义的模式对象,其本身并不存储任何数据。其用途之一就是为其他类型基础对象提供一个别名;用途之二就是为应用提供一个抽象层,以方便后期应用相关的基础对象的更改和维护。用户可…

Linux安装Ansible管理工具

条件情况说明 准备4台机器&#xff0c;是单master集群安装 192.168.186.128 ansible 192.168.186.129 node1 192.168.186.130 node2 192.168.186.131 node3 #永久修改主机名 hostnamectl set-hostname ansible && bash #在ansible上操作 hostnamectl set-hostname n…

【C++】unordered_map与unorder_set的封装(哈希桶)

文章目录 前言一、模板参数的改造二、模板的特例化操作三、仿函数的妙用四、unordered迭代器基本操作1.const迭代器注意&#xff1a;2.HashTable与HTIterator的冲突 五、迭代器的构造问题六、完整代码1.hash_bucket.h2.unordered_set.h3.unordered_map.h 前言 我们开辟一个指针…

电子元器件采购合同起草内容包括哪些?

电子元器件采购合同是一份重要的法律文件&#xff0c;用于规定买方和卖方之间的交易条款和条件。以下是电子元器件采购合同的一般内容&#xff0c;但请注意&#xff0c;具体的合同内容可能会根据双方的具体需求和协商而有所不同&#xff1a; 合同标题和日期&#xff1a;在合同的…

使用LDA(线性判别公式)进行iris鸢尾花的分类

线性判别分析((Linear Discriminant Analysis &#xff0c;简称 LDA)是一种经典的线性学习方法&#xff0c;在二分类问题上因为最早由 [Fisher,1936] 提出&#xff0c;亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术&#xff0c;也就是说它的数据集的每个样本都…

驱动开发--汇总

一&#xff0c;【驱动相关概念】 1&#xff0c;什么是驱动 能够驱使硬件实现特定功能的软件代码 根据驱动程序是否依赖于系统内核将驱动分为裸机驱动和系统驱动 2&#xff0c;逻辑驱动和系统驱动的区别 裸机驱动&#xff1a;编写的驱动代码中没有进行任何内核相关API的调用…

Flutter插件的制作和发布

Flutter制作插件有两种方式&#xff08;以下以android和ios为例&#xff09;&#xff1a; 目录 1.直接在主工程下的android和ios项目内写插件代码&#xff1a;2.创建独立Flutter Plugin项目&#xff0c;制作各端插件后&#xff0c;再引入项目&#xff1a;1. 创建Flutter Plugin…

Webpack打包CSS文件,解决You may need an appropriate loader to handle this file type报错

在项目文件夹下创建webpack.config.js文件&#xff0c;该文件就是Webpack的配置文件 注意&#xff1a;该文件中遵循Node.js的代码格式规范 &#xff0c;需要对导出配置文件中的内容 Webpack在默认情况下只能打包js文件&#xff0c;如果我们希望他能够打包其他类型的文件&#…

TCP并发服务器的多进程实现与多线程实现

TCP并发服务器的多进程实现与多线程实现 一、 TCP并发服务器的多进程实现 代码 #include <my_head.h>#define SERVER_IP "192.168.125.11" // 服务器IP #define SERVER_PORT 6666 // 服务器端口// 子进程处理客户端信息函数 int deal_client_me…

物联网安全优秀实践:2023年设备保护指南

物联网的发展可谓是革命性的&#xff0c;数十亿台设备实时互连、通信和共享数据。因此&#xff0c;考虑物联网安全的最佳实践至关重要。 物联网的重要性日益上升 在数字时代&#xff0c;物联网(IoT)已成为一股革命力量&#xff0c;重塑了企业运营和个人生活方式。从调节家庭温…