保姆级教程:在Windows 11上用VS2022和CUDA 12.1搭建你的第一个GPU程序

win11+CUDA12.0+vs2022环境搭建 这一步是卡在了系统兼容性检查上,最开始不通过的时候系统工程师让我“打开系统设置,搜索内核隔离,关闭下里面的所有的选项”但还是没有解决,搜了一下发现需要在“控制面板里选择卸载程序把NVIDIA Framework SDK...删掉”,然后重新安装11.2程序,就通过了,剩下的按照提示选择“自定义安装”等就可以了,其中选项中CUDA里有一个“Visual Studio Interpreter”要不要勾选,因为我之前没有下过任何东西,所以我勾选了,后面在结束里提示里安装成功。 阅读详情

保姆级教程:在Windows 11上用VS2022和CUDA 12.1搭建你的第一个GPU程序

引言:为什么你需要GPU加速?

想象一下,你正在处理一个需要大量数学运算的任务——比如训练神经网络、渲染3D图形或者分析海量数据。传统的CPU虽然通用性强,但面对这些高度并行化的计算任务时,往往显得力不从心。这时,GPU(图形处理器)的强大并行计算能力就能大显身手了。

NVIDIA的CUDA(Compute Unified Device Architecture)技术让开发者能够直接利用GPU进行通用计算。通过本教程,即使你从未接触过GPU编程,也能在Windows 11系统上,使用Visual Studio 2022和CUDA 12.1成功运行你的第一个GPU程序。我们将重点关注那些新手最容易踩坑的环节,确保你一次配置成功。

1. 环境准备:从零开始的完整检查清单

1.1 硬件与驱动验证

在开始安装任何软件之前,首先要确认你的硬件是否支持CUDA:

  1. 检查显卡型号 :右键点击桌面空白处,选择"NVIDIA控制面板" → "系统信息",查看显卡型号。只有NVIDIA显卡才支持CUDA计算。
  2. 更新显卡驱动 :
    • 打开NVIDIA GeForce Experience或访问 NVIDIA驱动下载页面
    • 安装最新版驱动后,在命令行运行:
      nvidia-smi
      
    • 输出示例:
      +---------------------------------------------------------------------------------------+
      | NVIDIA-SMI 531.14       Driver Version: 531.14       CUDA Version: 12.1               |
      |-----------------------------------------+----------------------+----------------------+
      |  GPU  Name            TCC/WDDM  | Bus-Id        Disp.A | Volatile Uncorr. ECC |
      |  Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
      |=========================================+======================+======================|
      |    0  NVIDIA GeForce RTX 4060  WDDM  | 00000000:01:00.0 Off |                  N/A |
      | N/A   39C    P3    12W /  N/A |      0MiB /  8188MiB |      0%      Default |
      +-----------------------------------------+----------------------+----------------------+
      
    • 这里显示的"CUDA Version"表示你的驱动支持的最高CUDA版本(本例为12.1)

提示:如果nvidia-smi不显示CUDA版本,说明你的显卡可能不支持CUDA,或者驱动版本过旧。

1.2 软件安装顺序与版本匹配

正确的安装顺序至关重要,否则可能导致VS找不到CUDA模板:

  1. Visual Studio 2022 (社区版即可)
    • 安装时务必勾选"使用C++的桌面开发"工作负载
    • 推荐安装路径保持默认(C:\Program Files\Microsoft Visual Studio\2022\Community)
  2. CUDA Toolkit 12.1
  3. cuDNN v8.8.1
    • 下载地址: NVIDIA cuDNN Archive
    • 需注册NVIDIA开发者账号
    • 选择对应CUDA 12.x的版本(如v8.8.1)

2. 详细安装指南:避坑手册

2.1 CUDA Toolkit安装详解

运行下载的CUDA安装包时,建议选择"自定义"安装:

  • 关键组件 :
    • CUDA → Development → Documentation → Samples(全选)
    • Driver components → 如果已安装最新驱动,可取消勾选
  • 安装路径 :
    • 默认路径为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1
    • 建议保持默认,避免后续环境变量配置混乱

安装完成后验证:

nvcc -V

预期输出:

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2023 NVIDIA Corporation
Built on Wed_Feb__8_05:53:42_Coordinated_Universal_Time_2023
Cuda compilation tools, release 12.1, V12.1.66

2.2 cuDNN配置技巧

cuDNN的配置是新手最容易出错的地方:

  1. 下载的cuDNN是一个压缩包,解压后包含三个文件夹:
    • bin
    • include
    • lib
  2. 将这些文件夹中的内容复制到CUDA安装目录的对应文件夹中:
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\bin
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\include
    • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v12.1\lib\x64

注意:是复制文件夹内的内容,不是直接覆盖文件夹本身!

3. VS2022中的CUDA项目实战

3.1 创建第一个CUDA项目

  1. 打开VS2022 → 创建新项目 → 搜索"CUDA" → 选择"NVIDIA CUDA 12.1"模板
  2. 项目命名(如HelloCUDA)→ 选择保存路径
  3. 解决方案资源管理器中会看到:
    • 源文件 → kernel.cu(CUDA核心代码)
    • 头文件 → device_launch_parameters.h(预包含的CUDA头文件)

3.2 理解模板代码

自动生成的kernel.cu包含一个简单的向量加法示例:

__global__ void addKernel(int* c, const int* a, const int* b) {
    int i = threadIdx.x;
    c[i] = a[i] + b[i];
}

int main() {
    const int arraySize = 5;
    int a[arraySize] = { 1, 2, 3, 4, 5 };
    int b[arraySize] = { 10, 20, 30, 40, 50 };
    int c[arraySize] = { 0 };
    
    int *dev_a = 0, *dev_b = 0, *dev_c = 0;
    cudaMalloc(&dev_a, arraySize * sizeof(int));
    cudaMalloc(&dev_b, arraySize * sizeof(int));
    cudaMalloc(&dev_c, arraySize * sizeof(int));
    
    cudaMemcpy(dev_a, a, arraySize * sizeof(int), cudaMemcpyHostToDevice);
    cudaMemcpy(dev_b, b, arraySize * sizeof(int), cudaMemcpyHostToDevice);
    
    addKernel<<<1, arraySize>>>(dev_c, dev_a, dev_b);
    
    cudaMemcpy(c, dev_c, arraySize * sizeof(int), cudaMemcpyDeviceToHost);
    
    cudaFree(dev_a); cudaFree(dev_b); cudaFree(dev_c);
    
    return 0;
}

关键概念解析:

  • __global__ :声明一个在GPU上执行的函数(称为kernel)
  • <<<1, arraySize>>> :执行配置,表示启动1个block,每个block有arraySize个线程
  • cudaMalloc :在GPU上分配内存
  • cudaMemcpy :在主机(CPU)和设备(GPU)之间传输数据

3.3 项目属性配置检查

右键项目 → 属性 → 确保以下配置正确:

  • 常规 :
    • 平台工具集:Visual Studio 2022 (v143)
    • CUDA C/C++ → Target Machine Platform:64-bit (x64)
  • CUDA C/C++ → Device:
    • Code Generation:compute_89,sm_89(根据你的GPU架构调整)

提示:要查询你的GPU架构,可访问 NVIDIA CUDA GPU列表

4. 常见问题与调试技巧

4.1 编译错误排查

错误类型 可能原因 解决方案
MSB3721 CUDA编译器路径错误 检查项目属性 → CUDA C/C++ → Additional Include Directories
LNK1181 cuDNN配置不正确 确认cuDNN文件已正确复制到CUDA安装目录
C2065 头文件缺失 确保包含cuda_runtime.h和device_launch_parameters.h

4.2 运行时错误处理

  1. CUDA error: invalid device function :

    • 通常是因为Code Generation设置与GPU架构不匹配
    • 解决方案:调整项目属性中的Code Generation(如改为compute_75,sm_75)
  2. CUDA error: out of memory :

    • 检查GPU内存使用情况(通过nvidia-smi)
    • 减少数据规模或优化内存管理

4.3 性能验证技巧

在main()函数最后添加打印语句,验证计算结果:

for (int i = 0; i < arraySize; i++) {
    printf("%d + %d = %d\n", a[i], b[i], c[i]);
}

预期输出:

1 + 10 = 11
2 + 20 = 22
3 + 30 = 33
4 + 40 = 44
5 + 50 = 55

5. 进阶第一步:修改模板实现自己的功能

现在你已经成功运行了第一个CUDA程序,接下来可以尝试修改模板:

  1. 改变计算任务 :

    __global__ void multiplyKernel(int* c, const int* a, const int* b) {
        int i = threadIdx.x;
        c[i] = a[i] * b[i];
    }
    
  2. 增加数据规模 :

    const int arraySize = 1000;
    // 修改执行配置为多个block
    multiplyKernel<<<10, 100>>>(dev_c, dev_a, dev_b);
    
  3. 添加错误检查 :

    #define CHECK(call) { \
        const cudaError_t error = call; \
        if (error != cudaSuccess) { \
            printf("Error: %s:%d, ", __FILE__, __LINE__); \
            printf("code:%d, reason:%s\n", error, cudaGetErrorString(error)); \
            exit(1); \
        } \
    }
    
    CHECK(cudaMalloc(&dev_a, arraySize * sizeof(int)));
    
  4. 测量执行时间 :

    cudaEvent_t start, stop;
    cudaEventCreate(&start);
    cudaEventCreate(&stop);
    
    cudaEventRecord(start);
    multiplyKernel<<<10, 100>>>(dev_c, dev_a, dev_b);
    cudaEventRecord(stop);
    
    cudaEventSynchronize(stop);
    float milliseconds = 0;
    cudaEventElapsedTime(&milliseconds, start, stop);
    printf("GPU time: %.3f ms\n", milliseconds);
    
保姆级避坑指南:在Windows 11上用VS2022编译带CUDA加速的OpenCV 4.11.0 本文提供了一份详细的Windows 11环境下使用VS2022编译支持CUDA加速的OpenCV 4.11.0的指南。从环境准备、工具下载到CMake配置、Visual Studio编译,逐步解析每个环节的潜在问题,并给出解决方案和验证脚本,帮助开发者高效完成编译过程。 阅读详情

相关推荐

保姆级教程:用VS2022+Miniforge在Win11上为RTX显卡编译llama_cpp_python(CUDA12.8适配)

本文提供了一份详细的教程,指导用户在Windows 11系统上,使用Visual Studio 2022和Miniforge,为RTX 30/40/50系列显卡编译适配CUDA 12.8的llama_cpp_python库。教程涵盖了从环境准备(CUDA Toolkit、VS2022、Miniforge)、编译配置(设置关键CMake参数),到最终生成、安装和验证自定义Wheel包的全过程,旨在帮助开发者充分利用GPU算力加速本地大语言模型推理。

ooo22的博客 544

当执行计划中出现BITMAP CONVERSION TO ROWIDS关键字时,需要注意了。

前言 前些天优化了一些耗费buffers较多的SQL,但系统CPU降低的效果不明显,于是又拉了awr报告,查看了SQL ordered by Gets排名前列的SQL。 分析 SQL代码: select distinct pro5.value as CUSTOMERCODE, to_date('19000101000000', 'yyyymmddhh24mi...

风中清淡 4565

Win11 + VS2022 + RTX4060 笔记本:保姆级CUDA 12.1开发环境配置全流程

本文详细介绍了在Win11系统下,使用VS2022和RTX4060笔记本配置CUDA 12.1开发环境的完整流程。从硬件准备、驱动安装到VS2022项目配置,特别针对移动端GPU的优化和常见问题提供了解决方案,帮助开发者高效搭建CUDA开发环境。

weixin_30764883的博客 369

bitmap conversion from rowids

最近刚接手一个系统(好像是TMS物流系统),数据库服务器有三个节点,版本为10.2.0.5。 由于是刚接手,所以先大概看了一下基本情况。情况基本理想,存在一些稍高的等待事件、高消耗sql等。需一步一步将性能提上来。 今...

congdi1071的博客 414

【PCIe DL_Feature详解】

   Data Link Control and Management State Machine在PCIe Gen4引入了DL_Feature这个状态,该状态主要用来协商PCIe link 两端是否支持新的DL Feature,目前为止DL Feature只引入了Scaled Flow Control 来提高Gen4及以上的效率。   DL_Feature 这个状态是可选的,当 Data Link Feature Extended Capability中Data Link Feature Exchang

sinat_38294441的博客 3233

Fluent新手避坑:遇到‘Floating point exception’别慌,这7个排查步骤帮你搞定

本文为Fluent新手提供了7个排查'Floating point exception'错误的实用步骤,包括边界条件检查、时间步长优化、求解器配置等关键技巧。通过系统化的诊断流程,帮助用户快速定位并解决CFD仿真中的浮点异常问题,提升计算稳定性。

weixin_42531886的博客 286

执行计划出现BITMAP CONVERSION TO ROWIDS的解释!

我在查看执行计划的时候发现BITMAP CONVERSION TO ROWIDS,好像sql反应比较慢,baidu了一下,有下面的解释!我的解决办法是: 把索引删除,建立了联合索引,就没出现这个问题了,一致性获取也下降了很多,速...

cl2689163935的博客 595

UE5.3像素流送Docker化部署:从Linux服务器搭建到云端实时渲染

本文详细介绍了在Linux服务器上使用Docker容器化部署UE5.3像素流送服务的完整流程。通过将虚幻引擎运行时、信令服务器和TURN服务打包为标准化镜像,利用Docker Compose进行编排,实现了云端实时渲染应用的快速部署、环境一致与弹性扩展,有效解决了传统部署中的环境依赖与运维难题。

k0l1m2n3o的博客 200

oracle bitmap convert,学习笔记:Oracle SQL优化 执行计划中BITMAP CONVERSION FROM ROW

天萃荷净执行计划 BITMAP CONVERSION FROM ROWIDS在有些执行计划中,可以会看到 BITMAP CONVERSION FROM ROWIDS这样的东东,也许你会感觉奇怪,我没有使用位图索引怎么出现了bitmap。我通过一个sql和大家分析下原因:sql语句为:SELECT *FROM (SELECT a.*, ROWNUM rnFROM ( SELECT module_n...

weixin_29041443的博客 984

【第1章>第5节】SOM自组织映射网络的理论学习与MATLAB仿真

自组织映射网络(Self-Organizing Map,SOM)是一种无监督学习的人工神经网络,由芬兰学者Teuvo Kohonen于1981年提出,也被称为Kohonen网络。它的主要功能是将高维输入数据映射到低维(通常是二维)的离散网格上,同时保持输入数据的拓扑结构,即相邻的输入数据在映射后的网格上也相邻。

FPGA/MATLAB学习教程/源码/项目合作开发 402

[毕设项目-MCP+ENSP]一句话搞定ENSP自动化:MCP + LLM实战(架构图、工具清单、踩坑全解)

用 MCP + LLM 把“人话”变成对华为 ENSP 的安全自动化操作,三款工具覆盖配置/查询/落盘,配套架构、实战与排坑清单。

逐梦苍穹的博客 2540

BITMAP CONVERSION TO ROWIDS

今天无意中看到了一个SQL语句的执行计划,出现了BITMAP CONVERSION TO ROWIDS,感觉甚是奇怪,这个表上明明没有bitmap index,怎么还会出现BITMAP字样,而且还是很陌生的BITMAP CONV...

cuihuang1302的博客 280

基于BERTopic模型的英文20新闻数据集主题聚类及可视化

BERTopic是基于深度学习的一种主题建模方法。BERT是一种用于NLP的预训练策略,它成功地利用了句子的深层语义信息。

Cachel Wood的博客 1460

CUDA12.1环境搭建

Windows11系统中Visual Studio 2022的CUDA 12.1环境搭建

zr2006_7的专栏 2万+

28、数字电路测试与半导体内存测试全解析

本文全面解析了数字电路中的顺序电路测试生成方法与半导体内存测试技术。内容涵盖顺序电路中的故障检测、多重观察测试、可驱动性分析、伪组合电路测试及初始化问题,并深入探讨了内存技术发展、故障模型、测试流程与未来趋势。重点介绍了DRAM、SRAM等主流内存类型的特点,以及制造和使用过程中面临的永久性与非永久性故障挑战,提出了基于故障模型的高效测试策略与优化方案。

go5gopher的博客 122

KNN算法实现数据分类及matlab完整代码

其基本思想是:对于一个未知样本,找出与该样本距离最近的k个已知样本,然后根据这k个样本的类别来确定该未知样本的类别。在本文中,我们采用iris数据集,该数据集包含四个属性:花萼长度、花萼宽度、花瓣长度、花瓣宽度,以及三个类别:山鸢尾、变色鸢尾、维吉尼亚鸢尾。KNN算法具有简单、直观、易于理解等特点,适用于多分类和二分类问题,但其计算复杂度随着样本数量的增加而增加,也容易受异常值影响。在KNN算法中,常用的距离函数有欧氏距离、曼哈顿距离等。(2)选择距离最近的k个样本,并根据它们的类别来确定未知样本的类别。

qq_39605374的博客 1515

CUDA简介, 配置和运行第一个CUDA程序(Windows和Linux)

CUDA保姆级配置教程和运行测试

qq_74083422的博客 3万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Windows11 显卡GTX1650 搭建CUDA+cuDNN环境,并安装对应版本的Anaconda和TensorFlow-GPU

为了调用计算机的GTX1650显卡进行深度学习的模型和训练,需要先搭建好CUDA和cuDNN环境。此外,TensorFlow-gpu版本对python、CUDA和cuDNN的版本也有要求,安装前需要先确定好各个软件需要安装的版本。

foreverey的博客 2万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

windows10下CUDA11.1、CUDNN11.1、tensorflow-gpu 2.4.1和torch安装教程

1. 如何彻底的卸载anaconda(包括配置文件) 安装 Anaconda-Clean package 打开 Anaconda Prompt, 输入如下命令: conda install anaconda-clean 输入如下命令卸载 anaconda-clean --yes 直接运行安装目录下的 Uninstall-Anaconda3.exe 即可,但是这样卸载并没有完全卸载。 2. windows10下CUDA11.1、cuDNN8.0、tensorflow-gpu2.4.1安装教

Paul_Huang的专栏 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Windows11安装CUDA、cuDNN、pytorch(GPU)详细教程(包含CUDA安装异常处理)

本文仅介绍Windows11系统下安装CUDA、cuDNN、pytorch(GPU)的详细教程,使用的是Anaconda+Pycharm的配置。关于这两个软件的下载安装,本文不做赘述,如有疑问,请大家自行搜索。

m0_68220374的博客 1万+

保姆级教程:在Windows上用CLion 2024.1 + CUDA 12.1 搭建你的第一个GPU程序

本教程详细指导如何在Windows系统上使用CLion 2024.1和CUDA 12.1搭建GPU开发环境,从基础配置到编写第一个CUDA程序。涵盖硬件检查、Visual Studio组件安装、CUDA Toolkit配置及CLion的CUDA支持设置,帮助开发者快速入门GPU计算,避开常见兼容性问题。

weixin_30527323的博客 392

Windows10+VisualStudio2022+CUDA11.7环境配置

Win10+CUDA11.7+VS2022环境配置

Yang Jin‘s Blog 2万+

保姆级教程:在Windows 11上为VS2022配置CUDA 12.1开发环境(含NVIDIA驱动检查)

本文提供了一份详细的保姆级教程,指导开发者在Windows 11系统上为VS2022配置CUDA 12.1开发环境,包括NVIDIA驱动检查、工具链安装顺序优化、CUDA Toolkit定制化安装、cuDNN部署验证及VS2022中的CUDA项目实战。通过实战案例和常见问题排查,帮助开发者快速掌握CUDA环境配置技巧,释放显卡计算潜力。

cotchte0421的博客 456

别再搞错顺序了!保姆级教程:在Win11上为VS2022配置CUDA 12.1开发环境(含cuDNN安装)

本文提供了一份详细的保姆级教程,指导开发者在Windows 11系统上为VS2022配置CUDA 12.1开发环境,包括cuDNN的安装步骤。通过正确的安装顺序和环境配置,帮助开发者避免常见错误,快速搭建高效的GPU加速开发环境。

cotchte0421的博客 585

深度学习第一步 利用CUDA进行GPU加速Win11+cuda11.2+cuDNN8.1+tensorflow_gpu-2.10+pytorch安装配置教程(避坑指南)

深度学习第一步 利用CUDA进行GPU加速 Win10/Win11+vs2019+cuda11.2+cuDNN8.1安装配置教程

m0_45020691的博客 8455

2026最新保姆级教程:Windows 下使用uv极速配置YOLO11 GPU环境(告别Conda,自动管理CUDA)

本文详细介绍了在Windows系统下使用uv工具配置YOLOv11环境的完整流程。主要内容包括:1)检查并安装NVIDIA显卡驱动;2)使用uv创建Python 3.10项目环境;3)安装GPU版本的PyTorch(指定CUDA 12.4版本);4)安装Ultralytics包;5)通过测试脚本验证环境配置。文中特别强调了驱动选择和CUDA版本匹配的重要性,并提供了详细的命令行操作步骤和预期输出结果。该指南适用于2026年最新版本的YOLOv11环境配置,帮助开发者快速搭建GPU加速的计算机视觉开发环境。

2401_86720553的博客 2128
上一篇: 告别DebugView!用QtService在Windows上轻松调试你的后台服务
下一篇: 别再用默认驱动了!Jetson Nano上让USB摄像头(如Astra Pro)满血运行的保姆级配置指南
cotchte0421
博客等级 码龄12年 5粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值