TensorRt安装和命令行测试

news2024/11/27 7:48:01

1、选择TensorRt版本

安装tensorrt前,需要先了解自己的显卡算力、架构等,点击 算力列表链接 对号入座。
在这里插入图片描述
这里仅展示RTX和Titan系列,其他系列可在当前网页选择。

1.1、cuda版本

首先需要安装cuda,其版本并不是最新就好,需要选择合适的架构的版本。建议选择合适的版本,基本上可以按照显卡发售的最近的时间选择。

cuda下载需要注册账号,地址链接为 https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述

例如,最新的RTX 40系列,2022年10月发售,使用ada架构,就必须使用cuda11.8版本。RTX20系列,采用Turing架构,最早于2018年12月发售2060,虽然cuda 11.8也是兼容可以使用,但是建议使用合适的10.x版本。在各个版本对应的version online documentation中可以看到算力的兼容性,
在这里插入图片描述
本机显卡为RTX 2060,方便起见,直接最新版本的cuda 11.8版本。

1.2、TensorRt版本

nvidia TensorRt 官网地址为 https://github.com/NVIDIA/TensorRT,提供编译好的包下载两个地址选择:

  • nvida下载地址: https://developer.nvidia.com/nvidia-tensorrt-8x-download
  • github下载地址:https://github.com/NVIDIA/TensorRT/releases

在这里插入图片描述
在这里插入图片描述注意,选择了cuda11.8,就应该下载TensorRt 8.5版本的

1.3、cudnn版本

TensorRt 8.5 cuda11.8对应的cudnn版本为8.6。由于学习原因,TensorRt 8.4版本中的中的sample较多,就直接选择了TensorRt 8.4版本,也是可以运行的。

下载后可以得到 TensorRT-8.4.3.1.Windows10.x86_64.cuda-11.6.cudnn8.4.zip ,可以看到使用cudnn8.4。 继续安装cudnn,选择cudnn 8.4.x最新就可。

下载链接为 https://developer.nvidia.com/rdp/cudnn-download,历史版本下载地址为
https://developer.nvidia.com/rdp/cudnn-archive
在这里插入图片描述
下载后解压cudnn的文件到cuda目录即可。

1.4、环境配置和基本测试

解压后,需要将安装目录添加到PATH环境变量中,
TensorRt/li
windows下后续某些程序运行可能提示缺少 zlibwapi.dll 库,官方也给出了下载地址,https://docs.nvidia.com/deeplearning/cudnn/install-guide/index.html#install-zlib-windows
在这里插入图片描述
例如,选择x64的版本,将解压对应的lib和dll到环境变量的目录下,如直接放在D:\Librarys\TensorRT-8.4.3.1\lib下即可。

2、测试

在bin目录下有一个可执行程序 trtexec.exe,能够在不进行编程的情况快捷的利用TensorRt,主要表现在

  • 在网络模型上测试输入为随机或用户指定的数据
  • 将输入模型转换为可序列化的engine模型(优化后的trt模型文件)
  • 生成序列化的时序缓存(主要用于降低build的时间)

具体命令行可以使用 trtexec.exe --help 查看,或者参看 trtexec 文档 。这里直接进行测试data目录下mnist的onnx模型,在bin目录下执行trtexec.exe --onnx=../data/mnist/mnist.onnx,结果为

D:\Librarys\TensorRT-8.4.3.1\bin>trtexec.exe --onnx=../data/mnist/mnist.onnx
&&&& RUNNING TensorRT.trtexec [TensorRT v8403] # trtexec.exe --onnx=../data/mnist/mnist.onnx
[11/06/2022-13:54:02] [I] === Model Options ===
[11/06/2022-13:54:02] [I] Format: ONNX
[11/06/2022-13:54:02] [I] Model: ../data/mnist/mnist.onnx
[11/06/2022-13:54:02] [I] Output:
[11/06/2022-13:54:02] [I] === Build Options ===
[11/06/2022-13:54:02] [I] Max batch: explicit batch
[11/06/2022-13:54:02] [I] Memory Pools: workspace: default, dlaSRAM: default, dlaLocalDRAM: default, dlaGlobalDRAM: default
[11/06/2022-13:54:02] [I] minTiming: 1
[11/06/2022-13:54:02] [I] avgTiming: 8
[11/06/2022-13:54:02] [I] Precision: FP32
[11/06/2022-13:54:02] [I] LayerPrecisions:
[11/06/2022-13:54:02] [I] Calibration:
[11/06/2022-13:54:02] [I] Refit: Disabled
[11/06/2022-13:54:02] [I] Sparsity: Disabled
[11/06/2022-13:54:02] [I] Safe mode: Disabled
[11/06/2022-13:54:02] [I] DirectIO mode: Disabled
[11/06/2022-13:54:02] [I] Restricted mode: Disabled
[11/06/2022-13:54:02] [I] Build only: Disabled
[11/06/2022-13:54:02] [I] Save engine:
[11/06/2022-13:54:02] [I] Load engine:
[11/06/2022-13:54:02] [I] Profiling verbosity: 0
[11/06/2022-13:54:02] [I] Tactic sources: Using default tactic sources
[11/06/2022-13:54:02] [I] timingCacheMode: local
[11/06/2022-13:54:02] [I] timingCacheFile:
[11/06/2022-13:54:02] [I] Input(s)s format: fp32:CHW
[11/06/2022-13:54:02] [I] Output(s)s format: fp32:CHW
[11/06/2022-13:54:02] [I] Input build shapes: model
[11/06/2022-13:54:02] [I] Input calibration shapes: model
[11/06/2022-13:54:02] [I] === System Options ===
[11/06/2022-13:54:02] [I] Device: 0
[11/06/2022-13:54:02] [I] DLACore:
[11/06/2022-13:54:02] [I] Plugins:
[11/06/2022-13:54:02] [I] === Inference Options ===
[11/06/2022-13:54:02] [I] Batch: Explicit
[11/06/2022-13:54:02] [I] Input inference shapes: model
[11/06/2022-13:54:02] [I] Iterations: 10
[11/06/2022-13:54:02] [I] Duration: 3s (+ 200ms warm up)
[11/06/2022-13:54:02] [I] Sleep time: 0ms
[11/06/2022-13:54:02] [I] Idle time: 0ms
[11/06/2022-13:54:02] [I] Streams: 1
[11/06/2022-13:54:02] [I] ExposeDMA: Disabled
[11/06/2022-13:54:02] [I] Data transfers: Enabled
[11/06/2022-13:54:02] [I] Spin-wait: Disabled
[11/06/2022-13:54:02] [I] Multithreading: Disabled
[11/06/2022-13:54:02] [I] CUDA Graph: Disabled
[11/06/2022-13:54:02] [I] Separate profiling: Disabled
[11/06/2022-13:54:02] [I] Time Deserialize: Disabled
[11/06/2022-13:54:02] [I] Time Refit: Disabled
[11/06/2022-13:54:02] [I] Inputs:
[11/06/2022-13:54:02] [I] === Reporting Options ===
[11/06/2022-13:54:02] [I] Verbose: Disabled
[11/06/2022-13:54:02] [I] Averages: 10 inferences
[11/06/2022-13:54:02] [I] Percentile: 99
[11/06/2022-13:54:02] [I] Dump refittable layers:Disabled
[11/06/2022-13:54:02] [I] Dump output: Disabled
[11/06/2022-13:54:02] [I] Profile: Disabled
[11/06/2022-13:54:02] [I] Export timing to JSON file:
[11/06/2022-13:54:02] [I] Export output to JSON file:
[11/06/2022-13:54:02] [I] Export profile to JSON file:
[11/06/2022-13:54:02] [I]
[11/06/2022-13:54:03] [I] === Device Information ===
[11/06/2022-13:54:03] [I] Selected Device: NVIDIA GeForce RTX 2060
[11/06/2022-13:54:03] [I] Compute Capability: 7.5
[11/06/2022-13:54:03] [I] SMs: 30
[11/06/2022-13:54:03] [I] Compute Clock Rate: 1.2 GHz
[11/06/2022-13:54:03] [I] Device Global Memory: 6143 MiB
[11/06/2022-13:54:03] [I] Shared Memory per SM: 64 KiB
[11/06/2022-13:54:03] [I] Memory Bus Width: 192 bits (ECC disabled)
[11/06/2022-13:54:03] [I] Memory Clock Rate: 5.501 GHz
[11/06/2022-13:54:03] [I]
[11/06/2022-13:54:03] [I] TensorRT version: 8.4.3
[11/06/2022-13:54:03] [I] [TRT] [MemUsageChange] Init CUDA: CPU +428, GPU +0, now: CPU 7897, GPU 1147 (MiB)
[11/06/2022-13:54:04] [I] [TRT] [MemUsageChange] Init builder kernel library: CPU +257, GPU +68, now: CPU 8347, GPU 1215 (MiB)
[11/06/2022-13:54:04] [I] Start parsing network model
[11/06/2022-13:54:04] [I] [TRT] ----------------------------------------------------------------
[11/06/2022-13:54:04] [I] [TRT] Input filename:   ../data/mnist/mnist.onnx
[11/06/2022-13:54:04] [I] [TRT] ONNX IR version:  0.0.3
[11/06/2022-13:54:04] [I] [TRT] Opset version:    8
[11/06/2022-13:54:04] [I] [TRT] Producer name:    CNTK
[11/06/2022-13:54:04] [I] [TRT] Producer version: 2.5.1
[11/06/2022-13:54:04] [I] [TRT] Domain:           ai.cntk
[11/06/2022-13:54:04] [I] [TRT] Model version:    1
[11/06/2022-13:54:04] [I] [TRT] Doc string:
[11/06/2022-13:54:04] [I] [TRT] ----------------------------------------------------------------
[11/06/2022-13:54:04] [W] [TRT] onnx2trt_utils.cpp:369: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
[11/06/2022-13:54:04] [I] Finish parsing network model
[11/06/2022-13:54:05] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +514, GPU +192, now: CPU 8667, GPU 1407 (MiB)
[11/06/2022-13:54:05] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +132, GPU +52, now: CPU 8799, GPU 1459 (MiB)
[11/06/2022-13:54:05] [I] [TRT] Local timing cache in use. Profiling results in this builder pass will not be stored.
[11/06/2022-13:54:06] [I] [TRT] Detected 1 inputs and 1 output network tensors.
[11/06/2022-13:54:06] [I] [TRT] Total Host Persistent Memory: 7552
[11/06/2022-13:54:06] [I] [TRT] Total Device Persistent Memory: 0
[11/06/2022-13:54:06] [I] [TRT] Total Scratch Memory: 0
[11/06/2022-13:54:06] [I] [TRT] [MemUsageStats] Peak memory usage of TRT CPU/GPU memory allocators: CPU 0 MiB, GPU 0 MiB
[11/06/2022-13:54:06] [I] [TRT] [BlockAssignment] Algorithm ShiftNTopDown took 0.0236ms to assign 3 blocks to 6 nodes requiring 31748 bytes.
[11/06/2022-13:54:06] [I] [TRT] Total Activation Memory: 31748
[11/06/2022-13:54:06] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in building engine: CPU +0, GPU +0, now: CPU 0, GPU 0 (MiB)
[11/06/2022-13:54:06] [W] [TRT] The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
[11/06/2022-13:54:06] [W] [TRT] The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
[11/06/2022-13:54:06] [I] Engine built in 3.05504 sec.
[11/06/2022-13:54:06] [I] [TRT] [MemUsageChange] Init CUDA: CPU +0, GPU +0, now: CPU 9095, GPU 1543 (MiB)
[11/06/2022-13:54:06] [I] [TRT] Loaded engine size: 0 MiB
[11/06/2022-13:54:06] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in engine deserialization: CPU +0, GPU +0, now: CPU 0, GPU 0 (MiB)
[11/06/2022-13:54:06] [I] Engine deserialized in 0.0020684 sec.
[11/06/2022-13:54:06] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in IExecutionContext creation: CPU +0, GPU +0, now: CPU 0, GPU 0 (MiB)
[11/06/2022-13:54:06] [I] Using random values for input Input3
[11/06/2022-13:54:06] [I] Created input binding for Input3 with dimensions 1x1x28x28
[11/06/2022-13:54:06] [I] Using random values for output Plus214_Output_0
[11/06/2022-13:54:06] [I] Created output binding for Plus214_Output_0 with dimensions 1x10
[11/06/2022-13:54:06] [I] Starting inference
[11/06/2022-13:54:09] [I] Warmup completed 2019 queries over 200 ms
[11/06/2022-13:54:09] [I] Timing trace has 32116 queries over 3.00011 s
[11/06/2022-13:54:09] [I]
[11/06/2022-13:54:09] [I] === Trace details ===
[11/06/2022-13:54:09] [I] Trace averages of 10 runs:
[11/06/2022-13:54:09] [I] Average on 10 runs - GPU latency: 0.0410919 ms - Host latency: 0.055571 ms (enqueue 0.054744 ms)
[11/06/2022-13:54:09] [I] Average on 10 runs - GPU latency: 0.0387924 ms - Host latency: 0.0540939 ms (enqueue 0.0451706 ms)
。。。。。
- 中间省略
。。。。。
[11/06/2022-13:54:10] [I] Average on 10 runs - GPU latency: 0.0338623 ms - Host latency: 0.0516113 ms (enqueue 0.0414185 ms)
[11/06/2022-13:54:11] [I] Average on 10 runs - GPU latency: 0.0352783 ms - Host latency: 0.0510498 ms (enqueue 0.0429199 ms)
[11/06/2022-13:54:11] [I]
[11/06/2022-13:54:11] [I] === Performance summary ===
[11/06/2022-13:54:11] [I] Throughput: 10704.9 qps
[11/06/2022-13:54:11] [I] Latency: min = 0.0288086 ms, max = 0.373047 ms, mean = 0.0534397 ms, median = 0.0523682 ms, percentile(99%) = 0.100342 ms
[11/06/2022-13:54:11] [I] Enqueue Time: min = 0.0231323 ms, max = 0.29541 ms, mean = 0.0426776 ms, median = 0.0424805 ms, percentile(99%) = 0.0822754 ms
[11/06/2022-13:54:11] [I] H2D Latency: min = 0.00415039 ms, max = 0.122131 ms, mean = 0.0132315 ms, median = 0.0090332 ms, percentile(99%) = 0.0356445 ms
[11/06/2022-13:54:11] [I] GPU Compute Time: min = 0.017334 ms, max = 0.302734 ms, mean = 0.0350428 ms, median = 0.0380859 ms, percentile(99%) = 0.0758057 ms
[11/06/2022-13:54:11] [I] D2H Latency: min = 0.00195313 ms, max = 0.0830078 ms, mean = 0.00516533 ms, median = 0.00463867 ms, percentile(99%) = 0.0202637 ms
[11/06/2022-13:54:11] [I] Total Host Walltime: 3.00011 s
[11/06/2022-13:54:11] [I] Total GPU Compute Time: 1.12544 s
[11/06/2022-13:54:11] [W] * Throughput may be bound by Enqueue Time rather than GPU Compute and the GPU may be under-utilized.
[11/06/2022-13:54:11] [W]   If not already in use, --useCudaGraph (utilize CUDA graphs where possible) may increase the throughput.
[11/06/2022-13:54:11] [W] * GPU compute time is unstable, with coefficient of variance = 33.1687%.
[11/06/2022-13:54:11] [W]   If not already in use, locking GPU clock frequency or adding --useSpinWait may improve the stability.
[11/06/2022-13:54:11] [I] Explanations of the performance metrics are printed in the verbose logs.
[11/06/2022-13:54:11] [I]
&&&& PASSED TensorRT.trtexec [TensorRT v8403] # trtexec.exe --onnx=../data/mnist/mnist.onnx

最后测试成功PASS,打印了模型信息、构建信息、设备信息、infer测试信息等。后续就可以使用sample中的示例进行学习。

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

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

相关文章

基于SSM跨境电商网站的设计与实现/海外购物平台的设计

通过对跨境电商网站的编写,使得自己对于javaweb技术和数据库理论有了更深的认识。课题设计javaweb,能够学习网页编程知识。此课题设计的知识有HTML,CSS和MVC模式等。还跟javaScript的知识有关。在不断的学习过程中提高自己的编程能力。本跨境…

TCP/IP网络参考模型

目录 TCP/IP四/五层模型 应用层常见协议——传输数据PDU 传输层协议——传输数据段 端口号 TCP面向连接服务 UDP无面向连接服务 网络层协议——传输数据包 IP协议 数据链路层——传输数据帧 Ethernet帧格式 IEEE802.3帧格式 TCP/IP四/五层模型 标准定义的TCP/IP模型…

使用idea自动开发springMVC程序及表单标签

1.新建项目 选择Spring—>SpringMVC——>Download 点击next,起好项目名称project name,我这里项目名是MVCTag,选择好项目的路径project location,然后点击确定就会自动加载SpringMVC所需要的全部jar包 项目新建完成&…

【Spring5】基于注解的Bean管理简直是Spring中的Spring

文章目录1 什么是注解2 基于注解方式实现对象的创建3 组件扫描配置的细节4 基于注解实现属性的注入4.1 几种注解概述4.2 Autowire注解演示4.3 Qualifier注解演示4.4 Value注解演示5 纯注解的开发模式写在最后1 什么是注解 注解是代码中特殊的标记,格式如下&#xf…

Latex论文排版

O、部分参考: https://blog.csdn.net/qq_41982200/article/details/123051883?spm1001.2014.3001.5506 https://blog.csdn.net/qq_27353621/article/details/127170340 一、基础知识 1、空一行 → 分一段 空很多行也只是分一段 2、加粗、斜体 3、新章节 4…

JAVA学习笔记(二)

JAVA学习笔记 包1.1基本使用 2.2包的命名 2.3常用的包 2.4使用细节 访问修饰符面向对象 3.1面向对象三大特征 封装、继承、多态 3.2封装介绍 3.3封装的理解和好处 3.4封装的实现步骤 3.5构造器和setXXX结合 3.6继承(细节) 3.7super基本用法 3.8super给…

Kotlin基础学习笔记之第六章——kotlin的类型系统

一、本章简介 与java相比,kotlin中引入了一些新特性,他们是提升代码可读性的基本要素,比如:对可空的类型和只读集合的支持。与此同时,kotlin去掉了一些java类型系统中不必要的或者有问题的特性,比如把数组作…

docker安装mysql同步数据到linux与docker容器卷

可以去dockerhub搜索mysql寻找命令 docker run -p 3310:3306 --name mysql57 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD123456 -d mysql:5.7 -e配置启动容器mysql 需要配置密码 -v 是绑定容器卷到linux 上 …

阿里二面,前端开发在web3.0中该如何应用,答完面试官对我笑了笑

近期听说周星驰也开始招募web3.0的人才了,可见其火爆程度真是不一般啊,不得不说的是,这又是一场新的革命,必将带来腥风血雨。 对于前端开发来说,很多人可能刚刚准备学习,刚刚入门,刚刚在企业中找…

目标检测(4)—— 经典算法和常用指标

一、深度学习的经典算法 two-stage(两阶段):RCNNone-stage(一阶段):YOLO,SSD(这个好像很牛) one-stage: 将图片输入到CNN里,经过特征提取&#…

rabbitMQ:绑定Exchange发送和接收消息(topic)

topic交换机和fanout交换机类似,也是广播机制,但是topic需要绑定RoutingKey,绑定RoutingKey时可以使用通配符(*,#)代替。 *:只能一个单词 #:0个或多个单词 编写topic消息发送类 1.编写Recei…

区块链的认识

目录 频繁的交易如何记录这些交易信息呢? 那我们的链又是如何连接起来的? 谁做记账先生呢? 共识机制 如何处理有些人距离账目的公共太远的问题? 安全性: 去中心化: 总结: 频繁的交易如何记录…

云原生k8s的盘古开天辟地

背景 容器(docker)流行开来,容器调度机制风起云涌,各路神仙用systemctl调度, 也有号称容器宗师的出品docker swarm, 各大门派也有各自的旗帜主张。天下混沌,血雨腥风,龙藏深泉,而谷歌的k8s就是这个主角。 …

较低成本的ISO7637-2 5A 5B抛负载保护方案

科普下什么是抛负载,抛负载测试方案以及后端电路参数的选择。 在众多汽车电子电磁兼容测试中,最具破坏性的就是ISO7637-2的5A 5B测试了,当然也有的测试项目放在ISO16750标准中,但测试波形大体相同。上海雷卯有专门的文章描述这2个…

基于JavaWeb的手机商城系统设计与实现

目录 摘要 I Abstract II 第1章 绪论 1 1.1 课题背景 1 1.2 目的和意义 1 1.3 系统设计思想 3 1.4 本文的结构 3 第2章 可行性分析 4 2.1 业务流程图 4 2.2 经济可行性 6 2.3 技术可行性 6 2.4 运行可行性 6 2.5 本章小结 7 第3章 需求分析 8 3.1 关于电商的前世今生和目前发展…

C++基础知识梳理<2>(引用、内联函数、auto关键字) [入门级】

目录 一、引用 1. 引用概念 2. 引用特性 2.1 引用在定义时必须初始化 2.2 一个变量可以有多个引用 2.3 引用一旦引用一个实体,再不能引用其他实体 3. 常引用 3.1 取别名的规则 3.2 权限放大error 3.3 权限不变 3.4 权限缩小 4. 引用原理与拓展 4.1…

RestTemplate.exchange各种用法(包括泛型等 --全)

文章目录前言1. Get请求1.1 返回基本类型1.2 返回自定义对象类型1.3 返回List\<T> 类型1.4 返回Map\<K,V> 类型1.5 返回自定义泛型类型2.Post请求2.1 传headerbody返回对象类型2.2 传headerbody返回自定义泛型类型3. 异常情况处理4. RestTemplate配置Bean最后前言 …

学习笔记之Vue基础学习——持更

Vue学习一、Vue简介1.1 什么是Vue&#xff1f;1.2 Vue的特点1.3 Vue官网使用1.4 搭建Vue开发环境1.5 Hello小案例总结案例&#xff1a;二、模板语法2.1 两大类型三、数据绑定3.1 两种方式四、el和data的两种写法4.1 el的两种写法4.2 data的两种写法五、MVVM模型5.1 什么是MVVM模…

目标检测(5)—— YOLO系列V1

一、YOLO系列V1 经典的one-stage方法&#xff0c;You Only Look Once将检测问题转化成回归问题&#xff0c;一个CNN搞定可以对视频进行实时监测 YOLO系列的速度更快&#xff0c;我们检测的物体很简单&#xff0c;进行取舍&#xff0c;舍弃了一些精度。 V1核心思想 现在要预测…

Windows与Linux行尾换行符引发Git的一系列惨案

1 前言 最近在使用 Git 提交代码的时候&#xff0c;老是碰到一段看起来 “没有任何改动” 的代码&#xff0c;被 diff 检测出异常&#xff0c;很是苦恼&#xff0c;特别是项目紧急的时候&#xff0c;不敢用 VSCode 编辑了&#xff0c;只能用 vim 进行少量代码的修改、上库。 …