c++配置libtorch

这里写目录标题

    • LibTorch下载
    • Vistual Studio环境配置
    • 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解压目录\includelibtorch解压目录\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;elsecout << "不支持GPU" << endl;system("pause");return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/601115.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上传应用程序到苹果应用商店的工具和要

引言 在今天的移动应用市场中&#xff0c;将应用程序上传到苹果应用商店&#xff08;App Store&#xff09;是许多开发者的首要任务之一。然而&#xff0c;不同操作系统下的开发者可能需要使用不同的工具和遵循不同的要求来完成这一任务。本文将介绍在 macOS、Windows 和 Linu…

求组合数(动态规划)

给定 n 组询问&#xff0c;每组询问给定两个整数 a&#xff0c;b&#xff0c;请你输出 Cbamod(1097) 的值。 输入格式 第一行包含整数 n。 接下来 n 行&#xff0c;每行包含一组 a 和 b。 输出格式 共 n 行&#xff0c;每行输出一个询问的解。 数据范围 1≤n≤100001, 1…

Word·VBA文档合并

目录 1&#xff0c;复制法&#xff0c;不保留原文档格式2&#xff0c;复制法&#xff0c;保留原文档格式3&#xff0c;插入法&#xff0c;保留原文档格式 之前的文章《WordVBA实现邮件合并》虽然可以生成邮件合并文档结果&#xff0c;但是不能像《python实现word邮件合并》一样…

Java集合进阶——单列集合

一.集合结构框架 1.单列集合Collection 单列集合是一次存储一个数据的集合 ⑴结构框架 List系列集合:添加的元素是有序&#xff0c;可重复&#xff0c;有索引 Set系列集合:添加的元素无序&#xff0c;不重复&#xff0c;无索引 2.双列集合Map 双列集合是一次存储一对数据…

【I2C总线驱动】

一、I2C总线背景知识 SOC芯片平台的外设分为&#xff1a; 一级外设&#xff1a;外设控制器集成在SOC芯片内部二级外设&#xff1a;外设控制器由另一块芯片负责&#xff0c;通过一些通讯总线与SOC芯片相连 Inter-Integrated Circuit&#xff1a; 字面意思是用于“集成电路之间…

Linux系统安装Docker

1、安装环境 此处在Centos7进行安装&#xff0c;可以使用以下命令查看CentOS版本 lsb_release -a 在 CentOS 7安装docker要求系统为64位、系统内核版本为 3.10 以上&#xff0c;可以使用以下命令查看 uname -r 2、用yum源安装 2.1 查看是否已安装docker列表 yum list instal…

【Angular】什么是Angular中的APP_BASE_HREF

1 概述: 在这篇文章中&#xff0c;我们将看到Angular 10中的APP_BASE_HREF是什么以及如何使用它。 APP_BASE_HREF为当前页面的基础href返回一个预定义的DI标记。 APP_BASE_HREF是应该被保留的URL前缀。 2 语法: provide: APP_BASE_HREF, useValue: /gfgapp3 步骤: 在app.m…

leetcode代码记录(最长连续递增序列

目录 1. 题目&#xff1a;2. 我的代码&#xff1a;小结&#xff1a; 1. 题目&#xff1a; 给定一个未经排序的整数数组&#xff0c;找到最长且 连续递增的子序列&#xff0c;并返回该序列的长度。 连续递增的子序列 可以由两个下标 l 和 r&#xff08;l < r&#xff09;确定…

2024/4/2—力扣—连续数列

代码实现&#xff1a; 思路&#xff1a;最大子数组和 解法一&#xff1a;动态规划 #define max(a, b) ((a) > (b) ? (a) : (b))int maxSubArray(int* nums, int numsSize) {if (numsSize 0) { // 特殊情况return 0;}int dp[numsSize];dp[0] nums[0];int result dp[0];fo…

【二分查找】Leetcode 寻找峰值

题目解析 162. 寻找峰值 题目中有一个很重要的提示&#xff1a;对所有有效的i都存在nums[i] ! nums[i1],因此这道题不需要考虑nums[mid] 和 nums[mid1]之间的相等与否的关系 算法讲解 1. 暴力枚举 我们按照顺序判断每个数字是否是当前的峰值&#xff0c;如果是直接返回&#…

网络基础——vrrp

前言&#xff1a;除了一个MPLS这个协议&#xff0c;其他的协议都差不多会在后面介绍&#xff0c;但是MPLS却不会介绍&#xff0c;因为自己本人学的不是很好&#xff0c;而且在企业网中&#xff0c;接触的机会也更少&#xff0c;除非是做ISP网络的&#xff0c;下面会先介绍VRRP和…

【4月最新】低至50/年,4G 618/3年 云服务器价格即将回调 ,搭建网站 博客 Linux练习 比虚拟机方便 附阿里云 京东云 腾讯云对比表

更新日期&#xff1a;4月8日&#xff08;半年档 价格回调&#xff0c;京东云采购季持续进行&#xff09; 本文纯原创&#xff0c;侵权必究 《最新对比表》已更新在文章头部—腾讯云文档&#xff0c;文章具有时效性&#xff0c;请以腾讯文档为准&#xff01; 【腾讯文档实时更…