当前位置: 首页 > news >正文

Windows下cuda的安装和配置

今天开始做一个cuda教程。由于本人主要在windows下使用visual studio进行开发,因此这里讲一下windows下的cuda开发环境。

下载cuda_toolkit

从网站https://developer.nvidia.com/cuda-toolkit中下载,先选择Download Now,然后跳转到如下页面:
在这里插入图片描述

选择合适的平台和安装方式。我选择的是下载离线的安装包(exe文件),另外我安装的是12.9版本。
下载完成后,双击exe开始进行安装,按照它给出的默认设置就行,但是要记住安装路径(默认似乎是安装在C:\Program Files中)。
安装完成后重启电脑(使安装过程中自动添加的环境变量生效)。

配置开发环境

由于CMake是一种非常流行的项目构建方式,且非常好用,因此本文及此专栏中的所有文章都用CMake进行构建。
新建一个文件夹,里面新建四个文件:

  • main.cpp
  • kernal.cu
  • kernal.h
  • CMakeLists.txt
    然后再建立一个build文件夹,如图所示:
    在这里插入图片描述
    图中.clang-format是用来控制代码格式的,.editorconfig是用来设置编码方式的。这两个文件现在都可以忽略。
    main.cpp中代码如下:
#include "kernal.h"
int main() { test(); }

kernal.cu中代码如下:

#include <cuda_runtime.h>
#include <stdio.h>
#include <device_launch_parameters.h>               
#include "kernal.h"
__global__ void checkIndex(void)
{printf("threadIdx:(%d, %d, %d) blockIdx:(%d, %d, %d) blockDim:(%d, %d, %d) ""gridDim:(%d, %d, %d)\n",threadIdx.x, threadIdx.y, threadIdx.z, blockIdx.x, blockIdx.y, blockIdx.z, blockDim.x, blockDim.y, blockDim.z, gridDim.x, gridDim.y,gridDim.z);
}void test()
{int nElem = 6;dim3 block(3);dim3 grid((nElem + block.x - 1) / block.x);printf("grid.x %d grid.y %d grid.z %d\n", grid.x, grid.y, grid.z);printf("block.x %d block.y %d block.z %d\n", block.x, block.y, block.z);checkIndex<<<grid, block>>>();cudaDeviceReset();return ;
}

注意,上述代码中的checkIndex<<<grid, block>>>();在Visual Studio对其进行语法检查的时候会提示错误,如图:
在这里插入图片描述
这是Visual Studio的bug,不用管,不影响运行。
kernal.h中代码如下:

void test();

CMakeLists.txt中代码如下

##要求最低cmake程序版本
cmake_minimum_required(VERSION 3.20)#本工程的名字
project(CUDAARTICLEPROJECT CUDA CXX)# 设置 CUDA 架构
set(CMAKE_CUDA_ARCHITECTURES 89)
# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# 设置 CUDA 标准
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)file(GLOB SRC_CPP ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file(GLOB SRC_CUDA ${CMAKE_CURRENT_SOURCE_DIR}/*.cu)
file(GLOB SRC_H ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
# 添加可执行文件
add_executable(${PROJECT_NAME} ${SRC_CPP} ${SRC_CUDA} ${SRC_H})# 添加 CUDA 头文件路径
target_include_directories(${PROJECT_NAME} PRIVATE"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.9/include"  
)
target_include_directories(${PROJECT_NAME} PRIVATE   "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.9/lib/x64"
)
# 设置 CUDA 分离编译
set_target_properties(${PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON
)

这个文件比较重要,它决定了整个环境的配置。
其中,set(CMAKE_CUDA_ARCHITECTURES 89)要根据自己的显卡架构来设置。我的是4060ti,设置为89。不同显卡对应的数字不同,可以在https://developer.nvidia.com/cuda-gpus中进行查询,4060ti对应的是8.9,所以这里设置为89.

target_include_directories(${PROJECT_NAME} PRIVATE"C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.9/include"  
)
target_include_directories(${PROJECT_NAME} PRIVATE   "C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v12.9/lib/x64"
)

这段代码要根据自己的实际安装路径来设置。
随后进入build文件夹,在终端中打开这个文件夹,运行cmake ..命令。如下图所示:
在这里插入图片描述
出现红框中的提示表示构建成功。然后在build文件夹中打开sln文件(默认已安装Visual Studio)。在解决方案资源管理器中右键ALL_BUILD, 生成。随后右键项目名CUDAARTICLEPROJECT,生成。都成功后点击本地Windows调试器运行代码,如果终端打印出如下结果:
在这里插入图片描述
表明cuda安装和环境配置都没问题,可以愉快地开始cuda开发之旅了!!!

http://www.dtcms.com/a/330319.html

相关文章:

  • BGP 笔记梳理
  • 110. 字符串接龙
  • 【Spring AI 1.0.0】Spring AI 1.0.0框架快速入门(6)——MCP Client(MCP客户端)
  • 最新Coze(扣子)智能体工作流:用Coze实现「图片生成-视频制作」全自动化,3分钟批量产出爆款内容
  • Docker网络命名空间隔离与VPS服务器环境的连通性测试方法解析
  • kali linux 2025.2配置局域网打印服务器惠普打印机HP1108p
  • MySQL查询表结构、表大小
  • 告别意外中断,iOS辅助工具按键精灵「异常停止重启脚本」功能介绍
  • <c1:C1DateTimePicker的日期时间控件,控制日期可以修改,时间不能修改,另外控制开始时间的最大值比结束时间小一天
  • git clone 支持在命令行临时设置proxy
  • 康托展开与逆康托展开
  • 词向量转化
  • RocketMQ 消息存储机制 CommitLog和ConsumerQu
  • 第八课:python的运算符
  • 从 VLA 到 VLM:低延迟RTSP|RTMP视频链路在多模态AI中的核心角色与工程实现
  • 论文分享 | Flashboom:一种声东击西攻击手段以致盲基于大语言模型的代码审计
  • 04-spring-手写spring-demo-aop0V1
  • Canal解析MySQL Binlog原理与应用
  • Unity、C#常用的时间处理类
  • Laravel 使用ssh链接远程数据库
  • 使用 Simple Floating Menu 插件轻松实现浮动联系表单
  • AI一周事件(2025年8月6日-8月12日)
  • [ Mybatis 多表关联查询 ] resultMap
  • ResourcelessTransactionManager的作用
  • 第三天-如何在DBC中描述CAN Signal的“负数/值”
  • JetPack系列教程(六):Paging——让分页加载不再“秃”然
  • 理财学习资料推荐
  • 谈一些iOS组件化相关的东西
  • C# 多线程:并发编程的原理与实践
  • C++中的STL标准模板库和string