c++ libtorch使用cmake建立

news2024/11/17 14:51:39

如果我们安装好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 or
  keywords when unquoted.  Run "cmake --help-policy CMP0054" for policy
  details.  Use the cmake_policy command to set the policy and suppress this
  warning.

  Quoted variables like "MSVC" will no longer be dereferenced when the policy
  is 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.coloradmin.cn/o/1658153.html

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

相关文章

1.基于python的单细胞数据预处理-质量控制

目录 质量控制过滤低质量细胞的指南双细胞过滤手动过滤低质量读数细胞自动过滤低质量读数细胞环境RNA校正 参考: [1] https://github.com/Starlitnightly/single_cell_tutorial [2] https://github.com/theislab/single-cell-best-practices 质量控制 原始的单细胞…

[C++核心编程-05]----C++类和对象之对象的初始化和清理

目录 引言 正文 01-构造函数和析构函数 ​02-构造函数的分类及调用 03-拷贝构造函数调用时机 04-构造函数调用规则 05-深拷贝与浅拷贝 06-初始化列表 07-静态成员变量 08-静态成员函数 …

vue3 - 150

目录 vue优势使用方式编写vue代码指令响应式数据其他 vue优势 功能全面生态好,语法简洁效率高,免去 DOM 操作苦,开发重任一肩挑! 使用方式 1.通过cdn引入来将 Vue 应用到整个页面 2.或通过官方脚手架 create-vue来创建完整的v…

Spring-依赖来源

依赖来源 1 Spring BeanDefinition(xml,注解,BeanDefinitionBuilder, 还有API实现的单例对象) 2 Spring 内建BeanDefinition 3 内建单例对象 依赖注入和依赖查找的区别 Context.refresh() 的时候会调用这个方法:prepareBeanF…

【Linux】-Linux用户和权限[3]

一、认知root用户 1、root用户(超级管理员) 无论是Windows、MacOS、Linux均采用多用户的管理模式进行权限管理。 在Linux系统中,拥有最大权限的账户为:root(超级管理员) root用户拥有最大的系统操作权限…

多线程三种实现

多线程 线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。 (理解:应用软件中互相独立,可以同时运行的功能) 进程 进程是程序的基本执行实体。(理解&#…

部署JVS服务出现上传文件不可用,问题原因排查。

事情的起因是这样的,部门经理让我部署一下JVS资源共享框架,项目的地址是在这里 项目资源地址 各位小伙伴们做好了,我要开始发车了,全新的“裂开之旅” 简单展示一下如何部署JVS文档 直达链接 撕裂要开始了 本来服务启动的好好…

SpringBoot结合Canal 实现数据同步

1、Canal介绍 Canal 指的是阿里巴巴开源的数据同步工具,用于数据库的实时增量数据订阅和消费。它可以针对 MySQL、MariaDB、Percona、阿里云RDS、Gtid模式下的异构数据同步等情况进行实时增量数据同步。 当前的 canal 支持源端 MySQL 版本包括 5.1.x , 5.5.x , 5.6.…

使用tkinter开发的一款可扫描并删除本地文件敏感词的Windows软件

大致功能:可指定扫描Windows上的某个目录的所有文件,单个文件扫描,目前适配支持的文件后缀有:"pdf"、"txt、"doc"、"docx",软件是开源的,大家可以在此基础上扩展更多类…

什么是HTTP?

什么是HTTP? HTTP基本概念HTTP 是什么?HTTP 常见的状态码有哪些?HTTP 常见字段有哪些? HTTP特性HTTP/1.1 的优点有哪些?HTTP/1.1 的缺点有哪些? HTTP基本概念 HTTP 是什么? HTTP 是超文本传输…

44.乐理基础-音符的组合方式-附点

内容参考于: 三分钟音乐社 首先如下图,是之前的音符,但是它不全,比如想要一个三拍的音符改怎样表示? 在简谱中三拍,在以四分音符为一拍的情况下,在后面加两根横线就可以了,称为附点…

C++:重载、重写与重定义

一、重载、重写与重定义的概念 C中,重载、重写和重定义是三个与函数和类成员相关的概念,但它们具有不同的含义和用途。 重载:是指在同一作用域内,可以有多个名称相同但参数列表(参数类型、参数个数或参数顺序&#x…

Web3加密空投入门:空投类型有哪些?如何避免限制?

今天分享空投如何避免限制以提高效率,增加成功几率,首先我们来了解什么是空投加密,有哪些空投类型。 一、什么是空投加密? 加密货币空投是一种营销策略,包括向用户的钱包地址发送免费的硬币或代币。 加密货币项目使用…

【算法练级js+java】旋转字符串判断是否相等

每一天一道算法题训练,努力打开编程思维,才能进大厂光明正大的泡心仪的小姐姐!!(手动捂脸) 题目 /** * 给定字符创A和B * 旋转字符串A,就是把最左边的移动到最右边 * 比如A‘abcde’,在移动一次之后结果就是bcdea * 如果若干次之…

揭秘新时代的内容创作:一键生成的AI黑科技

在数字媒体的浪潮下,内容创作已成为连接人与信息的重要桥梁。然而,头条、公众号等平台上的爆文创作,对很多内容创作者来说却是一项挑战。“从选题到找素材,再到成文,”这个过程不仅耗时至少1到2个小时,而且…

word图片水印

一、word中旧水印如何删除 打开word模板,想要删除旧水印,如下图所示操作,但是旧水印删除不掉。 以为上传新水印图片会替换掉旧水印,结果显示了2个水印,要怎么删除呢? 如下截图所示,双击打开页…

如何在CentOS上解决Python版本冲突和路径问题

在使用CentOS等Linux系统时,安装多个Python版本可能会导致版本冲突和路径问题。当你运行python3命令时,系统可能不会调用你期望的Python版本,这可能会导致运行错误或者其他依赖问题。下面是一篇详细的博客,介绍如何解决这种Python…

微信小程序发布,推广等步骤

发布小程序 一.首先写好小程序后在微信开发者工具的右上角找到上传并点击 2.填写本次开发版本的版本号和备注信息,点击上传 3.登录微信小程序管理后台 微信公众平台 在管理处找到版本管理 4.在版本管理页面可以看到刚刚提交的小程序已经上传到这里,点击…

如何在两台电脑之间共享文件(超详细步骤)

所需物品: 两台以上电脑一个路由器 步骤1: 将两台电脑用网线或无线网连接至同一路由器下 只有在同一路由器下才能形成局域网,从而才能正常共享文件。例如通常打印机和电脑也需要保持在同一路由器下才能正常打印文件。 步骤2:设置…

【全开源】Java洗衣清洁服务同城清洗服务小程序源码

特色功能: 在线预约与支付:用户可以通过洗衣小程序在线预约洗衣服务,并选择支付方式进行支付,如微信支付、支付宝等。这种在线预约和支付的方式极大地方便了用户,提高了服务的便捷性。智能推荐与选择:根据…