c++ libtorch使用cmake建立

如果我们安装好pytorch,其实不一定一定要安装libtorch,默认都已经安装过了

1 进入pytorch

conda env list
conda activate pytorch

命令行下使用 python -c 来获取libtorch的基本信息,

python -c "import torch;print(torch.utils.cmake_prefix_path)"

(pytorch) E:\AI5 py\build>python -c “import torch;print(torch.utils.cmake_prefix_path)”
得到pytorch的地址,目的是要cmake文件中的变量地址
C:\ProgramData\anaconda3\envs\pytorch\lib\site-packages\torch\share\cmake

2 cmake文件

写好test.cpp文件
写好cmake文件
cmake文件如下

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(test)
#Libtorch
find_package(Torch REQUIRED)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS}")
add_executable(${PROJECT_NAME}  test.cpp)
target_link_libraries(${PROJECT_NAME} "${TORCH_LIBRARIES}")
# Libtorch 新版本是基于C++17
set_property(TARGET ${PROJECT_NAME} PROPERTY CXX_STANDARD 17)

执行

cmake -DCMAKE_PREFIX_PATH=C:\ProgramData\anaconda3\envs\pytorch\lib\site-packages\torch\share\cmake ..

结果如下

-- Found CUDA: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8 (found version "11.8")
CMake Warning (dev) at C:/ProgramData/anaconda3/envs/pytorch/Lib/site-packages/torch/share/cmake/Caffe2/public/cuda.cmake:44 (if):Policy CMP0054 is not set: Only interpret if() arguments as variables orkeywords when unquoted.  Run "cmake --help-policy CMP0054" for policydetails.  Use the cmake_policy command to set the policy and suppress thiswarning.Quoted variables like "MSVC" will no longer be dereferenced when the policyis set to NEW.  Since the policy is not set the OLD behavior will be used.
Call Stack (most recent call first):C:/ProgramData/anaconda3/envs/pytorch/Lib/site-packages/torch/share/cmake/Caffe2/Caffe2Config.cmake:87 (include)C:/ProgramData/anaconda3/envs/pytorch/Lib/site-packages/torch/share/cmake/Torch/TorchConfig.cmake:68 (find_package)CMakeLists.txt:5 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.-- The CUDA compiler identification is NVIDIA 11.8.89
-- Detecting CUDA compiler ABI info
-- Detecting CUDA compiler ABI info - done
-- Check for working CUDA compiler: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/bin/nvcc.exe - skipped
-- Detecting CUDA compile features
-- Detecting CUDA compile features - done
-- Found CUDAToolkit: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/include (found version "11.8.89")
-- Caffe2: CUDA detected: 11.8
-- Caffe2: CUDA nvcc is: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/bin/nvcc.exe
-- Caffe2: CUDA toolkit directory: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8
-- Caffe2: Header version is: 11.8
-- C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/lib/x64/nvrtc.lib shorthash is dd482e34
-- USE_CUDNN is set to 0. Compiling without cuDNN support
-- USE_CUSPARSELT is set to 0. Compiling without cuSPARSELt support
-- Autodetected CUDA architecture(s):  8.9
-- Added CUDA NVCC flags for: -gencode;arch=compute_89,code=sm_89
-- Found Torch: C:/ProgramData/anaconda3/envs/pytorch/Lib/site-packages/torch/lib/torch.lib
-- Configuring done (8.8s)
-- Generating done (0.0s)
-- Build files have been written to: E:/AI5 py/build

这样就生成solution文件了

3 编译

到build目录下面,打开test项目,我们会发现所有有关的libtorch的配置都已经好了,不用自己再配置,下面就增加opencv的目录和自己额外的c++文件,配置好
在这里插入图片描述
编译,没有错误

执行

将数据从执行后拿到,直接画到原始的图像上
在这里插入图片描述

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

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

相关文章

区块链的可扩展性三难问题

这个词是由以太坊的联合创始人Vitalik Buterin创造的,并提出了理想的区块链需要具备的三个特征:去中心化、可扩展性和安全性。 Vitalik还提出,区块链几乎不可能很好地实现所有这三个特征,所以会出现权衡。 因此,今天…

Android使用itextpdf操作PDF文档

1、导入jar包: itext-asian.jaritextpdf-5.5.8.jar Paragraph 和 Phrase 的区别: 在 iTextPDF 库中,Paragraph 和 Phrase 是用于创建和组织文本内容的两个不同的类。 Paragraph(段落): Paragraph 是一个…

static静态成员变量和静态方法

当有new创建一个对象的,里面属性和方法,通过构造函数,能定义多个不同的对象,在我们做面向对象开发的时候,给一个场景,人在一个班级的时候,你的老师可能是固定的。 当我们用构造方法去构造的时候,每次都去传递一个固定的实参去定义个老师。 这样好会显得代码非常的…

SOCKET编程(1):基本概念

基本概念 socket分类 socket提供了**流(stream)和数据报(datagram)**两种通信机制,即流socket和数据报socket 流socket基于TCP协议,是一个有序、可靠、双向字节流的通道,传输数据不会丢失、不会重复、顺序也不会错乱 数据报socket基于UDP…

通过父类定义日志输出

1、定义基类: public class BaseController {public Class clazz null;public Logger log null;{clazz this.getClass();log LoggerFactory.getLogger(clazz);} } 2、子类统一继承该基类: RestControllerpublic class AAAController extends Base…

Powerdesigner导入mysql8之后注释丢失

目录 一、问题描述及解决思路 二、导入的步骤 1.先按正常步骤建立一个物理数据模型 (1)点击“文件-新建模型” (2)选择物理模型和数据库 2.从sql文件导入表 (1)点击“数据库-Update Model from Data…

【Redis7】10大数据类型之Set类型

文章目录 1.Set类型2.常用命令:3.示例3.1 SADD,SMEMBERS和SISMEMBER3.2 SREM和SCARD3.3 SRANDMEMBER和SPOP3.4 SMOVE 4.集合运算相关命令4.1 集合交集 (SINTER)4.2 集合并集 (SUNION)4.3 集合差集 (SDIFF)4.4 Redis7新命令sintercard 1.Set类型 Redis的Set类型是一…

正则表达式-前瞻和后顾

正则表达式中的前瞻和后顾。 前瞻(Lookahead) 前瞻是一种断言,它会检查在当前位置之后是否存在某种模式,但不会实际匹配该模式。前瞻有两种形式: 正向前瞻 (?pattern) 检查当前位置之后是否存在指定的模式如果存在,则匹配成功,但不会消耗该模式例如 \w(?\d) 将匹配后面跟数…

RAG 场景对Milvus Cloud向量数据库的需求

虽然向量数据库成为了检索的重要方式,但随着 RAG 应用的深入以及人们对高质量回答的需求,检索引擎依旧面临着诸多挑战。这里以一个最基础的 RAG 构建流程为例:检索器的组成包括了语料的预处理如切分、数据清洗、embedding 入库等,然后是索引的构建和管理,最后是通过 vecto…

【Redis7】10大数据类型之Bitmap类型

文章目录 1.Bitmap(位图)2.常用命令3.示例3.1 SETBIT和GETBIT3.2 STRLEN3.3 BITCOUNT3.4 BITOP 1.Bitmap(位图) Redis的Bitmap类型并不是一个独立的数据类型,而是对String类型的一种巧妙使用,允许开发者以位级别操作字符串中的数据。Bitmap可以视为一个…

学习笔记:【QC】Android Q : telephony-phone 模块

一、phone init 流程图 高清的流程图参考:【高清图,保存后可以放大看】 二、phone MO 流程图 高清的流程图参考:【高清图,保存后可以放大看】 三、phone MT 流程图 高清的流程图参考:【高清图,保存后可以…

MySQL慢查询优化【二】

当处理MySQL慢查询优化时,通常需要考虑以下几个方面: 索引优化:确保查询涉及的列上存在适当的索引,以加快数据检索速度。可以通过使用EXPLAIN语句来查看查询执行计划,并评估是否使用了索引。举例来说,如果…

提升工作效率,用ONLYOFFICE打造高效团队协作环境

作为一名深耕技术领域已有六七年的开发者,同时又是断断续续进行技术创作将近六年的一个小小作者,我在工作和日常生活中,使用过各色各样的软件。 而在最近几年,一款名为ONLYOFFICE的开源办公套件逐渐走进并融入我的工作与生活&…

paraview 处理 fluent 计算结果

paraview 处理 fluent 计算结果 参考链接:https://zhuanlan.zhihu.com/p/598032490 希望先生的主页也很有价值:https://www.cnblogs.com/Xiwang-Sun/p/14943429.html

Edge浏览器的前端开发体验与深度探索

Edge浏览器作为一款备受关注的现代浏览器,在前端开发领域扮演着重要的角色。在这篇博文中,我将分享我对Edge浏览器的使用心得与深度探索,探讨其在前端开发中的优势和特点。 1. Edge浏览器的优势 a. 兼容性 Edge浏览器注重兼容性&#xff0c…

String是最基本的数据类型吗?

在Java编程语言的语境中,探讨“String是否是最基本的数据类型”是一个深入且富有意义的话题。首先,我们需要明确“基本数据类型”的定义,并在此基础上探讨String的特性及其在编程中的角色。 一、基本数据类型的定义 基本数据类型&#xff0…

如何在适用于 Linux 的 Visual Studio Code 中使用 .NET 8 上的 FastReport Avalonia

我们将继续撰写有关在各种操作系统上的 Visual Studio Code 中使用 FastReport Avalonia 的系列文章。在本文中,我们将详细分析如何使用 Visual Studio Code IDE 在 Linux 操作系统上运行 FastReport Avalonia。 Avalonia UI 是一个积极用于开发跨平台用户界面的 .…

Hyper-V 管理器安装的ubutun扩容磁盘空间说明

一、删除检查点 首先把这个想要扩容的虚拟机停止掉,然后找到检查点,全删除掉,否则没法编辑这个虚拟磁盘。 二、编辑虚拟磁盘 下面截图中下一步不能点击的,只要删除检查点之后就可以点击了。点击下一步然后选择扩容,然后…

组合模式(结构型)

目录 一、前言 二、透明组合模式 三、安全组合模式 四、总结 一、前言 组合模式(Composite Pattern)是一种结构型设计模式,将对象组合成树形结构以表示“部分-整体”得层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 组合模式由以下角色组成…

AI助手,为生活和工作增添新体验

在当今科技飞速发展的时代,人工智能(AI)已经渗透到我们生活和工作的方方面面。无论是传统的大型语言模型,还是专注于搜索领域的AI助手,都为我们带来了前所未有的便利和效率。让我们一起来探索这些AI产品的魅力所在。 大型语言模型凭借强大的自然语言处理能力,可以为我们提供多…