在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

Ubuntu14.04上安装TensorRT 2.1操作步骤相关推荐

  1. 【Qt】在ubuntu14.04上安装Qt5.12(失败)

    注意 在ubuntu14.04上安装Qt5.12最终失败了,Qt5.12需要的libdbus库的版本和ubuntu14.04中的不一致,如果强行升级libdbus库版本,会导致系统桌面无法启动. 再次 ...

  2. 在Ubuntu14.04上安装UberWriterMarkdown编辑器

    在Ubuntu14.04上安装UberWriterMarkdown编辑器 这是一篇快速教程指导我们如何通过官方的PPA源在Ubuntu14.04上安装UberWriter编辑器. UberWriter ...

  3. Ubuntu14.04上安装calamari

    Ubuntu14.04上安装calamari Ubuntu1404上安装calamari 1添加calamari源和key 2添加saltstack 2014-7 PPA 3更新source list ...

  4. 如何在ubuntu14.04上安装轻量级的Budgie桌面(v8)

    如何在ubuntu14.04上安装轻量级的Budgie桌面(v8) Budgie是为Linux发行版定制的旗舰桌面,也是一个定制工程.为思想前卫的用户设计,致力于简单和简洁.它的一个巨大优势是它不是别 ...

  5. yum方式安装android_在CentOS 7和Ubuntu14.04上安装Android Studio

    先介绍在CentOS 7的安装过程,再介绍Ubuntu14.04上的安装过程: 1.卸载OpenJDK,下载JDK最新版本,然后安装: rpm -qa | grep java rpm -e --nod ...

  6. Ubuntu14.04上安装tftpd服务

    准备在自己的Ubuntu14.04上使用tftpd服务,然后在网上查怎么搞,方法很多蛋疼得一米,按照这些方式,配置一大堆,尤其是有人要求安装xinetd,然后还要配置这个xinetd.conf文件,事 ...

  7. 记录在Ubuntu14.04上安装ryu中遇到的各种坑

    我使用的是mininet官方的Ubuntu14.04镜像. 先是运行如下命令: apt install python-pip pip install ryu 结果如下: Downloading/unp ...

  8. 【ubuntu】ubuntu14.04上安装搜狗输入法

    ** 在ubuntu14.04.4 desktop 64amd版本上安装sogou输入法 ** 0.换安装源为中国源(可选,下载会快些) 1.搭fcitx环境 2.安装sogou for linux ...

  9. ubuntu14.04上安装oralce笔记

    申明:本文旨在纪录安装过程中遇到的问题以及解决方案,详细的安装过程网上有太多图文教程了, 我就不过多啰嗦了,如有问题, 可以留言讨论 环境:ubuntu14.04 64位 , oracle11g su ...

最新文章

  1. 拿下中科大的计算机课程全靠它了!
  2. Soft robotics:造仿生昆虫机器人柔性骨骼新技术,只需2小时,成本不到7块!
  3. 【错误记录】编译 ijkplayer 报错 (fatal error: libyuv.h: No such file or directory #include “libyuv.h“ )
  4. java监听变量的变化_[Java学习小记]使用PropertyChangeSupport来监听变量的变化
  5. django给mysql配主从_django中的mysql主从读写分离:一、配置mysql主从分离
  6. springboot 全局异常处理 自定义mvc错误页面展示
  7. linux系统无法读取硬盘,安装CentOS时读取硬盘错误解决办法
  8. win10语音识别的设置和开启
  9. 基于阿里云产品和开源Hudi结合
  10. 开发用的到java数组吗_java数组
  11. 计算机网络原理——传输层TCP协议的十个重要特性之保证可靠性的机制(确认应答和超时重传)
  12. Office EXCEL 创建图片超链接打不开怎么办 Excel打开图片提示发生了意外错误怎么办...
  13. UC 浏览器曝中间人攻击漏洞,官方:已修复,国内版不受影响
  14. 从字符串中筛选出连续的数字,并将其放入另一个数组!
  15. 离线数仓搭建_14_DWT数据构建
  16. codeforces 332B B. Maximum Absurdity(rmq)
  17. 05_CAP与BASE原理
  18. NMS by Representative Region: Towards Crowded Pedestrian Detection by Proposal Pairing
  19. 如何自己写一门简单的编程语言(解释型语言)
  20. CSS的补充(3 空间转换 动画)

热门文章

  1. Java多线程,Thread,Runnable,Callable Task,Future<Task>,CompletionService
  2. LabVIEW色彩定位实现药品包装质量检测(实战篇—4)
  3. 基于U-Net系列算法的医学图像分割(课程设计)
  4. Linux那些事儿 之 戏说USB(20)设备的生命线(三)
  5. 深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类
  6. win8 网络 连接计算机名称,win8本地网络联接的名字怎么改
  7. android 蓝牙 鼠标 app_Razer 雷蛇 那伽梵蛇 Pro 专业版 无线蓝牙鼠标 899元
  8. 【强哥推荐】VSCode常用快捷键配置文件表,记得收藏
  9. go连接Kafka报错kafka: client has run out of available brokers to talk to
  10. HLS中m3u8格式规范解读