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开发之旅了!!!

相关推荐
Vanranrr14 小时前
Windows 快捷键体系化实践
windows·敏捷流程
小王不爱笑13214 小时前
Java 泛型详解
java·windows·python
小手智联老徐14 小时前
Windows 下 ADB 无线调试与系统级操作指南
android·windows·adb
C++ 老炮儿的技术栈15 小时前
Qt 开发机器人客户端程序
c语言·开发语言·c++·windows·qt·机器人
李李李li15 小时前
cudnn下载链接
人工智能·windows
小涛不学习1 天前
手写线程池(从0实现 ThreadPoolExecutor 核心思想)
windows
twc8291 天前
大模型生成 QA Pairs 提升 RAG 应用测试效率的实践
服务器·数据库·人工智能·windows·rag·大模型测试
wenlonglanying1 天前
Windows安装Rust环境(详细教程)
开发语言·windows·rust
polaris06301 天前
Windows操作系统部署Tomcat详细讲解
java·windows·tomcat
mldlds1 天前
windows手动配置IP地址与DNS服务器以及netsh端口转发
服务器·windows·tcp/ip