IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> TensorRT入门(Windows上安装与VisualStudio项目配置) -> 正文阅读

[开发工具]TensorRT入门(Windows上安装与VisualStudio项目配置)

安装

TensorRT的Document这里有,可以按照这个实现Getting Start。这里将在Windows上安装的主要步骤记录下来。

  • 下载地址:NVIDIA TensorRT 8.x Download,选择对应的版本下载下来

  • 解压出来得到TensorRT-8.x.x.x,并放置到一个目录下作为安装目录<install_path>

  • <install_path>/lib写入PATH变量,如D:\deploy_tools\TensorRT-8.4.0.6\lib

  • 打开<install_path>/python目录,里面有很多whl文件,选择python对应版本的whl使用pip进行安装

    cd /d D:\deploy_tools\TensorRT-8.4.0.6\python
    pip install tensorrt-8.4.0.6-cp37-none-win_amd64.whl
    

    这里安装了python3.7版本的,如果是使用其他的python版本应当替换文件名。

完成以上步骤安装就可以了。这个时候可以使用<install_path>/sample/sampleMNIST这个项目试验一下,打开文件夹下面的.sln文件,使用Visual Studio生成一下文件即可。生成得到的可执行文件放在了<install_path>/bin文件夹下。可以尝试执行一下,得到类似如下的信息就表示安装成功了。

&&&& RUNNING TensorRT.sample_mnist [TensorRT v8400] # sample_mnist.exe
[03/02/2022-16:35:11] [I] Building and running a GPU inference engine for MNIST
[03/02/2022-16:35:11] [I] [TRT] [MemUsageChange] Init CUDA: CPU +246, GPU +0, now: CPU 3815, GPU 2013 (MiB)
[03/02/2022-16:35:12] [I] [TRT] [MemUsageSnapshot] Begin constructing builder kernel library: CPU 3877 MiB, GPU 2013 MiB
[03/02/2022-16:35:12] [I] [TRT] [MemUsageSnapshot] End constructing builder kernel library: CPU 3890 MiB, GPU 2013 MiB
[03/02/2022-16:35:12] [W] [TRT] TensorRT was linked against cuBLAS/cuBLAS LT 10.2.2 but loaded cuBLAS/cuBLAS LT 10.0.0
[03/02/2022-16:35:12] [I] [TRT] [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +113, GPU +34, now: CPU 3957, GPU 2047 (MiB)
[03/02/2022-16:35:12] [I] [TRT] [MemUsageChange] Init cuDNN: CPU +206, GPU +68, now: CPU 4163, GPU 2115 (MiB)
[03/02/2022-16:35:12] [W] [TRT] TensorRT was linked against cuDNN 8.3.2 but loaded cuDNN 8.0.5
[03/02/2022-16:35:12] [I] [TRT] Local timing cache in use. Profiling results in this builder pass will not be stored.
[03/02/2022-16:35:13] [I] [TRT] Detected 1 inputs and 1 output network tensors.
[03/02/2022-16:35:13] [I] [TRT] Total Host Persistent Memory: 10784
[03/02/2022-16:35:13] [I] [TRT] Total Device Persistent Memory: 1024
[03/02/2022-16:35:13] [I] [TRT] Total Scratch Memory: 0
[03/02/2022-16:35:13] [I] [TRT] [MemUsageStats] Peak memory usage of TRT CPU/GPU memory allocators: CPU 1 MiB, GPU 886 MiB
[03/02/2022-16:35:13] [I] [TRT] [BlockAssignment] Algorithm ShiftNTopDown took 0.0757ms to assign 3 blocks to 11 nodes requiring 57860 bytes.
[03/02/2022-16:35:13] [I] [TRT] Total Activation Memory: 57860
[03/02/2022-16:35:13] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in building engine: CPU +0, GPU +4, now: CPU 0, GPU 4 (MiB)
[03/02/2022-16:35:13] [I] [TRT] [MemUsageChange] Init CUDA: CPU +0, GPU +0, now: CPU 4238, GPU 2121 (MiB)
[03/02/2022-16:35:13] [I] [TRT] Loaded engine size: 1 MiB
[03/02/2022-16:35:13] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in engine deserialization: CPU +0, GPU +1, now: CPU 0, GPU 1 (MiB)
[03/02/2022-16:35:13] [I] [TRT] [MemUsageChange] TensorRT-managed allocation in IExecutionContext creation: CPU +0, GPU +0, now: CPU 0, GPU 1 (MiB)
[03/02/2022-16:35:13] [I] Input:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@=   ++++#++=*@@@@@
@@@@@@@@#.            *@@@@@
@@@@@@@@=             *@@@@@
@@@@@@@@.   .. ...****%@@@@@
@@@@@@@@: .%@@#@@@@@@@@@@@@@
@@@@@@@%  -@@@@@@@@@@@@@@@@@
@@@@@@@%  -@@*@@@*@@@@@@@@@@
@@@@@@@#  :#- ::. ::=@@@@@@@
@@@@@@@-             -@@@@@@
@@@@@@%.              *@@@@@
@@@@@@#     :==*+==   *@@@@@
@@@@@@%---%%@@@@@@@.  *@@@@@
@@@@@@@@@@@@@@@@@@@+  *@@@@@
@@@@@@@@@@@@@@@@@@@=  *@@@@@
@@@@@@@@@@@@@@@@@@*   *@@@@@
@@@@@%+%@@@@@@@@%.   .%@@@@@
@@@@@*  .******=    -@@@@@@@
@@@@@*             .#@@@@@@@
@@@@@*            =%@@@@@@@@
@@@@@@%#+++=     =@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@@@@@@@@@@@@@@@@@@@@@@@@@@@@

[03/02/2022-16:35:13] [I] Output:
0:
1:
2:
3:
4:
5: **********
6:
7:
8:
9:

&&&& PASSED TensorRT.sample_mnist [TensorRT v8400] # sample_mnist.exe

在这里遇到一个问题,我这边电脑是安装了cuda10的,并且cuda的路径是在PATH中的,但是当我第一次执行sample_mnist.exe文件的时候发现报错Unable to load library:cublas64_10.dll。也就是说没有找到cublas64_10.dll,于是我进入了<path_cuda>/v10.0/bin目录下,发现有一个cublas64_100.dll文件,应该就是需要的cublas64_10.dll文件,于是复制了一个新的cublas64_100.dll,并且重命名为了cublas64_10.dll。就不报这个错误了。

&&&& RUNNING TensorRT.sample_mnist [TensorRT v8400] # sample_mnist.exe
[03/02/2022-16:40:37] [I] Building and running a GPU inference engine for MNIST
[03/02/2022-16:40:37] [I] [TRT] [MemUsageChange] Init CUDA: CPU +254, GPU +0, now: CPU 5106, GPU 2013 (MiB)
[03/02/2022-16:40:37] [I] [TRT] [MemUsageSnapshot] Begin constructing builder kernel library: CPU 5171 MiB, GPU 2013 MiB
[03/02/2022-16:40:37] [I] [TRT] [MemUsageSnapshot] End constructing builder kernel library: CPU 5175 MiB, GPU 2013 MiB
[03/02/2022-16:40:37] [E] [TRT] 6: [libLoader.h::nvinfer1::rt::DynamicLibrary::DynamicLibrary::49] Error Code 6: Internal Error (Unable to load library: cublas64_10.dll)
[03/02/2022-16:40:37] [E] [TRT] 2: [builder.cpp::nvinfer1::builder::Builder::buildSerializedNetwork::619] Error Code 2: Internal Error (Assertion engine != nullptr failed. )
&&&& FAILED TensorRT.sample_mnist [TensorRT v8400] # sample_mnist.exe

另外一个小问题是发现这个sampleMNIST项目打了断点也没有调试,还是直接运行完了项目,打开项目项目属性-> 链接器 -> 调试 -> 生成调试信息中的false修改为优化以便于调试(/DEBUG)就好了。这样就可以慢慢研究tensorRT是如何进行的了。

如果需要使用到Tensorflow或者PyTorch框架的话,需要使用到uff,graphsurgeononnx_graphsurgeon的库文件,需要额外安装一下对应的.whl文件:

python3 -m pip install <install_path>\graphsurgeon\graphsurgeon-0.4.5-py2.py3-none-any.whl
python3 -m pip install <install_path>\uff\uff-0.6.9-py2.py3-none-any.whl
python3 -m pip install <install_path>\onnx_graphsurgeon\onnx_graphsurgeon-0.3.12-py2.py3-none-any.whl

在Visual Studio中创建自己的项目

在Visual Studio项目中创建自己的项目可以尝试将samples文件夹下的项目复制一个后来修改,也可以从零开始创建。无非就是将需要的includelib添加进去。

  • <install_path>/lib$(CUDA_PATH)\lib\x64添加到VC++ Directories > Executable Directories

  • <install_path>/include 添加到 C/C++ > General > AdditionalDirectories

  • Linker > Input > Additional Dependencies中添加以下所有的库文件:

    • nvinfer.lib
    • nvinfer_plugin.lib
    • nvonnxparser.lib
    • nvparsers.lib
    • cudnn.lib
    • cublas.lib
    • cudart.lib
  • (Optional) 完成以上配置后将sample_mnist.cpp文件内容复制到项目中发现有一些include问题,这个时候如果需要使用到他们的一些函数作为支持的话,还需要在C/C++ > General > AdditionalDirectories中添加:

    • <install_path>/samples/common
    • <install_path>/samples/common/windows
    • $(CUDA_PATH)\include
  • (Optional)使用sample_mnist.cpp时候,由于使用到了logger.hgetopt.h中的相关函数实现,需要将logger.cpp以及getopt.c文件添加到项目的源文件中。

  • (Optional)编译sample_mnist.cpp的时候报localtime不安全的问题,在C/C++ > 预处理器 > 预处理器定义中添加_CRT_SECURE_NO_WARNINGS即可

  • (Optional)编译sample_mnist.cpp的时候报无法从const char* 转化为LPCWSTR的问题,将常规 > 字符集修改为<从父级项目或默认设置继承>,点击应用后应该显示一个空的格子,既不要是Unicode,也不要是多字节字符。

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-04 15:48:04  更:2022-03-04 15:49:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:41:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码