简介:Darknet项目是github上的一个开源深度学习框架,用c语言编写,布置C/C++环境比较方便,这里是配置darknet遇到的一些问题。
- 项目地址:https://github.com/AlexeyAB/darknet
- 项目作者主页:https://pjreddie.com/darknet/
- darknet训练自己数据集:https://www.jianshu.com/p/476a6a3fc1a1
- darkNet yolo+vs2017+cuda10.1+win10配置(详细):https://www.jianshu.com/p/4c99ebf18731 or https://blog.csdn.net/qq_40622955/article/details/115543808
前人栽树后人乘凉,多谢开源大佬
1.SDK版本问题
vs2017 error MSB8036: The Windows SDK version 8.1 was not found.
SDK.PNG
- 解决方法:右键darknet选择属性-常规,Windows SDK版本换成10.0.XXX(默认是SDK8.1版本)
2.bin\bin\nvcc.exe路径问题
D:\vs2017pro\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.1.targets(762,9): error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" --use-local-env -ccbin "D:\vs2017pro\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64" -x cu -I\include -IC:\opencv_3.0\opencv\build\include -I..\..\include -I..\..\3rdparty\stb\include -I..\..\3rdparty\pthreads\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I\include -I\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DCUDNN_HALF -DCUDNN -D_CRTDBG_MAP_ALLOC -D_MBCS -D_TIMESPEC_DEFINED -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -DGPU -DWIN32 -DDEBUG -D_CONSOLE -D_LIB -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc141.pdb /FS /Zi /RTC1 /MDd " -o x64\Debug\convolutional_kernels.cu.obj "D:\mydoc\ML\yolo\darknet\src\convolutional_kernels.cu"”已退出,返回代码为 2。
1>D:\vs2017pro\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.1.targets(762,9): error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" --use-local-env -ccbin "D:\vs2017pro\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64" -x cu -I\include -IC:\opencv_3.0\opencv\build\include -I..\..\include -I..\..\3rdparty\stb\include -I..\..\3rdparty\pthreads\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I\include -I\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DCUDNN_HALF -DCUDNN -D_CRTDBG_MAP_ALLOC -D_MBCS -D_TIMESPEC_DEFINED -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -DGPU -DWIN32 -DDEBUG -D_CONSOLE -D_LIB -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc141.pdb /FS /Zi /RTC1 /MDd " -o x64\Debug\im2col_kernels.cu.obj "D:\mydoc\ML\yolo\darknet\src\im2col_kernels.cu"”已退出,返回代码为 2。
1>已完成生成项目“darknet.vcxproj”的操作 - 失败。
按照路径打开命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin" 发现下面没有\bin\nvcc.exe
image.png
-
解决方法,右键项目-属性-CUDA C/C++-common,去掉v10.1后面的bin即可。(注:直接复制bin到bin的目录下后面编译还是会出现其他问题)
cuda-bin.PNG
3.CUDA的库目录配置问题
1>D:/mydoc/ML/yolo/darknet/src/avgpool_layer_kernels.cu : fatal error C1083: 无法打开包括文件: “cuda_runtime.h”: No such file or directory
1>D:/mydoc/ML/yolo/darknet/src/crop_layer_kernels.cu : fatal error C1083: 无法打开包括文件: “cuda_runtime.h”: No such file or directory
1>D:\vs2017pro\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.1.targets(762,9): error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" --use-local-env -ccbin "D:\vs2017pro\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64" -x cu -I\include -IC:\opencv_3.0\opencv\build\include -I..\..\include -I..\..\3rdparty\stb\include -I..\..\3rdparty\pthreads\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I\include -I\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DCUDNN_HALF -DCUDNN -D_CRTDBG_MAP_ALLOC -D_MBCS -D_TIMESPEC_DEFINED -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -DGPU -DWIN32 -DDEBUG -D_CONSOLE -D_LIB -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc141.pdb /FS /Zi /RTC1 /MDd " -o x64\Debug\convolutional_kernels.cu.obj "D:\mydoc\ML\yolo\darknet\src\convolutional_kernels.cu"”已退出,返回代码为 2。
1>D:\vs2017pro\Common7\IDE\VC\VCTargets\BuildCustomizations\CUDA 10.1.targets(762,9): error MSB3721: 命令“"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\bin\nvcc.exe" -gencode=arch=compute_30,code=\"sm_30,compute_30\" -gencode=arch=compute_75,code=\"sm_75,compute_75\" --use-local-env -ccbin "D:\vs2017pro\VC\Tools\MSVC\14.16.27023\bin\HostX86\x64" -x cu -I\include -IC:\opencv_3.0\opencv\build\include -I..\..\include -I..\..\3rdparty\stb\include -I..\..\3rdparty\pthreads\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -I\include -I\include -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin\include" -G --keep-dir x64\Debug -maxrregcount=0 --machine 64 --compile -cudart static -g -DCUDNN_HALF -DCUDNN -D_CRTDBG_MAP_ALLOC -D_MBCS -D_TIMESPEC_DEFINED -D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_CRT_RAND_S -DGPU -DWIN32 -DDEBUG -D_CONSOLE -D_LIB -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Fdx64\Debug\vc141.pdb /FS /Zi /RTC1 /MDd " -o x64\Debug\im2col_kernels.cu.obj "D:\mydoc\ML\yolo\darknet\src\im2col_kernels.cu"”已退出,返回代码为 2。
1>已完成生成项目“darknet.vcxproj”的操作 - 失败。
-
解决方法:右键属性-vc++目录-包含目录,添加CUDA安装路径下的include
cuda-include.PNG
4.MSB372错误
msb372错误.png这个错误是因为cuda版本不对应的问题,原项目用的cuda版本是11.1,而我的是10.1。解决方法:打开darknet.vcxproj(就在darknet.sln同级目录下)修改
<CudaCompile>
<TargetMachinePlatform>64</TargetMachinePlatform>
<CodeGeneration>compute_35,sm_35;compute_86,sm_86</CodeGeneration>
</CudaCompile>
改为
<CudaCompile>
<TargetMachinePlatform>64</TargetMachinePlatform>
<CodeGeneration>compute_35,sm_35;compute_75,sm_75</CodeGeneration>
</CudaCompile>
(不同版本的cuda和这里的compute_xx,sm_xx的对应关系不知道是怎么对应的,如果有知道的小伙伴还请赐教)
网友评论