搭建Windows10 + 1050Ti + CUDA11.0 + VS2017 + YOLO时,遇到的三个问题

搭建过程可以参考这篇博文,很详细https://blog.csdn.net/KID_yuan/article/details/88380269。本文只是记录搭建之后,编译、执行darknet所遇到的问题。

1. 无法找到CUDA 11.0.props/CUDA 11.0.targets

参考https://www..com/article/86001369806/

第一种方式打开darknet.vcxproj,将CUDA 10.0替换为11.0 。

第二种则是手动复制nVidia解压出的文件,但cuda11.0的文件路径与链接给出的略有不同搭建Windows10 + 1050Ti + CUDA11.0 + VS2017 + YOLO时,遇到的三个问题

C:\Users\username\AppData\Local\Temp\CUDA\visual_studio_integration\CUDAVisualStudioIntegration\extras\visual_studio_integration\MSBuildExtensions

将这个文件夹中的.props/.targets文件复制到报错提示的位置。搭建Windows10 + 1050Ti + CUDA11.0 + VS2017 + YOLO时,遇到的三个问题

2.msb3721错误,返回代码为1

 这个问题有点搞,根据原作者建议,非CUDA 10.0,则需要点进属性→CUDA C/C++→Device→Code Generation,删掉compute_75,sm_75。但报错输出点开,可以看到 Unsupported gpu architecture  ‘compute_30’。所以我删掉的是compute_30,sm_30,并编译成功生成了exe。

搭建Windows10 + 1050Ti + CUDA11.0 + VS2017 + YOLO时,遇到的三个问题

3. CUDA Error: no kernel image is available for execution on the device.

在生成exe后,跑起来又出错了。一查这个error,还是CUDA_ARCH的问题,根据这个链接,1050ti计算力⑧太行,把compute_75,sm_75改成compute_52,sm_52,终于成功运行啦。

搭建Windows10 + 1050Ti + CUDA11.0 + VS2017 + YOLO时,遇到的三个问题

总结:

配置YOLO,得考虑各个软硬件的版本。

值得一提的是,后续我把Code Generation这项全删掉,它会默认为compute_52,sm_52。而尝试70、75、80等值之后,这些值都能够通过编译,但是在执行exe的时候会报错,所以这个值的设定是依赖与显卡本身的。分享一个对应关系Matching SM architectures (CUDA arch and CUDA gencode) for various NVIDIA cards,根据这个对应关系,1050ti最大能设置成compute_61,sm_61,这也符合实际操作的结论。不过为什么无法保留compute_30,sm_30,我猜想和CUDA版本有关系,之前出现过删除更小值的情况(比如安装CUDA9.0的时候,删除关于20和21的项