记录一下ops_dcnv3安装记录,博主主要将yolov8引入ops_dcnv3时的遇到的编译问题
1 准备工具:ops_dcnv3:InternImage/detection at master · OpenGVLab/InternImage (github.com)
将此文件中的ops_dcnv3文件夹复制到需要编译的项目文件中。
Vs生成工具:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux (microsoft.com)
VS下载
下载打开后,点“继续”:
进到主页面,按下图选择:
等待安装完成后关闭即可
OPS_Dcnv3编译
博主已将ops_dcnv3移动到需要编译的文件夹下
打开终端,输入以下指令:
python setup.py build install
若天时地利人和,且已经成功配置了CUDA及VS,此处应该会编译成功。(成功的可以撤退了~~~)
然而,博主安装时困难重重,下面我将遇到的所有问题及解决方案分享给集美、集帅们~
问题及解决方案
1 RuntimeError:The detected CUDA version(12.0) mismatches the version that was used to compile PyTorch(11.8).
解决:将本地CUDA版本切换为与虚拟环境中Pytorch匹配的CUDA11.8版本。安装多版本CUDA可参考:Windows10下多版本CUDA的安装与切换 超详细教程_cuda版本-CSDN博客
多说一句,选择多版本安装CUDAToolkit时,根据以上教程、若安装失败,取消勾选以下选项,再次尝试安装。
总结:此错误应该是本地CUDA版本与虚拟环境中的torch(GPU版本)的CUDA版本不匹配所以发的错误,在查阅大量资料后,得出结论,若本地CUDA版本与虚拟环境中的CUDA版本未跨越大版本(均为11.x),应该不会报这个错误。若有理解错误,欢迎指正交流!!!
2 error: command 'F:\\Program Files\\NVDIA GPU Computing Toolkit\\CUDA\\V11.8\\bin\\nvcc.exe' failed with exit code 2
实际报错信息如下:
解决方案:打开CUDA安装路径中的crt文件夹,选择host_config.h文件,以博主为例,打开以下地址:
"F:\Program Files\NVDIA GPU Computing Toolkit\CUDA\V11.8\include\crt\host_config.h"
若忘记安装地址,可以去环境变量➡系统变量➡Path中寻找带CUDA字样的文件地址
打开Host_config.h后,跳转到151行代码,更改为以下内容:
#if _MSC_VER < 1910 || _MSC_VER >= 1940 /更改前
#if _MSC_VER < 1910 || _MSC_VER >= 2000 /更改后
"_MSC_VER"值越大越好,一劳永逸。具体原理可以参考以下链接:
3 error: command 'F:\\Program Files\\NVDIA GPU Computing Toolkit\\CUDA\\V11.8\\bin\\nvcc.exe' failed with exit code 1
分析打印的错误信息,可以发现实际错误如下图所示:
还是和以上类似,也是版本问题,根据报错提示,寻找VS生成工具文件夹路径下的yvals_core.h文件,定位到887行:
#if __CUDACC_VER_MAJOR__ < 12 || (__CUDACC_VER_MAJOR__ == 12 && __CUDACC_VER_MINOR__ < 4)///更改前
#if __CUDACC_VER_MAJOR__ < 11 || (__CUDACC_VER_MAJOR__ == 12 && __CUDACC_VER_MINOR__ < 4)///更改后
如果你的CUDA版本为10.X,则应该修改为
#if __CUDACC_VER_MAJOR__ < 10 || (__CUDACC_VER_MAJOR__ == 12 && __CUDACC_VER_MINOR__ < 4)
以此类推...
解决完上述问题后,博主再次尝试编译,终于
在使用Conda list查看,发现dcnv3 1.0已成功导入到虚拟环境中。
总结
博主问题主要还是由于版本不对应引起的问题(环境管理的重要性),如果帮到大家,希望给我一个免费的赞哦,有任何问题可以评论区留言讨论,若有任何错误,欢迎批评指正!!!