windows使用cmake配置libtorch到vs 2019并使用的那些坑

windows使用cmake配置libtorch到vs 2019并使用的那些坑

写在前面

这次的任务是将retinanet的预测部分用C++实现,所以有了这次配置libtorch的事;

这是一个过程的记录,可以直接从:此处看起

提醒:windows环境下部署libtorch不要用release,直接使用debug,(个人观点)

一、下载cmake;

官网下载即可,没什么可说的;

二、配置libtorch到vs

可参照下面的博客:https://blog.csdn.net/qq_35608277/article/details/89817027

第一步:使用vs 2019创建一个项目;

image.png
项目.cpp初始文件内容:

#include  // One-stop header.
#include 
#include 

int main(int argc, const char* argv[]) {
     
	torch::Tensor tensor = torch::rand({
     3,3});
    std::cout << tensor < std::endl;

}

第二步,新建CMakelists.txt文件,和.cpp文件在同一个目录下,并建立一个build文件夹;


windows使用cmake配置libtorch到vs 2019并使用的那些坑_第1张图片

第三步,编写CMakelists.txt内容:

cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
project(ConsoleApplication1)

find_package(Torch REQUIRED)

add_executable(ConsoleApplication1 ConsoleApplication1.cpp)
target_link_libraries(ConsoleApplication1 "${TORCH_LIBRARIES}")
set_property(TARGET ConsoleApplication1 PROPERTY CXX_STANDARD 14)

~~

第四步,打开cmake-gui:

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第2张图片
然后填写标红的两处,第一个source code就是放CMakelists.txt的目录,
第二个build the binaries,选择新建的bulid文件夹

第五步,点击Configure;

情况一:无弹窗出现,显示Configuring done,即使下方出现红字warning也不用管,再点击Generate即可;

情况二:出现弹窗,显示有错误;改正错误,下面提供我在使用中的一些错误,供参考;

三、错误

错误:出现无法找到toch、cuda、cudnn的DIR的问题;

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第3张图片类似这样(当然这个截图实际只是warning)
解决方案:手动复制DIR到cmake上;

1.对于torch,就是libtorch下的文件夹,

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第4张图片

2.对于cuda,

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第5张图片该DIR的目录地址即为这个(标蓝的行)
但是可能你发现你的目录了并没有这个GPU Computing Toolkit,那么你需要下载CUDA;
下载方式:进入官网下载即可;

3.对于cudnn,(下载:绕过官方注册,安装)

一般是没有下载,所以仍然需要去官网下载,对于这个下载官网要求注册账户,下面是不注册账户的方式:
1.进入官网的下载选项,选择自己需要的下载项,网址:https://developer.nvidia.com/rdp/cudnn-archive
2.右键使用迅雷下(或者使用其他的下载器)
windows使用cmake配置libtorch到vs 2019并使用的那些坑_第6张图片
该方法来自于博客:https://blog.csdn.net/weixin_40392957/article/details/80207366
然后对于压缩包解压,对于文件夹中的文件,将每个文件(注意是文件,不是文件夹)复制到CUDA的同名文件夹下:
windows使用cmake配置libtorch到vs 2019并使用的那些坑_第7张图片
windows使用cmake配置libtorch到vs 2019并使用的那些坑_第8张图片
安装方式来自于博客:https://blog.csdn.net/sinat_23619409/article/details/84202651

其他错误:忘记保存了。。。

四、使用libtorch

1.打开build文件夹,打开如下文件:

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第9张图片
即可发现已经配置成功,头文件不再显示错误:
image.png

2.但是还是有错误: “初始化”: 无法从“torch::jit::script::Module”转换为“std::shared_ptrtorch::jit::script::Module”

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第10张图片

错误原因:std::shared_ptr是libtorch测试版本使用的变量类型,现在已经变更

更改:

std::shared_ptr<torch::jit::script::Module> module = torch::jit::load(argv[1]);

更改为:

torch::jit::script::Module module = torch::jit::load(argv[1]);

参考博客:https://blog.csdn.net/qq_33507306/article/details/104427134

3.错误:windows使用cmake配置libtorch到vs 2019并使用的那些坑_第11张图片


上述的内容对于下面操作并没有太大帮助


五、真正的坑:官方提供的libtorch文档的release版本只是针对linux,所以使用windows系统的情况下需要下载debug版,而很大的网上教程都是使用release来调试,所以会出现很多莫名奇妙的错误,只要使用debug来完成就可以了。

使用vs的项目属性来配置libtorch:

1.将debug编译器改为x64模式;

image.png

2.打开项目属性:

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第12张图片

3.配置vc++目录的包含目录和库目录:(根据自己的libtorch的实际目录来配置)

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第13张图片windows使用cmake配置libtorch到vs 2019并使用的那些坑_第14张图片

4.配置链接器——输入选项中的附加依赖项:

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第15张图片
建议将libtorch的lib目录下的所有.lib文件都加入:

torch.lib
c10.lib
c10_cuda.lib
caffe2_module_test_dynamic.lib
caffe2_nvrtc.lib
clog.lib
cpuinfo.lib
libprotobufd.lib
libprotobuf-lited.lib
libprotocd.lib

5.应用并确定,然后再次运行,可能会出现缺少某个.dll文件,可以直接把lib中的所有.dll文件直接复制到main.cpp同一目录下,或者提示缺哪个复制哪个;

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第16张图片

6.再次运行,即可看到结果:

windows使用cmake配置libtorch到vs 2019并使用的那些坑_第17张图片

你可能感兴趣的:(c++)