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上分配内存并将矩阵传输到GPU
    float* 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传回CPU
    cudaMemcpy(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环境安装完成。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【JavaEE进阶】获取Cookie/Session

&#x1f340;Cookie简介 HTTP协议自身是属于 "⽆状态"协议. "⽆状态"的含义指的是: 默认情况下 HTTP 协议的客⼾端和服务器之间的这次通信,和下次通信之间没有直接的联系.但是实际开发中,我们很多时候是需要知道请求之间的关联关系的. 例如登陆⽹站成…

oscp备考 oscp系列——Kioptix Level 1靶场 古老的 Apache Vuln

目录 前言 1. 主机发现 2. 端口扫描 3. 指纹识别 4. 目录扫描 5. 漏洞搜索和利用 前言 oscp备考&#xff0c;oscp系列——Kioptix Level 1靶场 Kioptix Level 1难度为简单靶场&#xff0c;主要考察 nmap的使用已经是否会看输出&#xff0c;以及是否会通过应用查找对应漏…

CSS——2.书写格式一

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写中&#xff1a;--><!--1.css 由属性名:属性值构成--><!--style"color: red;font-size: 20px;&quo…

IT面试求职系列主题-人工智能(一)

想成功求职&#xff0c;必要的IT技能一样不能少&#xff0c;再从人工智能基础知识来一波吧。 1&#xff09;您对人工智能的理解是什么&#xff1f; 人工智能是计算机科学技术&#xff0c;强调创造能够模仿人类行为的智能机器。这里智能机器可以定义为能够像人一样行动、像人一…

Gitee图形界面上传(详细步骤)

目录 1.软件安装 2.安装顺序 3.创建仓库 4.克隆远程仓库到本地电脑 提交代码的三板斧 1.软件安装 Git - Downloads (git-scm.com) Download – TortoiseGit – Windows Shell Interface to Git 2.安装顺序 1. 首先安装git-2.33.1-64-bit.exe&#xff0c;顺序不能搞错2. …

js迭代器模式

以前JS原生的集合类型数据结构&#xff0c;只有Array&#xff08;数组&#xff09;和Object&#xff08;对象&#xff09;&#xff1b; 而ES6中&#xff0c;又新增了Map和Set。四种数据结构各自有着自己特别的内部实现&#xff0c;但我们仍期待以同样的一套规则去遍历它们&…

C语言初阶习题【25】strcpy的模拟实现

1. 首先先调用下库函数&#xff0c;看它实现了什么 2. 我们自己实现一个strcpy函数 3. 改进1 把*destnation和source 写上去&#xff0c;使用后置 4. 改进2 这里直接把赋值操作放到了while的判断条件里面&#xff0c;然后while循环语句什么都不做&#xff0c;放了一个空语句…

【超详细】MIT 液态神经网络(LNNs)——深度学习新动向

✅作者简介:双一流博士,人工智能领域学习者,深耕机器学习,交叉学科实践者。已发表SCI1/区top论文10+,授权专利4件,公开10+。可提供专利思路和指导,提供科研小工具,分享科研经验,欢迎交流! 📌个人主页: https://blog.csdn.net/allein_STR?spm=1011.2559.3001.5343…

某讯一面,有点难度

今天分享的是训练营的朋友在某讯外包的面经&#xff0c;他在面完后跟我说&#xff1a;数据一致性策略好久没问,有点忘了&#xff0c;所以这一块答的不太好。 我一直都会和大家强调复习的重要性&#xff0c;尤其是这种常见的问题。看看下面的问题你都能答得上来吗&#xff1f; …

汽车免拆诊断 | 2017 款东风风神 AX7 车热机后怠速不稳

故障现象 一辆2017款东风风神AX7车&#xff0c;搭载DFMA14T发动机&#xff0c;累计行驶里程约为13.7万km。该车冷起动后怠速运转正常&#xff0c;热机后怠速运转不稳&#xff0c;组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断  用故障检测仪检测&#xff0c;发动机控…

SSL 证书格式和证书文件扩展名:完整指南

SSL 证书是什么以及它如何工作相当容易理解。但当涉及到在服务器上安装它时&#xff0c;有时&#xff0c;你可能觉得这是在处理火箭科学。 由于有如此多的SSL 证书格式与特定服务器要求相关&#xff0c;您更有可能感到困惑和沮丧&#xff0c;而不是从一开始就正确配置证书。但…

在ubuntu22.04中使用bear命令追踪内核编译报错的原因分析和解决方案

1.说明 我在ubuntu22.04中使用bear命令追踪内核编译时发生如下报错&#xff1a; 如图&#xff0c;在链接名为libexec.so的动态库时发生错误 2 分析及解决过程 打印变量 LIB 发现其为空&#xff0c;也就是说 bear会去 /usr/bear/ 去找 libexec.so 去看一下 /usr/bear/是否存…

Day10——爬虫

爬虫概念 网络请求 爬虫分类 基本流程 请求头

nacos学习笔记(一)

1.前言 何为nacos&#xff0c;nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。可以说集注册中心&#xff0c;配置中心&#xff0c;服务管理于一起的平台。注册中心&#xff1a;相当于我们可以把服务注册到注册中心上&#xff0c;我们以后可以通过服…

机器学习周报-ModernTCN文献阅读

文章目录 摘要Abstract 0 提升有效感受野&#xff08;ERF&#xff09;1 相关知识1.1 标准卷积1.2 深度分离卷积&#xff08;Depthwise Convolution&#xff0c;DWConv&#xff09;1.3 逐点卷积&#xff08;Pointwise Convolution&#xff0c;PWConv&#xff09;1.4 组卷积(Grou…

WebRtc01: 课程导学、框架介绍

应用 难点 课程大纲 学习收获 涉及内容 概述 用途 学习收获

windows下编写的shell脚本在Linux下执行有问题解决方法

前言&#xff1a; 这个问题在实际工作中经常会遇到(非语法错误)&#xff0c;脚本来源有些是自己在windows系统编写的、有些是从别人那里copy来的&#xff0c;还有些原本是好的被别人拿到windows下修改了一些内容&#xff0c;总之各种场景&#xff0c;但是如果是一个内容比较多的…

开源CMS建站系统的安全优势有哪些?

近年来&#xff0c;用户们用开源CMS系统搭建网站的比例也越来越高&#xff0c;它为用户提供了便捷的网站建设解决方案。其中&#xff0c;亿坊CMS建站系统更因安全方面备受用户欢迎&#xff0c;下面带大家一起全面地了解一下。 一、什么是开源CMS&#xff1f; 开源CMS指的是那…

Windows系统安装Docker Desktop

文章目录 注意事项安装步骤官网下载软件安装到其它盘符操作(如果就想安装到C盘可以跳过这个步骤, 直接执行文件)等待出现软件安装界面Windows系统的配置软件的一些必要设置(以下设置需要点击apply才能生效&#xff0c;如果点不了&#xff0c;那就是安装后&#xff0c;出现了错误…

LLM 大语言模型学习记录

文章目录 1. 写在最前面2. 让 gpt-4o-mini 解释 LLM 的原理3. 让 gpt-4o-mini 解释 LLM 的使用场景4. 让 gpt-4o-mini 解释 LLM 的局限性5. 碎碎念 1. 写在最前面 大语言模型&#xff08;LLM&#xff09;似乎已经成为 AI 领域的宠儿&#xff0c;不少公司争相推出自研的大模型。…