一文详解VS2022配置LibTorch环境:Windows平台LibTorch CUDA与cuDNN开发环境配置
随着深度学习技术的迅猛发展,越来越多的应用程序开始集成深度学习模型以提供智能化服务。为了满足这一需求,开发者们不仅依赖于Python等高级编程语言提供的便捷框架,也开始探索如何将这些模型与C++应用程序相结合,以便在性能关键型应用中充分利用底层硬件资源。LibTorch作为PyTorch的C++前端
,正好满足了这种需求,它允许开发者直接在C++环境中构建
、训练
和部署深度学习模型
。
然而,在Windows平台上配置LibTorch环境
,并确保其能够有效利用NVIDIA GPU的强大计算能力
并非易事。这涉及到正确安装并配置LibTorch
、CUDA(Compute Unified Device Architecture)
以及cuDNN(CUDA Deep Neural Network library)
,每一个步骤都需要精确操作才能保证整个系统的稳定性和高效性。
本文希望在Windows平台搭建基于LibTorch的深度学习开发环境
。我们将逐步讲解如何下载和配置LibTorch
,安装适合您硬件条件的CUDA版本
,以及设置cuDNN来加速神经网络运算
。此外,我们还将介绍如何通过配置cmakeList.txt
文件来创建一个简单的工程示例,验证本地安装环境是否成功。无论你是初次接触这些工具的新手,还是想要优化现有工作流程的经验丰富的开发者,这份文档都将为你提供有价值的指导信息。
一、CUDA安装
CUDA(Compute Unified Device Architecture)是NVIDIA开发的并行计算平台和编程模型
,用于利用NVIDIA GPU的并行计算能力
。允许开发者在标准C/C++或Fortran代码中嵌入特定于GPU的内核函数
,利用GPU
的大规模并行计算能力
加速各种类型的应用程序
,包括科学计算
、深度学习
、图形渲染
等,并提供了一套丰富的API和工具,包括核心的CUDA Runtime API
、CUDA Driver API
以及各种辅助工具和库。
1.1 查看CUDA版本
安装CUDA前,先要确认本地电脑支持的CUDA版本。
打开终端(win+R输入cmd),输入 nvidia-smi
命令,查看显卡支持的CUDA版本
。
- 驱动版本决定了CUDA版本,驱动版本越高,则可安装的CUDA版本越高;
- CUDA向下兼容,我
这里是输出的CUDA版本为12.3
,并不是意味着我的电脑只能安装12.3版本的CUDA,而是可以安装12.3及以下任何版本的CUDA
1.2 下载CUDA
进入developer.nvidiahttps://developer.nvidia.com/cuda-toolkit-archive选择要安装的CUDA版本。
这里我选择了12.1.1
,低于本地显卡支持的12.3
根据操作系统
版本,选择对应版本CUDA进行下载:
1.3 安装CUDA
双击exe文件,支持进行安装。
选择自定义安装。
1.4 环境变量配置
添加以下环境变量配置:
1.5 验证CUDA是否安装完成
在新打开的cmd窗口中输入:
nvcc -V
二、cuDNN安装
cuDNN(CUDA Deep Neural Network library)
是NVIDIA专门针对深度学习应用开发的GPU加速库
。其提供了一系列高效的深度学习算法的实现
,包括卷积神经网络(CNN)
、循环神经网络(RNN)
等常用网络结构的基本操作,如卷积
、池化
、归一化
、激活函数
等。cuDNN针对NVIDIA GPU进行了高度优化
,利用GPU的并行计算能力加速深度学习模型的训练和推理过程。通过使用cuDNN,开发者可以轻松地将深度学习模型部署到支持CUDA的NVIDIA GPU上,并获得显著的性能提升。
总的来说,CUDA提供了通用的并行计算平台和编程模型,而cuDNN则是针对深度学习应用进行了优化的GPU加速库,二者结合起来可以实现高效的深度学习模型训练和推理。
2.1 下载cuDNN
NVIDIA Developer https://developer.nvidia.com/rdp/cudnn-archive下载cuDNN,需要需要提前注册账号才可以登录。
选择cuDNN版本:
注意:这里要和前文安装的CUDA版本保持一致
,我的CUDA是12.1.1
,所以这里应该选择选择12.x
。
2.2 解压cuDNN
2.3 安装cuDNN
-
复制以下三个文件夹:
-
将文件夹合并至CUDA安装路径
:
- 验证cuDNN是否安装成功
在下述文件夹右键,打开终端
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\extras\demo_suite
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\extras\demo_suite
终端输入如下命令:
.\deviceQuery.exe
得到PASS即代表安装成功。
终端输入如下命令:
.\bandwidthTest.exe
得到PASS即代表安装成功。
三、LibTorch安装
LibTorch是PyTorch的C++ API,为开发者提供了一种在C++环境中使用PyTorch功能的方法
。使得那些需要将深度学习模型集成到C++应用程序中的开发者可以利用PyTorch强大的自动微分系统和动态计算图来进行模型训练、评估等操作。
3.1 LibTorch下载
首先,进入torch官网查看,并选择合适的libTorch
:
注意:这里同样要和前文安装的CUDA版本保持一致
,我的CUDA是12.1.1
,所以这里选择12.1
。
Torch官网:https://pytorch.org/get-started/locally/
这里下载,我只选择了release版本。
为什么分两个版本网上的说法不一:
- 有的说:调试运行时,debug模式要使用debug版本,release模式要使用release版本;
- 有的说:用哪个版本都行,只是debug版本会打印较多的调试信息,从而影响运行速度。
CUDA 12.1 release版本
下载地址:
https://download.pytorch.org/libtorch/cu121/libtorch-win-shared-with-deps-2.5.1%2Bcu121.zip
CUDA 12.1 debug版本
下载地址:
https://download.pytorch.org/libtorch/cu121/libtorch-win-shared-with-deps-debug-2.5.1%2Bcu121.zip
3.2 LibTorch环境变量
环境变量:下载完解压到本地,将以下配置添加到环境变量
。
3.3 VS2022配置
在正式测试运行前,我们先基于VS2022,创建一个C++项目。
选择Release X64模式:
右键项目——>属性:
点击调试,点击环境,添加路径至环境:PATH=D:\Program\libtorch-win-shared-with-deps-2.5.1+cu121\lib;%PATH%
点击VC++目录, 点击包含目录, 将libtorch和cuda的路径进行添加。
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include
D:\Program\libtorch-win-shared-with-deps-2.5.1+cu121\include
D:\Program\libtorch-win-shared-with-deps-2.5.1+cu121\include\torch\csrc\api\include
点击VC++目录, 点击库目录,将libtorch和cuda路径进行添加。
D:\Program\libtorch-win-shared-with-deps-2.5.1+cu121\lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64
点击c/c++,点击常规,点击附加包含目录,添加$(IncludePath)
点击语言,点击c++语言标准,改为c++17, 根据自己报错进行更改,我的是c++17,默认为c++14.将符合模式改为否
点击链接器,点击输入,点击附加依赖项,将你安装的libtorch路径D:\Program\libtorch-win-shared-with-deps-2.5.1+cu121\lib\*.lib
下的所有.lib文件进行添加。
到这里你的libtorch的cpu
版本就已经配置完成了。
如果需要配置gpu
版本就跟以下这个链接器的命令行有关系,在命令行的其他选型中输入/INCLUDE:?warp_size@cuda@at@@YAHXZ /INCLUDE:"?ignore_this_library_placeholder@@YAHXZ"
输入以下代码进行测试:
#include <iostream>
#include <vector>
#include<torch/torch.h>
#include<torch/script.h>
using namespace std;
int main() {
auto a = torch::rand({ 5, 3 });
std::cout << "cuda::is_available():" << torch::cuda::is_available() << std::endl;
std::cout << "torch::cuda::cudnn_is_available():" << torch::cuda::cudnn_is_available() << std::endl;
std::cout << "torch::cuda::device_count():" << torch::cuda::device_count() << std::endl;
if (torch::cuda::is_available()) {
cout << "cuda可用" << endl;
}
else
{
cout << "不可用" << endl;
}
cout << a << endl;
}
调试运行
显示以下界面说明你的环境以配置成功:
参考
Visual Studio配置libtorch:
https://blog.csdn.net/m0_67021058/article/details/136756869
VS2022+libtorch+Cuda11.3:
https://blog.csdn.net/ssunshining/article/details/124678278