目录
前言.1
前言.2
前言.3
解决无法打开包括文件:”math.h”问题
安装并配置cl.exe
检测是否可以正常使用
总结
前言.1
因为学习需要,我需要跑DETR以及一干优化DETR的模型。
原代码是在linux环境下开发的,而我懒得配linux环境(且不熟且懒得学QAQ),就打算只在windows系统下运行。
DETR跑的很顺利让我有了非常大的信心,我以为我就能就此无痛跑Deformable-DETR的时候——
它说:”No moduld name MultiScaleDeformableAttention’
!!!∑(゚Д゚ノ)ノ
于是我去仔细阅读了README,发现除了安装必要的东西,还需要编译一个make.sh文件才能正常运行
### Compiling CUDA operators```bashcd ./models/opssh ./make.sh# unit test (should see all checking is True)python test.py```
于是我cd到这个文件夹,输入sh make.sh后,一个熟悉的报错出现了:
这个报错在我之前试图运行Yolov5,下载pycocotools的时候也有出现,当时尝试解决了一天还是没能解决成功就放弃了。
但此时的我非彼时的我,怎能轻言放弃!
遂开始了痛苦的配置环节……
(;′⌒`)
前言.2
因为之前需要用到C打比赛的缘故,所以本人电脑里已经装有Microsoft Visual Studio和其他C编译环境了。
所以在此用的VS2019来进行相关的配置~
(不过后期我为了解决无法理解的报错我还是把已经有的C环境全部删了个干净╥﹏╥)
前言.3
MultiScaleDeformableAttention需要用到GPU且要求cuda版本为10.2,在进行下续安装前请一定要注意版本是否正确!
解决无法打开包括文件:”math.h”问题
这个问题经各方查证,与环境变量配置有关。
编译make.sh后,需要用到cl.exe来进行编译c/cpp文件,而cl.exe是Microsoft C/C++编译器。
现在来看看这个报错,它给了一个include文件夹,说里面没有math.h,(经过无数次尝试后)很明显,是我们没有明确的告诉它该用到的标头/库文件在哪!
也就是说对于cl.exe,现在我们使用命令行运行它,但它所需要的配置我们还没有配置好。
需要进行以下的步骤:
①安装并配置cl.exe相关环境。
②再编译一次make.sh。
安装并配置cl.exe
在这里因为前言.2里面提到的背景,我曾单独试过安装配置VS2022、VS2019、VS2017、VS2015都没能成功。现在想想,原因应该出在我之前的环境太错综复杂了,我自己都不知道C到底在用哪个标头/库 ̄▽ ̄,于是我就干脆卸了个干净,再来配置。
这一部分分为两个步骤:
①使用VS下载安装相关文件
②配置环境变量
使用VS下载安装相关文件
我配置过程中使用的是VS2019,下载链接如下:
Visual Studio 较旧的下载 – 2019、2017、2015 和以前的版本
然后咱们戳开下载好的文件:
在经过一阵等待后,就进入了Visual Studio Installer界面:
戳进去后,我们把使用C++的桌面开发勾了。
再点开单个组件,搜索build,把适用于v142的C++ Clang-cl生成工具(x64/x86)也勾了。
我下载时大约需要6~8G这样的内存( ̄. ̄)真是庞然大物啊……
可以在安装位置中更改下载位置,在这里我下到了C盘。
配置环境变量
VS下载结束以后,我们还没能通过命令行使用cl.exe,需要进行一顿环境变量的配。
ps. x64-64位 x86-32位
首先找到方才安装的cl.exe的位置,比如我的在:
路经供参考C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\Hostx64\x64
将这个路径复制,在环境变量的用户变量中,新建变量Path,把路径复制进去:
保存后打开命令面板(以管理员模式),输入cl.exe,出现以下则第一步配置好了。
但是现在cl还不知道它用什么标头/库来编译程序,于是我们就要为它配置INCLUDE和LIB两个用户变量告诉它。
在用户变量中,新建INCLUDE,将下面几条路径复制进去:
路经供参考C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt
在用户变量中,新建LIB,将下面几条路径复制进去:
路经供参考C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt_enclave\x64
配置完后,我们随意编写一段经典的Hello world,将其保存为cpp文件:
#include int main(){ std::cout << "Hello World" << std::endl; return 0;}// 官方用例
然后cd到该文件的地方,用cl yes.cpp进行编译,出现以下回复:
则我们配置完成啦!
检测是否可以正常使用
现在我们可以来试试是否可以使用了。
在此以下载安装pycocotools为例先探探路。
我使用的anaconda配置的虚拟环境(在这里我随机使用的没有安装过pycocotools的MSI-FCN),安装前我先进入了这个虚拟环境,下载源也已提前替换为国内的镜像源。
输入pip install pycocotools
安装成功:
于是我们再cd到编译make.sh的地方,输入sh make.sh,就可以发现它可以安装成功啦!
总结
整理发现,这次配置吃了不理解我自己的电脑环境的亏,所以回头看看还是觉得有好多莫名其妙的报错其实在一开始就可以解决的……
但我却花了好几天……
跨度一个多月……
(;′⌒`)
我还是太菜了……
o(╥﹏╥)o
不过能靠自己查资料配置出来,也算是一种进步吧(T_T)
写的有些杂乱,仅供参考!
-ysummer 20220910