TensorRT部署-Windows环境配置

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、安装Visual Studio (2019)
  • 二、下载和安装nvidia显卡驱动
  • 三、下载CUDA
  • 四、下载安装cuDNN
  • 五、安装Anaconda
  • 六、TensorRT安装
  • 七、安装Opencv
  • 八、Cmake 配置
  • 总结


前言

TensorRT部署-Windows环境配置


一、安装Visual Studio (2019)

建议安装2019版本,不然容易和cmake版本不匹配。

下载链接:https://visualstudio.microsoft.com/zh-hans/downloads/

注意:安装时可勾选“Python开发”和“C++开发”

二、下载和安装nvidia显卡驱动

首先要在设备管理器中查看你的显卡型号。打开设备管理器,在显示适配器下查看,如下RTX3050。
在这里插入图片描述
NVIDIA 驱动下载:https://www.nvidia.cn/Download/index.aspx?lang=cn
在这里插入图片描述

下载安装完成之后在cmd中输入执行

nvidia-smi

如果出现以下显卡信息,说明安装成功。在这里插入图片描述
注:图中的 CUDA Version是当前Driver版本能支持的最高的CUDA版本,不是已经安装的版本

三、下载CUDA

cuda下载地址:https://developer.nvidia.com/cuda-downloads?target_os=Windows
在这里插入图片描述

旧版本的CUDA地址:https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述

我的版本是11.6
查看cuda版本命令

nvcc --version

在这里插入图片描述
将cuda运行安装,建议默认路径,安装完成后设置环境变量,系统变量里增加CUDA_PATH和CUDA_PATH_V11_8两个环境变量。
在这里插入图片描述

四、下载安装cuDNN

cudnn下载地址:https://developer.nvidia.com/cudnn(记得先登录nvidia账号)

我的cuDNN版本是cuDNN v8.9.6,查看cuDNN方法如下

先进入C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\include,查找include下的
cudnn_version.h文件。

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 6

里面的这个就代表是8.9.6版本
就版本下载地址:https://developer.nvidia.com/rdp/cudnn-archive
在这里插入图片描述
选第一个zip的就行。

安装cuDNN

复制cudnn文件

对于cudnn直接将其解开压缩包,然后需要将bin,include,lib中的文件复制粘贴到cuda的文件夹下
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6。

注意:对整个文件夹bin,include,lib选中后进行复制粘贴

五、安装Anaconda

下载地址:https://www.anaconda.com/
直接安装即可

安装好之后打开Anaconda Prompt,创建虚拟环境。

conda create -n mypytorch python=3.9

安装完成后激活环境

conda activate mypytorch

在所创建的mypytorch环境下安装pytorch, 执行命令

conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia

六、TensorRT安装

官网教程:https://docs.nvidia.com/deeplearning/tensorrt/install-guide/index.html

下载安装包:https://developer.nvidia.com/tensorrt

在这里插入图片描述
在这里插入图片描述
我下的是8.6.1.6,接下来按照以下步骤配置一下就行。

  1. 将下载的压缩文件拷贝进来解压
  2. 解压得到TensorRT-8.6.1.6的文件夹,将里边的lib绝对路径添加到环境变量Path中,即 D:\TensorRT-TensorRT-8.6.1.6\lib
  3. 将TensorRT解压位置 D:\TensorRT-TensorRT-8.6.1.6\lib下的所有dll文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin目录下

如果要使用python接口的tensorrt,则需要安装pycuda。
先进入刚刚创建的虚拟环境,在mypytorch虚拟环境下执行:

pip install pycuda

测试TensorRT示例代码

  1. 配置VS2019
    用VS2022打开sampleMNIST示例sln文件: D:\TensorRT-8.6.1.6\samples\sampleOnnxMNIST
    在这里插入图片描述
    a. 将D:\TensorRT-8.6.1.6\lib加入 项目->属性->VC++目录–>可执行文件目录
    在这里插入图片描述
    b.将D:\TensorRT-8.6.1.6\lib加入 VC++目录–>库目录
    在这里插入图片描述
    c. 将D:\TensorRT-8.6.1.6\include加入C/C++ --> 常规 --> 附加包含目录
    在这里插入图片描述

d.将nvinfer.lib、nvinfer_plugin.lib、nvonnxparser.lib和nvparsers.lib加入链接器–>输入–>附加依赖项,再添加这个D:\TensorRT-8.6.1.6\lib*.lib
在这里插入图片描述
在这里插入图片描述
配置完成后,点击上面的生成->生成解决方案进行编译
在这里插入图片描述

七、安装Opencv

下载地址:https://opencv.org/releases/
我下的是4.7,安装后记得配置系统环境变量,D:\opencv\build\x64\vc16\bin
在这里插入图片描述

八、Cmake 配置

下载tensorrtx https://download.csdn.net/download/m0_70420861/88754757spm=1001.2014.3001.5503
修改CMakeLists.txt,根据自己电脑上的软件位置和GPU架构做相应的修改。如下,改了opencv和Tensorrt的地址还有这个set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_86;code=sm_86)架构,查一下自己的是不是86

cmake_minimum_required(VERSION 3.10)project(yolov8)add_definitions(-std=c++11)
add_definitions(-DAPI_EXPORTS)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_BUILD_TYPE Release)#change to your own path
##################################################
set(OpenCV_DIR "D:/opencv/opencv/build")
set(TRT_DIR "D:/TensorRT/TensorRT-8.6.1.6")
################################################### setup CUDA
find_package(CUDA REQUIRED)
message(STATUS "    libraries: ${CUDA_LIBRARIES}")
message(STATUS "    include path: ${CUDA_INCLUDE_DIRS}")
include_directories(${CUDA_INCLUDE_DIRS})
include_directories(${Dirent_INCLUDE_DIRS}) #change to your GPU own compute_XX
###########################################################################################
set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-std=c++11;-g;-G;-gencode;arch=compute_86;code=sm_86)
###############################################################################################
enable_language(CUDA)  # add this line, then no need to set up cuda path in vs
####include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${TRT_DIR}/include)
include_directories(${TRT_DIR}/samples/common)include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${PROJECT_SOURCE_DIR}/plugin)
link_directories(${TRT_DIR}/lib)add_library(myplugins SHARED ${PROJECT_SOURCE_DIR}/plugin/yololayer.cu)
target_link_libraries(myplugins nvinfer cudart)find_package(OpenCV)
message(STATUS "OpenCV library status:")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")include_directories(${OpenCV_INCLUDE_DIRS})file(GLOB_RECURSE SRCS ${PROJECT_SOURCE_DIR}/src/*.cpp ${PROJECT_SOURCE_DIR}/src/*.cu)
add_executable(yolov8 ${PROJECT_SOURCE_DIR}/main.cpp ${SRCS})target_link_libraries(yolov8 nvinfer)
target_link_libraries(yolov8 cudart)
target_link_libraries(yolov8 myplugins)
target_link_libraries(yolov8 ${OpenCV_LIBS})

安装cmake:https://cmake.org/

  • 执行cmake-gui来配置project
  • 点击 Configure并设置环境
  • 点击Finish,等待Configure done
  • 点击Generate并等待Generate done
  • 点击Open Project

在这里插入图片描述

总结

学习笔记–TensorRT部署-Windows环境配置

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

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

相关文章

大数据开发之kafka(完整版)

第 1 章:Kafka概述 1.1 定义 Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域。 发布/订阅:消息的发布者不会将消息直接发送给特定的订阅者,而是将发布的消息分为不同的类别,订阅者只…

AI教我学编程之C#类的实例化与访问修饰符

前言 在这篇文章中,我将带大家深入了解C#编程语言的核心概念,包括类的实例化、访问修饰符的应用,以及C#中不同数据类型的默认值。我会通过逐步分析和具体实例,详细解释如何在C#中正确创建和操作对象,并探讨如何通过访…

供应链安全项目in-toto开源框架详解

引言:in-toto 是一个开源框架,能够以密码学的方式验证构件生产路径上的每个组件和步骤。它可与主流的构建工具、部署工具进行集成。in-toto已经被CNCF技术监督委员会 (Technical Oversight Committee,TOC)接纳为CNCF孵化项目。 1. 背景 由于…

linux C语言socket函数send

在Linux中,使用C语言进行网络编程时,send函数是用于发送数据到已连接的套接字的重要函数之一。它通常用于TCP连接,但也可以用于UDP(尽管对于UDP,通常更推荐使用sendto,因为它允许你指定目标地址和端口&…

基于华为MRS3.2.0实时Flink消费Kafka落盘至HDFS的Hive外部表的调度方案

文章目录 1 Kafka1.1 Kerberos安全模式的认证与环境准备1.2 创建一个测试主题1.3 消费主题的接收测试 2 Flink1.1 Kerberos安全模式的认证与环境准备1.2 Flink任务的开发 3 HDFS与Hive3.1 Shell脚本的编写思路3.2 脚本测试方法 4 DolphinScheduler 该需求为实时接收对手Topic&a…

Rustdesk自建服务搭建好了,打开Win10 下客户端下面状态一直正在接入网络,无法成功连接服务器

环境: Rustdesk1.2.3 自建服务器 有域名地址 问题描述: Rustdesk自建服务搭建好了,打开Win10 下客户端下面状态一直正在接入网络,无法成功连接服务器 解决方案: RustDesk是一款免费的远程桌面软件,它允许用户通过互联网远程连接和控制其他计算机。它是用Rust编程语…

k8s 使用cert-manager证书管理自签

个人建议使用安装更快,比helm快,还要等待安装crd kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.3/cert-manager.yaml#官网 https://cert-manager.io/docs/installation/kubectl/#创建自签的ClusterIssuer c…

数据结构代码实现 —— 单链表【Java】

单链表的概述及性质等在篇不做赘述,有需要可移步以下文章: 《数据结构 C语言版 严蔚敏 第2版》:线性表https://blog.csdn.net/weixin_43551213/article/details/134048025 以下仅展示使用 Java 实现单链表 结点结构定义: publ…

2024年1月13日~2024年1月19日(研读论文、了解语义分割)

一、前言 上周完成《SeisInvNet》论文的初步阅读工作。 本周继续阅读《SeisInvNet》论文,并理解其逻辑结构。另外,在B站寻找视频了解了语义分割任务逻辑、深度学习一些概念等。 二、论文SeisInvNet 标题:Deep learning Inversion of Seismic…

Python 折线图的绘制(Seaborn篇-04)

Python 折线图的绘制(Seaborn篇-04)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹…

[java基础揉碎]基本数据类型转换

介绍 当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型, 这个就是自动类型转换。 数据类型按精度(容量)大小排序为: 自动类型转换注意和细节 1.有多种类型的数据混合运算时,系统首先自动…

YARN节点故障的容错方案

YARN节点故障的容错方案 1. RM高可用1.1 选主和HA切换逻辑 2. NM高可用2.1 感知NM节点异常2.2 异常NM上的任务处理 4. 疑问和思考4,1 RM感知NM异常需要10min,对于app来说是否太长了? 5. 参考文档 本文主要探讨yarn集群的高可用容错方案和容错能力的探讨。…