环境搭建:win10上libtorch c++部署_alex1801的博客-CSDN博客

1、引用关系

以vs下libtorch引用CUDA为例:

包含目录:

libtorch_dir/include
libtorch_dir/include/torch/csrc/api/include

库目录:

libtorch_dir/lib

动态库:

c10.lib
c10_cuda.lib
torch_cpu.lib
torch_cuda.lib

测试代码:

#include<iostream>
#include<torch/script.h>
#include <torch/torch.h> # cuda相关函数头文件
#include<memory>

int main()
{
	std::cout <<"cuda::is_available():" << torch::cuda::is_available() << std::endl;
	system("pause");
}

        直接运行,输出: “cuda::is_available(): 0”,显卡未调用起来。

        Windows10系统下使用LibTorch 1.5、1.6,使用Visual Studio进行C++开发时,Torch::cuda::is_available()返回值为0(使用cmake来构建工程,是可以正常编译和执行)。

解决方法:

        1)使用VS2017及以上版本;

        2)windows上装的cuda版本需要与下载的libtorch的cuda版本相对应;

        3)在“属性 –> 链接器 –> 命令行 –> 其他选项”中添加:

/INCLUDE:?warp_size@cuda@at@@YAHXZ

        至此,问题解决。

2、cuda相关函数

        torch::cuda::is_available() // CUDA是否可用

        torch::cuda::cudnn_is_available() // cuDNN 是否可用

        torch::cuda::device_count() // 可使用的GPU个数

3、GPU/CPU模式

        libtorch默认使用的是CPU,设为使用GPU推理,只需将数据和模型加载至GPU中,API如下:

model.to(at::kCUDA); // 模型加载至GPU
timg = torch::ones({ 1, 3, 224, 224 }).to(at::kCUDA);  // 数据加载至GPU
std::vector<torch::jit::IValue> inputs;	
inputs.push_back(timg);

        数据/模型加载最佳方式:

torch::DeviceType device_type = at::kCPU; // 定义设备类型
if (torch::cuda::is_available())
    device_type = at::kCUDA;
model.to(device_type);
std::vector<torch::jit::IValue> inputs;
inputs.push_back(torch::ones({ 1, 3, 224, 224 }).to(device_type));

版权声明:本文为weixin_34910922原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_34910922/article/details/109344569