二编,于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又再次遇到之后解决掉问题安装成功之后的产物,祝大家好运!