Cap0:TensorRT环境搭建

1、安装TensorRT

TensorRT是针对NVIDIA显卡设备的加速方案,你要使用TensorRT则证明你有一定的深度学习基础,那么在你的Ubuntu上配置好显卡驱动、CUDA以及cuDNN一定是小菜一碟。

现在假设你已经配置好显卡驱动、CUDA以及cuDNN了,现在让我们来配置TensorRT。其实步骤也很简单:1)下载TensorRT压缩包并解压;2)配置环境变量;

1.1、下载TensorRT压缩包

NVIDIA TensorRT Download
可以看到很多版本,我们选择最新的8.x的版本。点击进入后勾选I Agree To The ...后就会显示所有的8.x版本。EA即early access抢先体验版,GA是general availability即通用稳定版本。很明显我们优先选择GA版本。
在这里插入图片描述
我们选择TAR包安装方式,可以看到针对Ubuntu(Linux x86_64)有两种选择,区别在于不同的CUDA版本。找到适配自己CUDA版本的TAR Package下载。然后找一个长期存放TensorRT解压文件的地方解压(解压命令:tar -zxvf TensorRT.tar.gz)。
在这里插入图片描述

1.2、配置环境变量

在上文的TensorRT文件夹中,提供了库文件供开发者直接使用,所以我们将其库文件的路径加入到环境变量,方便开发时使用。

解压后的目录结构如下,我们需要设置环境变量指向lib文件夹(其中python是whl文件,可以通过pip安装后在python使用tensorrt):

vim ~/.bashrc
# 在最后添加:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your_tensorrt_path/lib

# 保存退出后
source ~/.bash

或者对当前终端临时变量设置:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:your_tensorrt_path/lib
在这里插入图片描述

2、测试

2.1、测试源码

在测试环节,我们将尝试使用TensorRT的IBuilder创建一个builder,如果能够创建成功不报错,说明环境配置上没有问题。
代码内容如下:

#include <iostream>
#include "NvInfer.h"

// 实现一个简单的Logger类
class Logger : public nvinfer1::ILogger {
    void log(Severity severity, const char* msg) noexcept override {
        if(severity<=Severity::kWARNING){
            std::cout<<msg<<std::endl;
        }
    }
} gLogger;


int main() {
    // 通过创建一个builder验证TensorRT是否配置成功
    nvinfer1::IBuilder* builder = nvinfer1::createInferBuilder(gLogger);
    if (!builder) {    // 如果builder没有被成功创建
        std::cerr << "Failed to create TensorRT builder" << std::endl;
        return 1;
    }

    // 释放资源
    builder->destroy();
    return 0;
}

2.2、编译源码

编译上面的源码有两种方式:g++或者CMakeLists.txt

  • g++方式
    编译命令如下:
    g++ -o main TensorRT_test.cpp -I/usr/local/cuda/include -L/usr/local/cuda/lib64 -I/home/aistudio/TensorRT-8.6.1.6/include -L/home/aistudio/TensorRT-8.6.1.6/lib -lnvinfer
    
    • -o:上面源码的名称为TensorRT_test.cpp,编译后的文件为main
    • -I/usr/local/cuda/include:指定了cuda的头文件所在
    • -L/usr/local/cuda/lib64:指定了cuda的库文件所在
    • -I/home/aistudio/TensorRT-8.6.1.6/include:指定了TensorRT的头文件所在(指向你解压TensorRT的路径)
    • -L/home/aistudio/TensorRT-8.6.1.6/lib:指定了TensorRT的库文件所在
    • -lnvinfer:在TensorRT_test.cpp使用了lnvinfer这样的库
  • CMakeLists.txt方式
    CMakeLists.txt的内容如下:
    cmake_minimum_required(VERSION 3.5)
    project(tensorrt_test)
    
    # 指定CUDA的头文件和库文件
    include_directories(/usr/local/cuda/include)
    link_directories(/usr/local/cuda/lib64)
    
    # 指定TensorRT的头文件和库文件
    include_directories(/home/aistudio/TensorRT-8.6.1.6/include)
    link_directories(/home/aistudio/TensorRT-8.6.1.6/lib)
    
    # 添加可执行文件
    add_executable(main TensorRT_test.cpp)
    
    # 链接TensorRT库
    target_link_libraries(main nvinfer)
    

编译成功后会产生main文件,通过./main执行后会出现:
在这里插入图片描述
红色框不是报错,而是提示信息:Lazy Loading。TensorRT中提供了很多模块,而我们的程序一般只用到部分,所以没有必要一次性全部加载所有模块。Lazy Loading帮助我们仅加载需要使用到的模块,每个模块将在首次使用该模块中的变量或内核时加载,即延迟加载。上面的信息是告诉我们没有启用Lazy Loading,我们可以通过 export CUDA_MODULE_LOADING=LAZY为当前的终端启用Lazy Loading,后续再执行main就没有提示信息了。

  • 20
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一个对称矩阵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值