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中代码如下:
cpp 复制代码
#include "kernal.h"
int main() { test(); }

kernal.cu中代码如下:

cpp 复制代码
#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中代码如下:

cpp 复制代码
void test();

CMakeLists.txt中代码如下

CMake 复制代码
##要求最低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.

cpp 复制代码
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开发之旅了!!!

相关推荐
霖002 小时前
FPGA的PS基础1
数据结构·人工智能·windows·git·算法·fpga开发
哈基米喜欢哈哈哈3 小时前
进程和线程
java·linux·windows·笔记
苦逼IT运维6 小时前
Jenkins + SonarQube 从原理到实战三:SonarQube 打通 Windows AD(LDAP)认证与踩坑记录
运维·服务器·windows·docker·云计算·jenkins·devops
coding随想7 小时前
Windows终端powershell执行curl命令报错:Invoke-WebRequest : 无法处理参数,因为参数名称“C”具有二义性。
windows·后端
羊仔AI探索8 小时前
Windows也能用!Claude Code硬核指南
ide·人工智能·windows·ai·aigc
心灵宝贝8 小时前
EVEREST 5.50.2249 最终版安装教程(附安装包下载后操作步骤)
windows
钢铁男儿9 小时前
Python 元类基础:从理解到应用的深度解析
java·windows·python
十五年专注C++开发9 小时前
通信中间件 Fast DDS(一) :编译、安装和测试
linux·c++·windows·中间件·cmake·vcpkg
布兰妮甜11 小时前
Visual Studio Code 跨平台快捷键指南:Windows 与 macOS 全面对比
windows·vscode·macos·编辑器·快捷键