最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)

最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)

本篇博客根据NVIDIA 官方文档所述, 并根据自己实践得出. 供各位需要的朋友参考.

1.前言

本篇文章的软件环境为:

  • Windows 10
  • CUDA 11.6
  • VS2019

CUDA是目前做人工智能, 深度学习等方向的必备工具库. 由CUDA衍生出的加速工具很多, 如: cuDNN, TensorRT, cuBLAS等HPC加速库, 或者涉及最新的元宇宙概念中的Omniverse等.

在很多时候, 非常多的NVIDIA加速库的底层加速方案都是CUDA. 我们可能在绝大多数时候不会直接利用CUDA写代码, 但是了解CUDA如何运转或者基本概念一定能让你如虎添翼.

如果大家感兴趣也可以查看本人翻译的官方的CUDA编程手册,希望能帮到大家.
https://blog.csdn.net/kunhe0512/category_11774233.html

2.VS 2019

对于VS, 我用的其实极少. 本人从一开始就被老板带进了Vim + Makefile的环境. 这里简单提一下.

目前我用的是VS2019, 大家可以根据自己需要下载所需版本, 下面是链接地址.
https://visualstudio.microsoft.com/zh-hans/vs/

在这里插入图片描述

这里需要重点提的是, 尽量把使用C++的桌面开发选择上.后续在用CMake的时候会比较方便.

3.CUDA下载

CUDA官方安装教程: https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html

CUDA Toolkit的下载: https://developer.nvidia.com/cuda-downloads

点击上述下载页面之后, 你会看到:
在这里插入图片描述

你需要自己选择你的操作系统, 系统架构, 系统版本 和 安装方式.

选择完成之后, 点击 Download(2.5 GB) 的按钮,就可以下载了.

当然, 如果你想安装历史版本(更早期的版本), 那么也可以点击下面的Archive of Previous CUDA Releases来下载, 操作方法同上.

下载好之后, 你就可以看到以下图标:

在这里插入图片描述

4.安装配置

双击你下载的CUDA Toolkit, 你就会看到工具包的解压路径(推荐默认).

在这里插入图片描述

解压完毕之后, 就开始安装了, 接下来点击同意并继续:
在这里插入图片描述

接下来设置安装选项, 这里推荐点击自定义(特别是第一次安装):

在这里插入图片描述

然后将能选的都选上, 很多东西可能你一开始用不上(比如nsight系统), 但是当你做的越来越多, 涉及的越来越深的时候就可能会用到.
在这里插入图片描述

然后选择安装路径, 这里也推荐默认, 毕竟是底层的调用库

在这里插入图片描述

接下来就不用你在操作了, 直到CUDA Toolkit 安装完毕.

5.环境变量

右键点击我的电脑(此电脑) --> 属性 --> 高级系统设置 --> 环境变量, 查看CUDA路径是否已经在系统中, 如果没有记得添加上.

在这里插入图片描述

6.测试CUDA安装是否成功

利用(Win + R)–>cmd, 打开系统终端命令行, 输入

nvcc -V

如果你看到如下结果, 证明你的CUDA已经安装完毕.
在这里插入图片描述

7.利用Visual Studio 2019 进行CUDA程序开发

打开已经安装好的VS 2019, 选择创建新项目:
在这里插入图片描述

选择CUDA 11.xx Runtime, 这里的xx代表你的版本.

在这里插入图片描述

给你的CUDA程序起个名字: Matrix_transpose
这里的名字随便起的, 因为我后面要写一个矩阵转置的示例,所以才用Matrix_transpose这个名字

在这里插入图片描述

创建之后, 你会发现里面已经有了一些代码, 那个是向量相加的示例. 你不用管他, 把kernel.cu中的代码删掉, 就可以开始你自己的开发了.

在这里插入图片描述

你可以尝试输入一下代码, 完成一个矩阵转置的实例:

#include <stdio.h>
#include <stdlib.h>
#include "error.cuh"

#define TILE_DIM 32   //Don't ask me why I don't set these two values to one
#define BLOCK_SIZE 32
#define N 3001 // for huanhuan, you know that!

__managed__ int input_M[N * N];      //input matrix & GPU result
int cpu_result[N * N];   //CPU result


//in-place matrix transpose
__global__ void ip_transpose(int* data)
{
    __shared__ int tile_s[TILE_DIM ][TILE_DIM + 1];
    __shared__ int tile_d[TILE_DIM ][TILE_DIM + 1];

    int x = blockIdx.x * TILE_DIM + threadIdx.x;
    int y = blockIdx.y * TILE_DIM + threadIdx.y;

    //Threads in the triangle below
    if (blockIdx.y > blockIdx.x) {
        int dx = blockIdx.y * TILE_DIM + threadIdx.x;
        int dy = blockIdx.x * TILE_DIM + threadIdx.y;
        if (x < N && y < N)
        {
            tile_s[threadIdx.y][threadIdx.x] = data[(y)*N + x];
        }
        if (dx < N && dy < N)
        {
            tile_d[threadIdx.y][threadIdx.x] = data[(dy)*N + dx];
        }

        __syncthreads();
        if (dx < N && dy < N)
        {
            data[(dy)*N + dx] = tile_s[threadIdx.x][threadIdx.y];
        }
        if (x < N && y < N)
        {
            data[(y)*N + x] = tile_d[threadIdx.x][threadIdx.y];
        }
    }
    else if (blockIdx.y == blockIdx.x)//Threads on the diagonal
    {
        if (x < N && y < N)
        {
            tile_s[threadIdx.y][threadIdx.x] = data[(y)*N + x];
        }
        __syncthreads();
        if (x < N && y < N)
        {
            data[(y)*N + x] = tile_s[threadIdx.x][threadIdx.y];
        }
    }
}

void cpu_transpose(int* A, int* B)
{
    for (int j = 0; j < N; j++)
    {
        for (int i = 0; i < N; i++)
        {
            B[i * N + j] = A[j * N + i];
        }
    }
}

int main(int argc, char const* argv[])
{

    cudaEvent_t start, stop_gpu;
    CHECK(cudaEventCreate(&start));
    CHECK(cudaEventCreate(&stop_gpu));


    for (int i = 0; i < N; ++i) {
        for (int j = 0; j < N; ++j) {
            input_M[i * N + j] = rand() % 1000;
        }
    }
    cpu_transpose(input_M, cpu_result);

    CHECK(cudaEventRecord(start));
    unsigned int grid_rows = (N + BLOCK_SIZE - 1) / BLOCK_SIZE;
    unsigned int grid_cols = (N + BLOCK_SIZE - 1) / BLOCK_SIZE;
    dim3 dimGrid(grid_cols, grid_rows);
    dim3 dimBlock(BLOCK_SIZE, BLOCK_SIZE);
    ip_transpose << <dimGrid, dimBlock >> > (input_M);
    CHECK(cudaDeviceSynchronize());
    CHECK(cudaEventRecord(stop_gpu));
    CHECK(cudaEventSynchronize(stop_gpu));

    float elapsed_time_gpu;
    CHECK(cudaEventElapsedTime(&elapsed_time_gpu, start, stop_gpu));
    printf("Time_GPU = %g ms.\n", elapsed_time_gpu);

    CHECK(cudaEventDestroy(start));
    CHECK(cudaEventDestroy(stop_gpu));

    int ok = 1;
    for (int i = 0; i < N; ++i)
    {
        for (int j = 0; j < N; ++j)
        {
            if (fabs(input_M[i * N + j] - cpu_result[i * N + j]) > (1.0e-10))
            {
                ok = 0;
            }
        }
    }


    if (ok)
    {
        printf("Pass!!!\n");
    }
    else
    {
        printf("Error!!!\n");
    }

    return 0;
}

点击运行之后, 你就可以看到如下结果:

在这里插入图片描述

OK, 到这里你就完成了CUDA环境的搭建, 并且写了第一个CUDA程序

<think>嗯,用户想在Windows上安装CUDA 11.6,我需要根据提供的引用资料来整理步骤。首先,用户提到显卡是1660ti,对应的CUDA版本是11.6,这可能是因为驱动支持的最大版本是12.3,但用户需要11.6来做之前的实验。根据引用[2][3],安装前需要先检查驱动支持的CUDA版本,使用nvidia-smi命令查看。然后,要访问NVIDIA官网下载CUDA 11.6的安装包,注意选择正确的操作系统版本。安装过程中可能需要自定义安装选项,比如不安装重复的显卡驱动。安装完成后,验证环境变量是否自动配置,以及通过命令行检查版本。可能遇到的问题包括驱动不兼容或环境变量未正确设置,这时候需要更新驱动或手动添加路径。另外,用户可能后续需要安装cuDNN配置深度学习框架,这部分也要简要提及。需要确保步骤清晰,分点说明,让用户能一步步操作。同时,引用资料中的信息要正确标注来源,比如引用[1]、[2]、[3]对应的内容。要避免使用复杂术语,保持语言简单明了,并提醒用户注意驱动版本系统兼容性。</think>### 分步说明:Windows 系统安装 CUDA 11.6 #### 第一步:验证显卡驱动兼容性 1. 打开命令行工具(CMD/PowerShell),输入: ```bash nvidia-smi ``` 2. 查看输出中显示的 **最高支持的 CUDA 版本**。例如: ``` | NVIDIA-SMI 531.18 Driver Version: 531.18 CUDA Version: 12.1 | ``` 虽然此处显示支持 CUDA 12.1,但根据引用[1][2][3],只要驱动版本满足 CUDA 11.6 的最低要求即可安装。 #### 第二步:下载 CUDA 11.6 安装包 1. 访问 [CUDA Toolkit 11.6 官网](https://developer.nvidia.com/cuda-11-6-0-download-archive) 2. 选择操作系统(Windows)、架构(x86_64)、版本(Win10/Win11) 3. 下载 **Base Installer**(约 3GB)可能的补丁包 #### 第三步:安装 CUDA 11.6 1. 运行下载的 `exe` 安装文件 2. **关键步骤**: - 选择 **自定义安装**(避免覆盖现有驱动) - 取消勾选 `Display Driver`(若已安装最新驱动) - 保留 `CUDA` 相关组件全选 3. 安装完成后检查环境变量是否自动添加: ``` PATH 中应包含:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\bin ``` #### 第四步:验证安装 1. 打开新命令行窗口,执行: ```bash nvcc --version ``` 应显示: ``` nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2021 NVIDIA Corporation Built on Tue_Nov_16_19:24:09_Pacific_Standard_Time_2021 Cuda compilation tools, release 11.6, V11.6.112 ``` #### 第五步:配置开发环境(可选) 1. 安装对应版本的 cuDNN(需从 NVIDIA 开发者网站下载) 2. 配置深度学习框架(如 PyTorch 1.12.0): ```bash conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.6 -c pytorch ``` ### 常见问题排查 1. **驱动不兼容**:若安装后出现图形异常,可通过 `设备管理器` 回滚显卡驱动 2. **环境变量失效**:手动添加 `CUDA_PATH` 系统变量指向安装目录 3. **版本冲突**:使用 `where nvcc` 检查多版本 CUDA 的优先级 ### 引用说明 安装 CUDA 11.6 的关键在于驱动版本兼容性,如引用[2]指出可通过 `nvidia-smi` 确认驱动支持范围,而引用[3]强调即使驱动支持更高版本也可选择安装旧版 CUDA 用于特定开发需求[^2][^3]。 ---
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扫地的小何尚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值