关于correlation_cuda

文章讲述了作者在复现UAVMOT工作中的代码时遇到noModule错误,涉及定位文件、修改GPU架构代码、调整torch和CUDA版本,以及解决编译问题的过程,希望对读者解决类似问题提供参考。
摘要由CSDN通过智能技术生成

二编,于2024.5.16

我是在复现工作UAVMOT中遇到该问题,现在已经换了新的方向,并未复现成功。祝大家科研顺利。


在复现代码时出现了noModule的相关报错,定位到所在文件夹下后,修改代码并进行安装操作。

1. 定位文件夹

因为我的文件是包含在项目内的,所以是下图的文件结构,重点是找到correlation_cuda.cc这几个文件的所在位置。

2. 修改代码

2.1 确认自己的GPU架构代码

代码如下:

import torch

properties = torch.cuda.get_device_properties(0)
print(properties)

在返回的信息中,“major”和“minor”属性组合起来形成了 GPU 的架构代码。我的是86

2.2 修改代码

在终端将操作位置定位到文件夹内后,查看setup.py文件内容,根据自己的电脑配置修改nvcc_args部分:

nvcc_args = [
    # '-gencode', 'arch=compute_50,code=sm_50',
    # '-gencode', 'arch=compute_52,code=sm_52',
    # '-gencode', 'arch=compute_60,code=sm_60',
    # '-gencode', 'arch=compute_61,code=sm_61',
    # '-gencode', 'arch=compute_70,code=sm_70',
    # '-gencode', 'arch=compute_70,code=compute_70'
    '-gencode', 'arch=compute_86,code=sm_86',
    '-gencode', 'arch=compute_86,code=compute_86'
]

其中,注释掉的是原文件内容,我根据自己的GPU架构代码进行了修改。

2.3 可能报错1

我的代码出现了如下报错:

FAILED: <HOME>/lib/models/networks/correlation_package/build/temp.linux-x86_64-cpython-37/correlation_cuda_kernel.o 

/usr/local/cuda/bin/nvcc --generate-dependencies-with-compile --dependency-output 
/data1/szx/code/MCMOT-ByteTrack/lib/models/networks/correlation_package/build/temp.linux-
x86_64-cpython-37/correlation_cuda_kernel.o.d -
I<HOME>/miniconda3/envs/mcmot/lib/python3.7/site-packages/torch/include -
I<HOME>/miniconda3/envs/mcmot/lib/python3.7/site-
packages/torch/include/torch/csrc/api/include -
I<HOME>/miniconda3/envs/mcmot/lib/python3.7/site-packages/torch/include/TH -
I<HOME>/miniconda3/envs/mcmot/lib/python3.7/site-packages/torch/include/THC -
I/usr/local/cuda/include -I<HOME>/miniconda3/envs/mcmot/include/python3.7m -c -c 
<HOME>/lib/models/networks/correlation_package/correlation_cuda_kernel.cu -o 
<HOME>/lib/models/networks/correlation_package/build/temp.linux-x86_64-cpython-
37/correlation_cuda_kernel.o -D__CUDA_NO_HALF_OPERATORS__ -D__CUDA_NO_HALF_CONVERSIONS__ -
D__CUDA_NO_BFLOAT16_CONVERSIONS__ -D__CUDA_NO_HALF2_OPERATORS__ --expt-relaxed-constexpr --
compiler-options ''"'"'-fPIC'"'"'' -gencode arch=compute_50,code=sm_50 -gencode 
arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode 
arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode 
arch=compute_70,code=compute_70-gencode arch=compute_86,code=sm_86 -gencode 
arch=compute_86,code=compute_86 -DTORCH_API_INCLUDE_EXTENSION_H '-
DPYBIND11_COMPILER_TYPE="_gcc"' '-DPYBIND11_STDLIB="_libstdcpp"' '-
DPYBIND11_BUILD_ABI="_cxxabi1011"' -DTORCH_EXTENSION_NAME=correlation_cuda -
D_GLIBCXX_USE_CXX11_ABI=0 -std=c++14

nvcc fatal   : Unsupported gpu architecture 'compute_70-gencode'

可以看到提示了nvcc_args的相关内容,同时第二段最后出现了一个字段,“-std=c++14”,于是我对setup文件代码进行了修改:

# cxx_args = ['-std=c++11']
cxx_args = ['-std=c++14']

2.4 可能问题2

确认自己的torch版本,我最后安装的是:

torch==1.8.2 torchvision==0.9.2 torchaudio==0.8.2 CUDA==11.1

3. 进行安装操作

在进行了上述修改后在终端进行操作:

cd <correlation_cude_path>
python3 setup.py build install

<correlation_cuda_path>指的是所在文件夹,对我来说就是correlation_package这个文件夹下。

4. 结束

感觉真的很难用,但是祝大家都遇到很少很简单的报错。

这篇文章是我放弃correlation_cuda又再次遇到之后解决掉问题安装成功之后的产物,祝大家好运!

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值