30系显卡怎么配置rangenet++和SuMa++

30系显卡怎么配置rangenet++和SuMa++

  • 说在前面
  • NVIDIA driver
  • CUDA 11.1
  • cudnn
  • TensorRT 7.2.3
    • rangenet++安装 && debug && build
      • rangenet_lib/cmake/tensorrt-config.camke
      • rangenet_lib/include/netTensorRT.hpp
      • rangenet_lib/src/netTensorRT.hpp

说在前面

相信做SLAM的或多或少都听说过大名顶顶的SuMa++,可以说SuMa++是目前为止将语义信息用到激光SLAM中做好的的例子之一了,这里就不介绍SuMa++这个方法的主要工作了,感兴趣的朋友可以去我的另一篇博客看看。

为什么要写这样一篇博客呢?之前在公司使用的是1650的显卡,配置的环境是Ubuntu 18.04+NVIDIA driver 455+CUDA 10.1+cudnn 7.6.5+TensorRT 5.0.1.5,用GTX 1650的朋友可以直接照抄,都是我多次重装系统踩坑测试出来的。

但问题是最近回学校了,而且换了一台新机器AMD 5800H+nvidia 3060,我已经做好跑任何程序都不会超过一秒的准备了,但是没想到新环境的配置会如此痛苦,此次采坑共花费一周时间,重装系统近10次。希望看到的朋友点个赞。

NVIDIA driver

CUDA 11.1

这里是最坑的地方,最开始不知道30系显卡只能使用CUDA 11及以上版本,我在CUDA 10的多个版本都试了一遍 ,到最后一步TensorRT都能安装成功,但是就是跑不出结果,调试代码发现程序卡在buildCUDAEngine这一行,不知是什么原因。后经高人指点,高人说他用PyTorch从去年底开始就要求30系显卡全部使用CUDA 11,我突然意识到我应该试试CUDA 11。

CUDA 11的安装也很简单,从官网的下载入口下载即可(没有科学上网的话可能会下载很慢),选择自己对应的版本,我的是Linux -> x86_64 -> Ubuntu -> 18.04 -> deb (local),注意这里推荐使用deb方式安装,按照下载链接下方的步骤一步一步安装,貌似使用runfile的方式安装的话,会缺少几个补丁,在安装TensorRT的时候会很麻烦,需要单独下载这几个补丁来安装。

cudnn

cudnn选择的版本是8.1.0,同样从官网的下载入口,选择Download cuDNN v8.1.0 (January 26th, 2021), for CUDA 11.0,11.1 and 11.2,下载源码手动安装,选择cuDNN Library for Linux (x86_64)。具体安装方式是将文件解压之后复制到系统路径下,然后给文件权限,可以参照这篇博客Ubuntu18.04安装CUDA10、CUDNN

TensorRT 7.2.3

rangenet++的作者是推荐使用TensorRT 5.1.5的,并且测试啥的都是在这个版本上进行的。但是我们已经安装了CUDA 11.1,TensorRT 5.1.5是没办法在CUDA 11.1上面跑的,所以我选择了一个最早能支持CUDA 11.1的TensorRT 7.2.3,但是既然和原作者的版本不一致,TensoRT到时候和rangenet++适配的时候,免不了要修改rangenet++的代码,这个要做好心里准备。

TensorRT 7.2.3的安装也很简单,从官方下载入口选择TensorRT 7.2.3 for Ubuntu 18.04 and CUDA 11.1 & 11.2 DEB local repo package进行安装。安装方法可以照抄官方文档。
30系显卡怎么配置rangenet++和SuMa++_第1张图片
需要注意的是使用pip安装依赖的时候可以同时pip和pip3都安装(我使用的都是pip3),一招解决不必要的问题。

测试是否安装成功,以及能否跑tensorrt。
在终端输入dpkg -l | grep TensorRT,输出如图。

30系显卡怎么配置rangenet++和SuMa++_第2张图片

终端依次输入python3 import tensorrt tensorrt.__version__,如果能像下面一样成功显示版本号,则安装成功。

30系显卡怎么配置rangenet++和SuMa++_第3张图片
这一步完成只能说明TensorRT和python的依赖安装成功,并不能说明TensoRT就能使用了,需要再测试一下。安装成功之后会在/usr/local路径下面有一个tensorrt的文件夹,复制出来,进入到sample文件夹下,在终端输入命令make,这一步会在/bin中生成一些可执行文件,运行./sample_mnist,如果能成功辨别手写数字,则成功。

30系显卡怎么配置rangenet++和SuMa++_第4张图片

rangenet++安装 && debug && build

先从github上把源代码Git下来,readme文档里面有Git的方式。

30系显卡怎么配置rangenet++和SuMa++_第5张图片
在编译之前需要修改基础源代码,每一处修改都是我摸索出来的,具体理由都是看编译报错的提示来的。

rangenet_lib/cmake/tensorrt-config.camke

具体修改方式如下图,注释的地方是源代码。
30系显卡怎么配置rangenet++和SuMa++_第6张图片

rangenet_lib/include/netTensorRT.hpp

把第十一行#include 注释掉。
30系显卡怎么配置rangenet++和SuMa++_第7张图片

rangenet_lib/src/netTensorRT.hpp

  1. 450+行处,如下修改。

30系显卡怎么配置rangenet++和SuMa++_第8张图片

  1. 500+行处,如下修改。

30系显卡怎么配置rangenet++和SuMa++_第9张图片

  1. 530+行处,如下修改。

在这里插入图片描述

至此,便宜就能完成了,尽管有很多warning,但是勉强能运行了,结果也都是正确的。

30系显卡怎么配置rangenet++和SuMa++_第10张图片
按照github上的readme文件的运行,就能看到结果了!可以愉快地使用rangenet++了,SuMa++的配置一步一步来就OK,有人想看我再写。

30系显卡怎么配置rangenet++和SuMa++_第11张图片

你可能感兴趣的:(自动驾驶,深度学习,pytorch)