Ubuntu14.04上安装TensorRT 2.1操作步骤
在Ubuntu14.04 上安装TensorRT2.1有两种方法:(1)、通过.deb直接安装;(2)、通过Tar文件安装。这里通过Tar文件安装。
安装步骤:
1. 安装CUDA 8.0,可参考: http://blog.csdn.net/fengbingchun/article/details/53840684 ;
2. 从 https://developer.nvidia.com/nvidia-tensorrt-download 下载 TensorRT-2.1.2.x86_64.cuda-8.0-14-04.tar.bz2 ;
3. 从 https://developer.nvidia.com/rdp/cudnn-download 下载 cudnn-8.0-linux-x64-v6.0.tgz;
4. 通过以下命令解压缩cudnn,会下当前路径生成一个cuda目录,包含cudnn.h头文件和cudnn动态库、静态库;并通过 sudo cp -a 命令将cuda目录下的内容copy到/usr/local/cudnn/cudnn8.0_v6.0目录下;
tar -xvzf cudnn-8.0-linux-x64-v6.0.tgz
5. 通过以下命令解压缩TensorRT2.1,会在当前路径生成一个TensorRT-2.1.2目录,里面包括bin、data、doc、include、lib、samples、targets目录,存放着TensorRT2.1的头文件、动态库、doc、sample、测试数据等内容;在TensorRt-2.1.2/targets/x86_64-linux-gun/samples目录下,执行make命令,正常情况下会在TensorRt-2.1.2/targets/x86_64-linux-gun/bin目录下生成所有samples的执行文件,可说明本机是满足TensorRT运行要求的。并将TensorRT-2.1.2/include 和TensorRT-2.1.2/targets/x86_64-linux-gun/lib目录通过 sudo cp -a 命令将其copy到/usr/local/tensorrt/tensorrt2.1_v6.0目录下;tar xf TensorRT-2.1.2.x86_64.cuda-8.0-14-04.tar.bz2
6. 为了验证其正确性,通过CMakeLists.txt对samples中的sampleMNIST.cpp文件进行编译,结果可以正常生成执行文件,CMakeLists.txt内容如下:# CMake file for TensorRt_Test# 设定依赖的CMake版本
CMAKE_MINIMUM_REQUIRED(VERSION 3.2)
# 指定项目名称
PROJECT(TensorRT_Test)# 搜索指定的OpenCV外部依赖库头文件和库文件位置
FIND_PACKAGE(OpenCV 2)
# 搜索指定的CUDA外部依赖库头文件和库文件位置
FIND_PACKAGE(CUDA)# 打印相关信息, CMAKE_CURRENT_SOURCE_DIR指的是当前处理的CMakeLists.txt所在的路径
MESSAGE(STATUS "current path: ${CMAKE_CURRENT_SOURCE_DIR}")# 定义用户自定义变量
SET(PATH_CPP_FILES ./../../demo/TensorRT_Test)
#MESSAGE(STATUS "cpp files path: ${PATH_CPP_FILES}")
SET(PATH_CU_FILES ./../../demo/TensorRT_Test)# 递归查询所有匹配的文件:*.cpp和*.cu
FILE(GLOB_RECURSE CPP_LIST ${PATH_CPP_FILES}/*.cpp)
FILE(GLOB_RECURSE CU_LIST ${PATH_CU_FILES}/*.cu)
#MESSAGE(STATUS "cpp list: ${CPP_LIST}")
#MESSAGE(STATUS "cu list: ${CU_LIST}")# 使CMake支持C++11特性
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu++0x")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")# 指定CUDA头文件的搜索路径
INCLUDE_DIRECTORIES(/usr/local/cuda-8.0/include)
# 指定TensorRT头文件的搜索路径
INCLUDE_DIRECTORIES(/usr/local/tensorrt/tensorrt2.1_v6.0/include)
# 指定cudnn头文件的搜索路径
INCLUDE_DIRECTORIES(/usr/local/cudnn/cudnn8.0_v6.0/include)
# 指定OpenCV头文件搜索路径
INCLUDE_DIRECTORIES(${OpenCV_INCLUDE_DIRS})
#MESSAGE(STATUS "opencv include directory: ${OpenCV_INCLUDE_DIRS}")# 指定TensorRT动态库搜索路径
LINK_DIRECTORIES(/usr/local/tensorrt/tensorrt2.1_v6.0/lib)
# 指定cudnn动态库搜索路径
LINK_DIRECTORIES(/usr/local/cudnn/cudnn8.0_v6.0/lib64)# 使CUDA NVCC 编译器支持C++11特性
LIST(APPEND CUDA_NVCC_FLAGS -std=c++11;-O2)
LIST(APPEND CUDA_NVCC_FLAGS -Xcompiler;-fPIC)SET(CUDA_PROPAGATE_HOST_FLAGS OFF)LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_50,code=sm_50)
LIST(APPEND CUDA_NVCC_FLAGS -gencode arch=compute_60,code=sm_60)# 编译可执行程序,即生成可执行文件TensorRT_Test
#ADD_EXECUTABLE(TensorRT_Test ${CPP_LIST} ${CU_LIST}) # 不包括编译*.cu文件,需要使用CUDA_ADD_EXECUTABLE命令
CUDA_ADD_EXECUTABLE(TensorRT_Test ${CPP_LIST} ${CU_LIST})
# 用来为target添加需要链接的共享库,指定工程所用的依赖库,包括动态库和静态库
TARGET_LINK_LIBRARIES(TensorRT_Test ${OpenCV_LIBS} nvcaffe_parser nvinfer cudnn)
#MESSAGE(STATUS "opencv libs: ${OpenCV_LIBS}")MESSAGE(STATUS "**************************************")
以下内容翻译于: http://docs.nvidia.com/deeplearning/sdk/tensorrt-user-guide/index.html
1. TensorRT 2.1支持的layer包括:Convolution, ReLU, Sigmoid, TanH, Pooling, Power, BatchNorm, ElementWise(Eltwise), LRN, InnerProduct(FullyConnected), SoftMax, Scale, and Deconvolution layers.
2. TensorRT 2.1不支持的layer包括:Deconvolution groups, Dilated convolutions, PReLU, Leaky ReLU, Scale, other than per-channel scaling, ElementWise (Eltwise) with more than two inputs.
3. TensorRT的NvCaffeParser实现从Caffe的layer到TensorRT的layer, NvCaffeParser不支持Caffe prototxt的传统格式。
4. TensorRT关键概念:
网络定义:一个网络是由一系列layer和一组tensor组成。
层(layer): 每一个layer从一组输入tensor计算一组输出tensor, layer是有参数的,如Convolution size, stride等。
tensor: tensor既可以是网络的输入,也可以是layer的输出. tensor具有指定精度的数据类型,如16位/36位浮点数,及维度,如3维度,通道数、宽度、高度.输入tensor的尺寸由应用程序定义,输出tensor的尺寸由builder推理出来。
每个layer和tensor都有一个名称。使用NvCaffeParser时,tensor和layer的名称将从Caffe的prototxt文件中获取。
5. TensorRT工作流:用户通过神经网络训练生成一个model --> 导入已训练的model进TensorRT --> 优化网络产生一个Plan --> 执行推理。
Plan也可以被序列化存储到磁盘,后面可以重新load Plan进TensorRT,可省去再次执行优化网络的操作。
6. 构建阶段:在构建阶段,工具包通过网络定义,执行优化,并产生推理引擎(inference engine). 构建阶段很占用时间,尤其在嵌入式平台时,因此,一个典型的应用程序将构建一次推理引擎,然后将其序列化以备后用。
构建阶段在layer上执行的优化包括:消除没有用到的输出层; convolutions, bias, ReLU layer的融合(fusion)操作; 相似的参数和相同的源tensor执行聚合(aggregation)操作;通过将layer的输出引导到最终目的地,省略(elision)连接层;运行layers以从其内核目录中选择最快的;内存优化。
7. 执行阶段:执行已优化的引擎; 在GPU上,使用引擎执行推理任务。
GitHub:https://github.com/fengbingchun/CUDA_Test
相关文章:

学会这门编程知识,可能决定你能进什么样的企业
对于程序员来讲,很多技术真正掌握之后,都能影响甚至说改变一个人的命运,比如:python、AI、DL、算法等等,但是如果只让你选择其中的一项基础知识,你会选择哪个呢?如果是我, 我会选——…

雷林鹏分享:MySQL 及 SQL 注入
MySQL 及 SQL 注入 如果您通过网页获取用户输入的数据并将其插入一个MySQL数据库,那么就有可能发生SQL注入安全的问题。 本章节将为大家介绍如何防止SQL注入,并通过脚本来过滤SQL中注入的字符。 所谓SQL注入,就是通过把SQL命令插入到Web表单递…

dedecms网站文章内容按自定义排序的方法
标签dede:arclist的排序是通过orderby来指定的,如下: {dede:arclist orderby’排序字段’ } {/dede:arclist} orderby’sortrank’ 文档排序方式 orderby’hot’ 或 orderby’click’ 表示按点击数排列 orderby’sortrank’ 或 orderby’pubdate’ 按…

有了这套模板,再不担心刷不动LeetCode了
(图片下载自视觉中国)作者 | 李威来源 | https://www.liwei.party/整理 | 五分钟学算法(ID: CXYxiaowu)正文下面的动画以 「力扣」第 704 题:二分查找 为例,展示了使用这个模板编写二分查找法的一般流程。b…
一线互联网技术:Java工程师架构知识系统化汇总,面完45K!
根据高端招聘平台100 offer发布的Java人才盘点报告,在过去的2018年,Java仍然是最流行、招聘供需量最大的技术语言。在此基础上,互联网行业针对 Java 开发的招聘需求,也是近年技术类岗位供需量最大,且变化最稳定的。企业…

C++中局部类的使用
类可以定义在某个函数的内部,我们称这样的类为局部类(local class)。局部类定义的类型只在定义它的作用域内可见。和嵌套类不同,局部类的成员受到严格控制。局部类的所有成员(包括函数在内)都必须完整定义在类的内部。因此,局部类的作用与嵌套…

按键驱动的恩恩怨怨之概述
转载请注明出处:http://blog.csdn.net/ruoyunliufeng/article/details/23946487 研究按键驱动已经有几天了,尽管是0基础的驱动,可是当中包括的知识确实不少。接下来的几篇文章我会分别从浅入深的分析按键驱动。希望能对大家有所帮助。因为屌…

C++中嵌套类的使用
一个类可以定义在另一个类的内部,前者称为嵌套类(nested class)或嵌套类型(nested type)。嵌套类常用于定义作为实现部分的类。嵌套类可用于隐藏实现细节。嵌套类是一个独立的类,与外层类基本没什么关系。特别是,外层类的对象和嵌套类的对象是…

挑战弱监督学习的三大热门问题 AutoWSL2019挑战赛正式开赛
AutoWSL2019作为11月17-19日亚洲机器学习大会(ACML)主会议竞赛单元之一,由第四范式、ChaLearn、RIKEN和微软联合举办,其中竞赛分享和颁奖将与大会WSL-Workshop共同举办。据悉,AutoWSL是继AutoCV、AutoCV2、AutoNLP、Au…

数据连接池的工作机制是什么?
以典型的数据库连接池为例: 首先普通的数据库访问是这样的:程序和数据库建立连接,发送数据操作的指令,完成后断开连接。等下一次请求的时候重复这个过程,即每个请求都需要和数据库建立连接和断开连接,这样当…

apkplug插件托管服务简化与简介-05
2019独角兽企业重金招聘Python工程师标准>>> 本文基于TuoClondService1.1.0讲解 apkplug插件托管服务是提供给开发者一个远程发布插件的管理平台,但v1.0.0版本接口调用有些复杂我们在v1.1.0版本中着重对其进行了简化 与封装,使开发者能更简…

SpringBoot-JPA入门
SpringBoot-JPA入门 JPA就是Spring集成了hibernate感觉。 注解,方法仓库(顾名思义的方法,封装好了,还有自定义的方法)。 案例: spring:datasource:url: jdbc:mysql://localhost:3306/springboot?useUnicodetrue&c…

PCA、LDA、MDS、LLE、TSNE等降维算法的Python实现
整理 | 夕颜出品 | AI科技大本营(ID:rgznai100)【导读】网上关于各种降维算法的资料参差不齐,但大部分不提供源代码。近日,有人在 GitHub 上整理了一些经典降维算法的 Demo(Python)集合,同时给出了参考资料的链接。PCA…

C++11中enum class的使用
枚举类型(enumeration)使我们可以将一组整型常量组织在一起。和类一样,每个枚举类型定义了一种新的类型。枚举属于字面值常量类型。 C包含两种枚举:限定作用域的和不限定作用域的。这里主要介绍限定作用域的。不限定作用域的使用可以参考: ht…

Windows下Mysql主从配置(Mysql5.5)
主数据库IP:192.168.3.169从数据库IP:192.168.3.34主数据库配置my.inin:在[mysqld]下添加配置数据:server-id1 #配一个唯一的ID编号,1至32。log-binmysql-bin #二进制文件存放路径#设置要进行或不要进行主从复制的数据库名,同…
K-最近邻法(KNN) C++实现
关于KNN的介绍可以参考: http://blog.csdn.net/fengbingchun/article/details/78464169 这里给出KNN的C实现,用于分类。训练数据和测试数据均来自MNIST,关于MNIST的介绍可以参考: http://blog.csdn.net/fengbingchun/article/deta…

AI大佬“互怼”:Bengio和Gary Marcus隔空对谈深度学习发展现状
编译 | AI科技大本营编辑部出品 | AI科技大本营(ID:rgznai100)去年以来,由于纽约大学教授 Gary Marcus 对深度学习批评,导致他在社交媒体上与许多知名的 AI 研究人员如 Facebook 首席 AI 科学家 Yann LeCun 进行了一场论战。不止 …

Centos7多内核情况下修改默认启动内核方法
1.1 进入grub.cfg配置文件存放目录/boot/grub2/并备份grub.cfg配置文件 [rootlinux-node1 ~]# cd /boot/grub2/ [rootlinux-node1 grub2]# cp -p grub.cfg grub.cfg.bak [rootlinux-node1 grub2]# ls -ld grub.cfg* -rw-r--r--. 1 root root 5162 Aug 11 2018 grub.cfg -rw-r…
TensorRT Samples: MNIST
关于TensorRT的介绍可以参考: http://blog.csdn.net/fengbingchun/article/details/78469551以下是参考TensorRT 2.1.2中的sampleMNIST.cpp文件改写的实现对手写数字0-9识别的测试代码,各个文件内容如下:common.hpp:#ifndef FBC_TENSORRT_TE…

网红“AI大佬”被爆论文剽窃,Jeff Dean都看不下去了
作者 | 夕颜、Just出品 | AI科技大本营(ID:rgznai100)【导读】近日,推特上一篇揭露 YouTube 网红老师 Siraj Raval 新发表论文涉抄袭其他学者的帖子引起了讨论。揭露者是曼彻斯特大学计算机科学系研究员 Andrew M. Webb,他在 Twit…

数位dp(求1-n中数字1出现的个数)
题意:求1-n的n个数字中1出现的个数。 解法:数位dp,dp[pre][now][equa] 记录着第pre位为now,equa表示前边是否有降数字(即后边可不能够任意取,true为没降,true为已降);常规的记忆化搜…
TensorRT Samples: MNIST API
关于TensorRT的介绍可以参考: http://blog.csdn.net/fengbingchun/article/details/78469551 以下是参考TensorRT 2.1.2中的sampleMNISTAPI.cpp文件改写的实现对手写数字0-9识别的测试代码,各个文件内容如下:common.hpp:#ifndef FBC_TENSORR…

免费学习AI公开课:打卡、冲击排行榜,还有福利领取
CSDN 技术公开课 Plus--AI公开课再度升级内容全新策划:贴近开发者,更多样、更落地形式多样升级:线上线下、打卡学习,资料福利,共同交流成长,扫描下方小助手二维码,回复:公开课&#…

Gamma阶段第一次scrum meeting
每日任务内容 队员昨日完成任务明日要完成的任务张圆宁#91 用户体验与优化:发现用户体验细节问题https://github.com/rRetr0Git/rateMyCourse/issues/91#91 用户体验与优化:发现并优化用户体验,修复问题https://github.com/rRetr0Git/rateMyC…

windows 切换 默认 jdk 版本
set JAVA_HOMEC:\jdk1.6.0u24 set PATH%JAVA_HOME%\bin;%PATH%转载于:https://www.cnblogs.com/dmdj/p/3756887.html
TensorRT Samples: GoogleNet
关于TensorRT的介绍可以参考: http://blog.csdn.net/fengbingchun/article/details/78469551 以下是参考TensorRT 2.1.2中的sampleGoogleNet.cpp文件改写的测试代码,文件(googlenet.cpp)内容如下:#include <iostream> #include <t…

Visual Studio Code Go 插件文档翻译
此插件为 Go 语言在 VS Code 中开发提供了多种语言支持。 阅读版本变更日志了解此插件过去几个版本的更改内容。 1. 语言功能 (Language Features) 1.1 智能感知 (IntelliSense) 编码时符号自动补全(使用 gocode )编码时函数签名帮助提示(使用…

资源 | 吴恩达《机器学习训练秘籍》中文版58章节完整开源
整理 | Jane出品 | AI科技大本营(ID:rgznai100)一年前,吴恩达老师的《Machine Learning Yearning》(机器学习训练秘籍)中文版正式发布,经过一年多的陆续更新,近日,这本书的中文版 58…

js字符串加密的几种方法
在做web前端的时候免不了要用javascript来处理一些简单操作,其实如果要用好JQuery, Prototype,Dojo 等其中一两个javascript框架并不简单,它提高你的web交互和用户体验,从而能使你的web前端有非一样的感觉,如海阔凭鱼跃。当然&…

Vue开发入门看这篇文章就够了
摘要: 很多值得了解的细节。 原文:Vue开发看这篇文章就够了作者:RandomFundebug经授权转载,版权归原作者所有。 介绍 Vue 中文网Vue githubVue.js 是一套构建用户界面(UI)的渐进式JavaScript框架库和框架的区别 我们所说的前端框架…