9.4 visualStudio 2022 配置 cuda 和 torch (c++)

一、配置torch

1.Libtorch下载

        该内容看了【Libtorch 一】libtorch+win10环境配置_vsixtorch-CSDN博客的博客,作为笔记用。我自己搭建后可以正常运行。

        下载地址为windows系统下各种LibTorch下载地址_libtorch 百度云-CSDN博客

        下载解压后的目录为:

2.vs 2022配置Torch

首先,创建一个新的项目和一个新的cpp文件。

然后,在界面选择release和X64,如下图所示:

在属性管理器中【添加新项目属性表】

打开项目属性,在【附加包含目录】中添加

E:\Environmentc\libtorch\include

E:\Environmentc\libtorch\include\torch\csrc\api\include

在【附加库目录】中添加

E:\Environmentc\libtorch\lib

在【附加依赖项】中添加D:\libtorch-win-shared-with-deps-1.8.0+cu111\libtorch\lib文件夹下所有的 *.lib文件。

asmjit.lib
c10.lib
c10d.lib
c10_cuda.lib
caffe2_detectron_ops_gpu.lib
caffe2_module_test_dynamic.lib
caffe2_nvrtc.lib
clog.lib
cpuinfo.lib
dnnl.lib
fbgemm.lib
fbjni.lib
gloo.lib
gloo_cuda.lib
libprotobuf-lite.lib
libprotobuf.lib
libprotoc.lib
mkldnn.lib
pthreadpool.lib
pytorch_jni.lib
torch.lib
torch_cpu.lib
torch_cuda.lib
XNNPACK.lib

完成上述配置后,在计算机【环境变量–系统变量】中添加

E:\Environmentc\libtorch\lib

E:\Environmentc\libtorch\bin

此外,libtorc加载GPU模型时,还需在打开工程项目属性页配置CUDA命令行:

/INCLUDE:"?ignore_this_library_placeholder@@YAHXZ" 

此时完成所有配置。测试代码如下:

#include <torch/torch.h>
//#include <cuda.h>
//#include <cuda_runtime.h>
//#include "device_launch_parameters.h"
#include <iostream>int main() {torch::Tensor tensor = torch::rand({ 2, 3 });if (torch::cuda::is_available()) {std::cout << "CUDA is available! Training on GPU" << std::endl;/*int devCount;cudaGetDeviceCount(&devCount);std::cout << devCount << std::endl;*/auto tensor_cuda = tensor.cuda();std::cout << tensor_cuda << std::endl;}else{std::cout << "CUDA is not available! Training on CPU" << std::endl;std::cout << tensor << std::endl;}std::cin.get();
}

若出现由于找不到c10.dll(或其他libtorch/lib中的.dll动态库),无法继续执行代码的报错,则作以下修改:

在属性界面的 调试=>环境 里添加libtorch动态库的路径:

PATH=D:\Code_Lib\libtorch\lib;%PATH%

至此,torch配置完成。

二、配置cuda

        该内容看了Windows10+VisualStudio2022+CUDA11.7环境配置_vs配置cuda-CSDN博客的博客,作为笔记用,本人搭建后可以运行。

右键项目→属性→ 配置属性→ VC++目录→ 包含目录,添加以下目录:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\include

→ 库目录,添加以下目录:

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\lib\x64

右键项目→ 属性→ 配置属性→ 链接器→ 常规→ 附加库目录,添加以下目录:

\$(CUDA_PATH_V11_7)\lib$(Platform)

(查看环境变量改变CUDA_PATH_V11_7,v11_7指的安装的cuda版本)

右键项目→ 属性→ 配置属性→ 链接器→ 输入→ 附加依赖项,添加以下库:

cublas.lib
cuda.lib
cudadevrt.lib
cudart.lib
cudart_static.lib
cufft.lib
cufftw.lib
curand.lib
cusolver.lib
cusparse.lib
nppc.lib
nppial.lib
nppicc.lib
nppidei.lib
nppif.lib
nppig.lib
nppim.lib
nppist.lib
nppisu.lib
nppitc.lib
npps.lib
nvblas.lib
nvml.lib
nvrtc.lib
OpenCL.lib

测试程序如下:

#include <iostream>
#include <cuda_runtime.h>
#include <cublas_v2.h>const int N = 3;  // 矩阵大小int main() {// 初始化CUBLAS库cublasHandle_t handle;cublasCreate(&handle);// 定义矩阵大小int lda = N;int ldb = N;int ldc = N;// 分配内存并初始化矩阵float A[N * N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };float B[N * N] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 };float C[N * N] = { 0 };// 在GPU上分配内存并将矩阵传输到GPUfloat* d_A, * d_B, * d_C;cudaMalloc((void**)&d_A, N * N * sizeof(float));cudaMalloc((void**)&d_B, N * N * sizeof(float));cudaMalloc((void**)&d_C, N * N * sizeof(float));cudaMemcpy(d_A, A, N * N * sizeof(float), cudaMemcpyHostToDevice);cudaMemcpy(d_B, B, N * N * sizeof(float), cudaMemcpyHostToDevice);// 执行矩阵相乘float alpha = 1.0f;float beta = 0.0f;cublasSgemm(handle, CUBLAS_OP_N, CUBLAS_OP_N, N, N, N, &alpha, d_A, lda, d_B, ldb, &beta, d_C, ldc);// 将结果从GPU传回CPUcudaMemcpy(C, d_C, N * N * sizeof(float), cudaMemcpyDeviceToHost);// 打印结果std::cout << "Matrix C:" << std::endl;for (int i = 0; i < N; ++i) {for (int j = 0; j < N; ++j) {std::cout << C[i * N + j] << " ";}std::cout << std::endl;}// 清理内存cudaFree(d_A);cudaFree(d_B);cudaFree(d_C);// 销毁CUBLAS句柄cublasDestroy(handle);return 0;
}

至此,cuda环境安装完成。

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

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

相关文章

Python基于YOLOv8和OpenCV实现车道线和车辆检测

使用YOLOv8&#xff08;You Only Look Once&#xff09;和OpenCV实现车道线和车辆检测&#xff0c;目标是创建一个可以检测道路上的车道并识别车辆的系统&#xff0c;并估计它们与摄像头的距离。该项目结合了计算机视觉技术和深度学习物体检测。 1、系统主要功能 车道检测&am…

相加交互效应函数发布—适用于逻辑回归、cox回归、glmm模型、gee模型

在统计分析中交互作用是指某因素的作用随其他因素水平变化而变化&#xff0c;两因素共同作用不等于两因素单独作用之和(相加交互作用)或之积(相乘交互作用)。相互作用的评估是尺度相关的&#xff1a;乘法或加法。乘法尺度上的相互作用意味着两次暴露的综合效应大于&#xff08;…

ECharts饼图下钻

背景 项目上需要对Echarts饼图进行功能定制&#xff0c;实现点击颜色块&#xff0c;下钻显示下一层级占比 说明 饼图实现点击下钻/面包屑返回的功能 实现 数据结构 [{name: a,value: 1,children: [...]},... ]点击下钻 // 为图表绑定点击事件&#xff08;需要在destroy…

MySQL-事务

事务特性 在关系型数据库管理系统中&#xff0c;事务必须满足 4 个特性&#xff0c;即所谓的 ACID。 原子性&#xff08;Atomicity&#xff09; 事务是一个原子操作单元&#xff0c;其对数据的修改&#xff0c;要么全都执行&#xff0c;要么全都不执行。 修改操作>修改B…

C# 元组

总目录 C# 语法总目录 C# 元组 C# 介绍元组1. 元组元素命名2. 元组的解构3. 元组的比较 总结参考链接 C# 介绍 C#主要应用于桌面应用程序开发、Web应用程序开发、移动应用程序开发、游戏开发、云和服务开发、数据库开发、科学计算、物联网&#xff08;IoT&#xff09;应用程序、…

用 Python 绘制可爱的招财猫

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​​​ ​​​​​​​​​ ​​​​ 招财猫&#xff0c;也被称为“幸运猫”&#xff0c;是一种象征财富和好运的吉祥物&#xff0c;经常…

Java多线程

一、线程的简介: 1.普通方法调用和多线程: 2.程序、进程和线程: 在操作系统中运行的程序就是进程&#xff0c;一个进程可以有多个线程 程序是指令和数据的有序集合&#xff0c;其本身没有任何运行的含义&#xff0c;是一个静态的概念&#xff1b; 进程则是执行程序的一次执…

IP 地址与蜜罐技术

基于IP的地址的蜜罐技术是一种主动防御策略&#xff0c;它能够通过在网络上布置的一些看似正常没问题的IP地址来吸引恶意者的注意&#xff0c;将恶意者引导到预先布置好的伪装的目标之中。 如何实现蜜罐技术 当恶意攻击者在网络中四处扫描&#xff0c;寻找可入侵的目标时&…

鸿蒙面试 2025-01-09

鸿蒙分布式理念&#xff1f;&#xff08;个人认为理解就好&#xff09; 鸿蒙操作系统的分布式理念主要体现在其独特的“流转”能力和相关的分布式操作上。在鸿蒙系统中&#xff0c;“流转”是指涉多端的分布式操作&#xff0c;它打破了设备之间的界限&#xff0c;实现了多设备…

GDPU Android移动应用 重点习题集

目录 程序填空 ppt摘选 题目摘选 “就这两页ppt&#xff0c;你还背不了吗” “。。。” 打开ppt后 “Sorry咯&#xff0c;还真背不了&#x1f61c;” 更新日志 考后的更新日志 没想到重点勾了一堆&#xff0c;还愣是没考到其中的内容&#xff0c;翻了一下&#xff0c;原…

Unity3d 基于Barracuda推理库和YOLO算法实现对象检测功能

前言 近年来&#xff0c;随着AI技术的发展&#xff0c;在游戏引擎中实现和运行机器学习模型的需求也逐渐显现。Unity3d引擎官方推出深度学习推理框架–Barracuda &#xff0c;旨在帮助开发者在Unity3d中轻松地实现和运行机器学习模型&#xff0c;它的主要功能是支持在 Unity 中…

【Notepad++】Notepad++如何删除包含某个字符串所在的行

Notepad如何删除包含某个字符串所在的行 一&#xff0c;简介二&#xff0c;操作方法三&#xff0c;总结 一&#xff0c;简介 在使用beyoundcompare软件进行对比的时候&#xff0c;常常会出现一些无关紧要的地方&#xff0c;且所在行的内容是变化的&#xff0c;不方便进行比较&…

机器学习笔记合集

大家好&#xff0c;这里是好评笔记&#xff0c;公主 号&#xff1a;Goodnote。本笔记的任务是解读机器学习实践/面试过程中可能会用到的知识点&#xff0c;内容通俗易懂&#xff0c;入门、实习和校招轻松搞定。 笔记介绍 本笔记的任务是解读机器学习实践/面试过程中可能会用到…

OCR文字识别—基于PP-OCR模型实现ONNX C++推理部署

概述 PaddleOCR 是一款基于 PaddlePaddle 深度学习平台的开源 OCR 工具。PP-OCR是PaddleOCR自研的实用的超轻量OCR系统。它是一个两阶段的OCR系统&#xff0c;其中文本检测算法选用DB&#xff0c;文本识别算法选用CRNN&#xff0c;并在检测和识别模块之间添加文本方向分类器&a…

湘潭大学人机交互复习

老师没给题型也没划重点&#xff0c;随便看看复习了 什么是人机交互 人机交互&#xff08;Human-Computer Interaction&#xff0c;HCI&#xff09;是关于设计、评价和实现供人们使用的交互式计算机系统&#xff0c;并围绕相关的主要现象进行研究的学科。 人机交互研究内容 …

离线录制激光雷达数据进行建图

目前有一个2D激光雷达&#xff0c;自己控制小车运行一段时间&#xff0c;离线获取到激光雷达数据后运行如下代码进行离线建图。 roslaunch cartographer_ros demo_revo_lds.launch bag_filename:/home/firefly/AutoCar/data/rplidar_s2/2025-01-08-02-08-33.bag实际效果如下 d…

通信与网络安全管理之ISO七层模型与TCP/IP模型

一.ISO参考模型 OSI七层模型一般指开放系统互连参考模型 (Open System Interconnect 简称OSI&#xff09;是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型&#xff0c;为开放式互连信息系统提供了一种功能结构的框架。 它从低到高分别是…

Linux权限

目录 一.Linux权限的概念 二.Linux权限管理 1.文件访问者的分类 2.文件类型和访问权限 1.文件类型 2.基本权限 3.文件权限的表示方法 1.字符表示法 2.八进制表示法 4.文件权限的相关访问方法 1.chmod 2.chown 3.chgrp 4.粘滞位 三.权限总结 一.Linux权限的概念 …

UML系列之Rational Rose笔记三:活动图(泳道图)

一、新建活动图&#xff08;泳道图&#xff09; 依旧在用例视图里面&#xff0c;新建一个activity diagram&#xff1b;新建好之后&#xff0c;就可以绘制活动图了&#xff1a; 正常每个活动需要一个开始&#xff0c;点击黑点&#xff0c;然后在图中某个位置安放&#xff0c;接…

react-quill 富文本组件编写和应用

index.tsx文件 import React, { useRef, useState } from react; import { Modal, Button } from antd; import RichEditor from ./RichEditor;const AnchorTouchHistory: React.FC () > {const editorRef useRef<any>(null);const [isModalVisible, setIsModalVis…