编译带CUDA支持的DCNv2时出现THC.h文件缺失错误求助
解决DCNv2编译时找不到THC.h的问题
核心原因
报错/THC.h: No such file or directory是因为编译器无法定位PyTorch内置的CUDA头文件路径,和CUDA与GCC的兼容性无关。
解决步骤
1. 确认THC.h的实际位置
先通过命令找到PyTorch中THC.h的具体路径:
find /usr/lib/python3.6/site-packages/torch -name "THC.h" # 若你是用pip安装的PyTorch,替换路径为/usr/local/lib/python3.6/site-packages/torch后重新执行
执行后会得到类似/usr/lib/python3.6/site-packages/torch/include/THC/THC.h的结果,记下该路径的父目录(即/usr/lib/python3.6/site-packages/torch/include)。
2. 修改DCNv2的setup.py文件
打开DCNv2项目根目录下的setup.py,找到include_dirs配置项,将刚才获取的PyTorch include路径添加进去:
include_dirs = [ os.path.join(os.path.dirname(__file__), 'include'), "/usr/lib/python3.6/site-packages/torch/include", # 替换成你实际找到的路径 ]
也可以用更通用的写法,让PyTorch自动获取路径:
include_dirs = [ os.path.join(os.path.dirname(__file__), 'include'), torch.utils.cpp_extension.include_paths()[0], ]
3. 临时设置环境变量(可选)
如果不想修改setup.py,可在编译前设置CPATH环境变量,让编译器自动识别头文件路径:
export CPATH=$CPATH:/usr/lib/python3.6/site-packages/torch/include # 替换成你实际找到的路径
之后再执行编译命令python setup.py build develop。
4. Arch Linux额外适配
若上述方法无效,可尝试将CUDA的include路径也加入环境变量:
export CPATH=$CPATH:/usr/local/cuda-10.0/include
内容的提问来源于stack exchange,提问作者Smeets
相关产品推荐
相关产品推荐

