c++配置libtorch

news2024/10/6 6:03:40

这里写目录标题

    • 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解压目录\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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Centos中一些有趣的命令

目录 1.sl 小火车 2. cowsay 会说话的牛 3.toilet/figlet 图形化输出 4.aafire 小火焰 5.linux_logo 显示系统logo 1.sl 小火车 yum install sl 2. cowsay 会说话的牛 yum install cowsay 3.toilet/figlet 图形化输出 yum install toilet yum install figlet 4.aafire 小火…

电子电路中,MOS管的开启电压取多少最为合适呢?

电路中&#xff0c;MOS管的开启电压取多少最为合适呢&#xff1f; 比如&#xff1a; 某Nmos VGS范围为正负20V 栅极阈值电压&#xff08;VGSth&#xff09;最小为0.8V&#xff0c;最大为1.5V 那么此时的Mos管栅极电压取多少最为合适&#xff1f; 在电路中&#xff0c;MOS管的开…

通过Golang获取公网IP地址

在Go语言中&#xff0c;获取当前的外网&#xff08;公网&#xff09;IP地址可以通过多种方法实现。其中一种常见的方法是通过访问外部服务来获取。这些服务可以返回访问者的公网IP地址&#xff0c;例如 httpbin.org/ip 或 ipify.org。下面是一个简单的例子&#xff0c;展示了如…

汇编语言程序设计实验五 条件转移指令

实验目的和要求 (1) 编写实验任务要求的两个程序。 (2) 写出调试以上程序&#xff0c;即修改程序参数&#xff0c;检查结果的操作方法。 (3) 熟悉源程序汇编、连接命令的使用方法即要回答的内容。 实验环境 DOSBOX 实验内容与过程 验证以下程序 16进制数…

JS 轮播图点击左右切换

点击左右按钮实现轮播图切换图片 style&#xff1a; *{margin: 0;padding: 0;margin: auto;}#img1{width: 300px;height: 300px;position: relative;}#butto1{width: 50px;height: 100px;font-size: 50px;border: none;background-color: hsla(0, 0%, 0%, 0.2);position: abs…

CS162 Operating System笔记

What is an Operating System? it’s typically a special layer of software that provides the application access to hardware resources.So.it’s convenient abs fractions of complex hardware devices.

DVWA-xss储存型及beef下载(kali)

beef下载 apt-get update apt-get install beef-xss 登录网址是 这里的ip为虚拟机的地址 之后会让你设置密码 如果密码和用户不知道在etc/beef-xss/config.yaml可以查看 这是偷cookie的就是代码 这里是可以修改的不修改的话代码是不全的 通过beef拿到了cookies之后在网页…

知名度最高的3款电脑监控软件

知名度最高的3款电脑监控软件 公司电脑监控软件是一种安装在员工电脑上的软件&#xff0c;主要用于监控和管理员工的电脑屏幕操作、网络行为以及文件操作等。这种软件有助于企业提高员工的工作效率&#xff0c;保护公司的数据安全&#xff0c;并维护公司的IT健康环境。 市面有…

Seatunnel和web快速安装详解

目录 版本声明下载地址seatunnel下载seatunnel-web下载 安装seatunnel上传压缩包解压配置环境变量下载JAR包测试功能启动服务 安装seatunnel-web解压安装包初始化数据库修改数据连接配置文件配置Client信息配置支持的插件信息配置JAR包配置数据源JAR包配置datasource开头的jar包…

Leetcode 第 390 场周赛题解

Leetcode 第 390 场周赛题解 Leetcode 第 390 场周赛题解题目1&#xff1a;3090. 每个字符最多出现两次的最长子字符串思路代码复杂度分析 题目2&#xff1a;3091. 执行操作使数据元素之和大于等于 K思路代码复杂度分析 题目3&#xff1a;3092. 最高频率的 ID思路代码复杂度分析…

nginx支持的多种负载均衡策略

目录 1.轮询&#xff08;默认&#xff09; 2. ip_hash 3. 加权轮询&#xff08;weight&#xff09; 4. fair&#xff08;第三方&#xff09; 5. 最少连接&#xff08;least_conn&#xff09; 1.轮询&#xff08;默认&#xff09; 将请求依次分配给每个服务器&#xff0c;确…

嵌入式工控机:提升工业生产线智能化水平

工业4.0和智能制造的发展&#xff0c;嵌入式工控机在自动化生产线中的角色日益凸显。它作为一种高度集成且适用于严苛工业环境的专用计算机&#xff0c;凭借其强大的数据处理能力和实时控制特性&#xff0c;正逐步成为现代工业生产线的协调器和核心控制器。 嵌入式工控机能够实…

人工智能的前景发展和可能产生的职业影响

人工智能作为科技创新的关键领域和数字经济时代的重要支柱&#xff0c;其发展前景广阔&#xff0c;未来的就业前景也备受关注。以下是对人工智能格局未来就业前景的展望&#xff1a; 首先&#xff0c;随着技术的不断进步和应用场景的拓展&#xff0c;人工智能行业对人才的需求将…

12_Spring-AOP

文章目录 动态代理原理AOPAOP和OOPAOP的特点AOP的应用场景AOP的编程术语AOP的实现SpringAOPAspectJ切面组件切入点表达式AspectJ切面JoinPoint连接点 机制 动态代理原理 AOP Aspect Oriented Programming面向切面编程&#xff0c;是指通过预编译方式和运行期动态代理实现程序功…

目标检测——RCNN系列学习(一)

前置知识 包括&#xff1a;非极大值抑制&#xff08;NMS&#xff09;、selective search等 RCNN [1311.2524] Rich feature hierarchies for accurate object detection and semantic segmentation (arxiv.org)https://arxiv.org/abs/1311.2524 1.网络训练 2.推理流程 3.总…

【C++ STL算法】sort 排序

文章目录 【 1. 基本原理 】【 2. sort 的应用 】实例 - sort 函数实现 升序排序和降序排序 函数名用法sort (first, last)基于 快速排序&#xff0c;对容器或普通数组中 [ first, last ) 范围内的元素进行排序&#xff0c;默认进行升序排序&#xff08;从小到大&#xff09;。…

vscode-tasks.json自定义任务

以下所有内容,参考自VScode官方文档: vscode_tasks-docs任务说明文档vscode_variables-reference-docs变量说明文档vscode addtional docs for tasksvscode launch.json 属性设置文档,(下文没有介绍,没有涉及) 浅浅记录一下个人对vscode任务(task)的理解,还谈不上使用. 文章目…

TouchGFX之时钟

代码 #ifndef TOUCHGFX_ABSTRACTCLOCK_HPP #define TOUCHGFX_ABSTRACTCLOCK_HPP #include <touchgfx/containers/Container.hpp> #include <touchgfx/hal/Types.hpp>namespace touchgfx { class AbstractClock : public Container { public:AbstractClock();/* 设…

【IMU系列】什么是传感器的ODR和FSR实际如何配置传感器

使用更高的ODR信号有两个主要缺点&#xff1a;内存限制和功耗 以实际传感器为例

Redis分布式锁误删情况说明

4.4 Redis分布式锁误删情况说明 逻辑说明&#xff1a; 持有锁的线程在锁的内部出现了阻塞&#xff0c;导致他的锁自动释放&#xff0c;这时其他线程&#xff0c;线程2来尝试获得锁&#xff0c;就拿到了这把锁&#xff0c;然后线程2在持有锁执行过程中&#xff0c;线程1反应过…