superpoint移植vins-fusion中使用libtorch遇到的各种问题汇总

这不部分实在踩了很多坑,花了两天多算是debug用时最长的一次了。网上的内容太杂,资料很难找。这里整理一下遇到的问题。

一.cuda与cudnn

首先是nvcc --version报错 与 nvidia-smi报错

nvcc按照报错提示 使用sudo apt-get install nvidia-cuda-toolkit安装后,可以正常显示,这里应该是自动下载了10.1的版本

这里安装非常慢,换了几个源都没有效果,最后选择去linux软件与更新换成最佳服务器后终于解决

nvidia-smi报错则是最后也没有解决

nvidia-smi报错无法解决,这就导致我无法查看我cuda最高支持的版本是什么。

因此后续出现的版本不兼容问题,我就无法使用cuda 10.1以外的版本进行测试。

按照上述内容安装好了cuda,就可以安装cudnn了

这里推荐去https://developer.nvidia.com/rdp/cudnn-archive寻找与自己cuda匹配的版本下载

解压后按照解决cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2无法查看cudnn版本的问题_cudnn.h没有版本信息-CSDN博客中提到的方法进行复制

值得一提的是我这里在复制的时候会报错,没有找到路径

但是使用sudo nautilus打开一个有管理员权限的文件管理器,然后去/usr/local中直接新建lib64和include就能够复制了。

二.libtorch解压与vins-fusion的编译

安装libtorch是个大坑,一定要选择和自己cuda版本对应的libtorch安装

参考了pytorch官网上下载libtorch各个版本的url_libtorch官网-CSDN博客

其他资料中的也可以,这里我最后下载的是libtorch-shared-with-deps-1.7.0+cu101

这个解压完了是一个libtorch文件夹

安装好了cuda和cudnn,我的superpoint移植vins-fusion的代码也写完了,接下来就是编译了

这里报错信息很长

主要的error是‘Tensor’ is ambiguous

‘TensorExample’ was not declared in this scope

‘TensorExample’ does not name a type

template argument 1 is invalid

这种,这些报错全部都是namespace的问题,不知道libtorch中的torch跟哪个包里的重名了,因此这里只需要根据红色的报错信息一个一个改,在所有的Torch前面加上torch::

都改成torch::Torch

主要改的位置是

/home/u20/3rdparty/libtorch/include/torch/csrc/api/include/torch/data/samplers/random.h:51:3

/home/u20/3rdparty/libtorch/include/torch/csrc/api/include/torch/data/example.h:11:27:两个

/home/u20/3rdparty/libtorch/include/torch/csrc/api/include/torch/data/example.h:53:56

再往后的这些都是并发症,改完前面就可以不用管了

改完之后重新编译

此时如果选择的错误的版本会出现大量的ros报错

undefined reference to `ros::console::initializeLogLocation

首先我尝试了YOLOv4在ROS-Melodic上的部署-libtorch(附源码,非Darknet)_移植yolov4至ros-CSDN博客中提到的方法

完成这个设置之后确实不报ros问题了。

这个问题一开始我以为是cmake的问题,后来发现就是libtorch版本问题

这里测试了很多版本

其中1.7.1出现了 CMakeLists.txt:7 (find_package)

-- Configuring incomplete, errors occurred!的问题,根据指定的路径找不到包

更改到正确的版本后,这里选择了1.7.0重新编译

接下来出现了so文件缺失的错误,在/usr/local/cuda/lib64中缺失libnvToolEXT和libcudart

这里选择整个电脑搜索,最后在usr/lib/x86_64-linux-gnu中找到,复制到相应的文件夹,这里也建议使用sudo nautilus打开之后去复制

这几个so文件还有链接的问题,要先复制so.1.0.0再去复制so.1最后复制so,不然会断链接

补上缺失的文件后再次编译,如果出现c10的错误,也是版本问题,建议换版本,终于编译通过

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值