Ubuntu18.04安装cuda 11.3和TensorRT 8教程(碰到的坑及填坑方法,以及python和c++的TensorRT环境搭建)

1.卸载原环境

原环境:显卡驱动 -- 470.57.02
				  cuda -- 10.0
				  cudnn -- 7.6
				  TensorRT 7.0.0.11

卸载cuda10.0以及相应的cudnn:

cd /usr/local/cuda/bin
sudo ./uninstall_cuda_10.0.pl
cd ..
sudo rm -rf cuda-10.0

2.安装cuda 11.3及相应的cudnn

cuda安装

cuda版本及所需驱动版本

cuda各版本可在https://developer.nvidia.com/cuda-toolkit-archive下载

下载cuda 11.3的选择如下:
cuda

sudo wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
sudo wget https://developer.download.nvidia.com/compute/cuda/11.3.0/local_installers/cuda-repo-ubuntu1804-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-11-3-local_11.3.0-465.19.01-1_amd64.deb
sudo apt-key add /var/cuda-repo-ubuntu1804-11-3-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

这里遇到了坑,运行最后一句时报错,错误信息是:

cuda : 依赖: cuda-11-3 (>= 11.3.0) 但是它将不会被安装

解决方案:

1. 安装aptitude-> sudo apt-get install aptitude

2.将apt-get换成aptitude -> sudo aptitude install cuda

3.显示有许多冲突,其中包括需要将470驱动更换为465驱动的提示。选择y进行安装(这里我选择y并没有安装,
且没有任何反应。反而是先选择了n,后选择了y才安装成功,可作参考)

4. 重启 -> nvidia-smi

5. nvcc --version 显示版本号,成功

最后 nvidia-smi 结果如下:

显卡驱动信息
nvcc --version 结果如下:

在这里插入图片描述
配置环境变量

sudo gedit ~/.bashrc

在文件最后添加
export PATH=/usr/local/cuda-11.3/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda

保存,并输入
source ~/.bashrc
生效

测试是否生效

cd /usr/local/cuda-11.3/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

若结果为如下,则表示配置成功
在这里插入图片描述

cudnn安装

下载地址为:https://developer.nvidia.com/rdp/cudnn-archive

这里我选择的是下载cudnn
下载cudnn
下载好压缩包后,将压缩包解压,并cd到解压的文件路径/到该路径下打开终端

1.分别输入
sudo cp cuda/include/cudnn.h /usr/local/cuda-11.3/include/ 
sudo cp cuda/include/cudnn_version.h /usr/local/cuda-11.3/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.3/lib64/ 
sudo chmod a+r /usr/local/cuda-11.3/include/cudnn.h 

2.输入下列代码查看版本
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

若结果如下,则表示安装成功

csdnn

3.安装TensorRT 8.0

在网址https://developer.nvidia.com/nvidia-tensorrt-8x-download下载

对应的版本为下图中第三个

tensorrt 下载
官网指南:NVIDIA Deep Learning TensorRT Documentation

下载的包是:nv-tensorrt-repo-ubuntu1804-cuda11.3-trt8.0.1.6-ga-20210626_1-1_amd64.deb

切换到下载包的目录,并执行:

sudo dpkg -i nv-tensorrt-repo-ubuntu1804-cuda11.3-trt8.0.1.6-ga-20210626_1-1_amd64.deb
sudo apt-key add /var/nv-tensorrt-repo-ubuntu1804-cuda11.3-trt8.0.1.6-ga-20210626/7fa2af80.pub

sudo apt-get update
sudo apt-get install tensorrt

如你使用3.X版本的python,则运行

sudo apt-get install python3-libnvinfer-dev

验证安装

dpkg -l | grep TensorRT

我的结果如下:

安装结果

4.python及c++运行TensorRT

python

事实上,我在完成上述安装后并不能成功import tensorrt成功,不知是否与我用anaconda环境有关。所以我决定曲线救国,下载tar版本的TensorRT,利用tar文件解压后的whl进行python的环境搭建。具体步骤如下:
(1)进入官网下载tar格式文件,即下图第一个。
在这里插入图片描述
(2)解压后,进入解压的TensorRT-8.0.1.6文件夹,进入python文件夹,打开终端运行

pip install tensorrt-8.0.1.6-cp36-none-linux_x86_64.whl  // 记得对应自己的python版本号
cd ../uff
pip install uff-0.6.9-py2.py3-none-any.whl
cd ../graphsurgeon
pip install graphsurgeon-0.4.5-py2.py3-none-any.whl
cd ../onnx_graphsurgeon
pip install onnx_graphsurgeon-0.3.10-py2.py3-none-any.whl
// 运行python
python
// 输入
import tensorrt
tensorr.__version__
// 输出8.0.1.6即安装成功

(3)创建engine的代码略有改变(也可能是我原来的代码不够规范,仅作参考)

原代码
with trt.Builder(TRT_LOGGER) as builder, builder.create_network(EXPLICIT_BATCH) as network, trt.OnnxParser(
            network, TRT_LOGGER) as parser:
        builder.max_batch_size = 10
        builder.max_workspace_size = 1 << 5

        with open(engine_path, 'rb') as model:
            if not parser.parse(model.read()):
                raise TypeError("Parser parse failed.")

        engine = builder.build_cuda_engine(network)
现代码
with trt.Builder(TRT_LOGGER) as builder, builder.create_network(EXPLICIT_BATCH) as network, \
            builder.create_builder_config() as config, trt.OnnxParser(network, TRT_LOGGER) as parser, \
            trt.Runtime(TRT_LOGGER) as runtime:
        config.max_workspace_size = 1 << 28

        with open(engine_path, 'rb') as model:
            if not parser.parse(model.read()):
                raise TypeError("Parser parse failed.")

        plan = builder.build_serialized_network(network, config)
        engine = runtime.deserialize_cuda_engine(plan)

C++

我用的C++ide是codeblocks,吐槽一句ubuntu18.04的codeblocks就是屑,动不动闪退

(1)设置

把鼠标放至你的文档树的根目录,也就是你的工程那儿,右键->build options...->出现如下界面,输入图示的
相关信息。!!!注意改成自己的路径。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
(2)构建engine的代码没什么改变。需注意的是,若用TensorRT 7保存的序列化结果文件,是无法用TensorRT 8直接反序列化加载运行的,需要重新用TensorRT 8来序列化并保存engine。其次,gLogger的构建代码略有改变,具体如下:

class Logger:public ILogger
{
    void log(Severity severity, const char* msg) noexcept // 即将原本的override改为noexcept就可以了,
    																										      // 具体为啥我也不知- -
    {
        // suppress info-level messages
        if(severity != Severity::kINFO)
            cout << msg << endl;
    }
}gLogger;

以上,若有问题,欢迎评论留言。

  • 7
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
好的,以下是在Ubuntu 18.04上安装CUDA 11.3的步骤: 1. 下载CUDA Toolkit 11.3 在NVIDIA官网上下载CUDA Toolkit 11.3,下载链接为:https://developer.nvidia.com/cuda-downloads 2. 安装依赖项 在终端中执行以下命令安装依赖项: ``` sudo apt-get update sudo apt-get install build-essential dkms freeglut3 freeglut3-dev libxi-dev libxmu-dev ``` 3. 禁用nouveau驱动 在终端中执行以下命令禁用nouveau驱动: ``` sudo vim /etc/modprobe.d/blacklist-nouveau.conf ``` 在文件中添加以下内容: ``` blacklist nouveau options nouveau modeset=0 ``` 保存并关闭文件后,在终端中执行以下命令使配置生效: ``` sudo update-initramfs -u ``` 4. 重启系统 在终端中执行以下命令重启系统: ``` sudo reboot ``` 5. 安装CUDA Toolkit 11.3 进入下载的CUDA Toolkit 11.3所在的目录,在终端中执行以下命令进行安装: ``` sudo sh cuda_11.3.0_<version>_linux.run ``` 其中,`<version>`是下载的CUDA Toolkit 11.3的版本号。在安装过程中,需要按照提示进行操作。如果需要将CUDA加入环境变量,可以选择在安装过程中设置。 6. 验证CUDA安装是否成功 在终端中执行以下命令验证CUDA安装是否成功: ``` nvcc -V ``` 如果输出类似于以下内容,则说明CUDA安装成功: ``` nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Mon_Jun_14_19:14:37_PDT_2021 Cuda compilation tools, release 11.3, V11.3.109 Build cuda_11.3.r11.3/compiler.29920130_0 ``` 希望这些步骤可以帮助您在Ubuntu 18.04上成功安装CUDA 11.3。如果您遇到任何问题,请随时向我提问。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值