c++配置libtorch

LibTorch下载

安装LibTorch非常简单,只需要从其官网选择相应的版本即可,具体页面如下图所示。
在这里插入图片描述
如果需要加载PyTorch训练的模型文件,安装的LibTorch需要和PyTorch的版本一致。CUDA版本最好选与本机一致的版本进行使用,但是我的经验告诉我即使下载的版本和电脑安装的CUDA版本不一致,但只要能兼容也可以使用。比如我下载的LIbTorch的CUDA版本是11.7但是电脑的CUDA版本是12.0,也是可以正常使用的,其中CUDA版本要大于等于LIbTorch的CUDA版本。

Vistual Studio环境配置

打开VS2022,在项目上右键打开属性,依次进行如下配置:

1、VC++目录下的包含目录

CUDA版本和CPU版本的LibTorch均需配置:

    libtorch解压目录\include

    libtorch解压目录\include\torch\csrc\api\include

CUDA版本的LibTorch需额外配置:

    CUDA安装目录\v12.1\include

2、VC++目录下的库目录

CUDA版本和CPU版本的PyTorch均需配置:

          libtorch解压目录\lib

CUDA版本的LibTorch需额外配置:

          CUDA安装目录\v12.1\lib\X64

在这里插入图片描述
3、链接器下的输入

CUDA版本和CPU版本的LibTorch均需配置(二选其一):

    libtorch解压目录\lib\*.lib(所有lib文件均加入项目,程序所占空间较大)

    文件名.lib(只加入自己所需的lib文件)

CUDA版本的LibTorch需额外配置(二选其一):

    CUDA安装目录\ v12.1\lib\X64\*.lib

    文件名.lib

在这里插入图片描述

C++部署Libtorch出现问题、错误汇总

博客:https://blog.csdn.net/zzz_zzz12138/article/details/109138805

1、由于找不到xxx.dll,无法继续执行代码,重新安装程序可能会解决此问题

(1)由于找不到c10.dll(或其他libtorch/lib中的.dll动态库),无法继续执行代码

(2)由于找不到VCRUNTIME 140_1D.dll,无法继续执行代码

2、LINK : fatal error LNK1104: cannot open file ‘torch-NOTFOUND.obj’ (torch-NOTFOUND.obj无法找到)

3、error C2440: “初始化”: 无法从“torch::jit::script::Module”转换为“std::shared_ptr

4、无法定位程序输入点cudnnSetCTCLossDescriptorEx于动态链接库xxx.dll上

5、有未经处理的异常:Microsoft C++异常:c10::Error,位于内存位置xxx处

6、引发异常:0xC0000005:读取位置0xFFFFFFFFFFFFFFFE时发生访问冲突

7、error :c2872 std 不明确的符号

补充:由于找不到c10.dll(或其他libtorch/lib中的.dll动态库),无法继续执行代码

把libtorch/lib中的所有dll放到libtorch/bin中,然后把libtorch/bin加到环境变量的path中.
在这里插入图片描述

错误 LNK2001 无法解析的外部符号 "class at::Tensor __cdecl at::native::_torch_cuda_cu_linker_symbol_op_cuda(class at::Tensor const &)" (?_torch_cuda_cu_linker_symbol_op_cuda@native@at@@YA?AVTensor@2@AEBV32@@Z) Project5 D:\c++\Project5\LINK 1

出现这种错误在命令行内加入:
/INCLUDE:“?ignore_this_library_placeholder@@YAHXZ”
在这里插入图片描述

检测环境是否配置成功

检测是否配置成功:

#include <iostream>
#include <torch/torch.h>
#include<torch/script.h>
 
using namespace std;
 
int main() {
	torch::Tensor tensor = torch::rand({ 5,3 });
	cout << tensor << endl;
	system("pause");
	return EXIT_SUCCESS;
}

检测能否使用GPU:

#include <iostream>
#include <torch/torch.h>
#include<torch/script.h>
 
using namespace std;
 
int main()
{
	if (torch::cuda::is_available())
		cout << "支持GPU" << endl;
	else
		cout << "不支持GPU" << endl;
	system("pause");
	return 0;
}
  • 8
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值