代码环境移植问题

从P100将CenterNet移植到P4上运行,遇到一些问题,解决起来很棘手,记录下来。

 

P100环境:

CUDA 10.0

gcc版本 7.3.0

pytorch 1.0.1

 

P4原始环境:

CUDA 9.0

gcc版本 4.8.5

pytorch 1.1.0

 

移植步骤:

  1. 代码拷贝
  2. 数据移植
  3. 配环境

 

 

遇到的问题及解决方法:

1.运行代码时DCNv2报错:

Installation issue: undefined symbol: __cudaPopCallConfiguration · Issue #19 · rusty1s/pytorch_scatter

原因:编译DCNv2时的cuda版本和编译pytorch的时候不一样

解决方法:不能直接用移植的代码,重新下载CenterNet中DCNv2库。

 

2.运行代码的时候DCNv2报错如下:

PyTorch no longer supports this GPU because it is too old.

原因:pytorch的版本和CUDA版本不对应

解决方法:需要在安装pytorch的时候确认版本和cuda版本对应,必要的话使用pytorch官网给出的命令。如果cuda环境有变化,需要重新安装pytorch。可以用 'torch.cuda.is_available()' 确定cuda版本的pytorch是否安装正确。

还有一种方法是升级驱动。

 

3.运行时报错Segmentation fault

原因:使用faulthandler调试加打印输出,发现问题出在DCNv2的库中,但是库编译时没有报错。

解决方法:一开始用的解决方法是,从原作者DCNv2库中下载,因为pytorch1.1.0的变化,改变其中一行代码,重新编译。编译未报错,但运行仍有问题。

后来发现是gcc有问题,gcc在4.9.0以上才能正确编译pytorch,而以下的版本编译不会报错,但是使用有问题,因此升级gcc到4.9.4版本。

 

4.运行代码时报错如下:

undefined symbol: _ZN3c105ErrorC1 ENS_14SourceLocationERKSs

原因:pytoch中 _GLIBCXX_USE_CXX11_ABI1,但是c++编译是 _GLIBCXX_USE_CXX11_ABI0,因此对不上

实际原因是pytorch编译时候用到的gcc与代码中c++库用到的gcc版本不同

解决方法

卸载conda,重新安装conda,此时conda环境用到的gcc与c++编译库时版本一样。

 

问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值