0


VS Visual Studio 2017 +cuda环境配置+创建项目

VS Visual Studio 2017 +cuda环境配置+创建项目

一、使用vs+cuda+cudnn环境配置

配置过程必须先安装VS,在安装cuda和cudnn

1、安装VS 2017-2022 其中一个版本

VS官网下载地址:https://visualstudio.microsoft.com/zh-hans/

2、安装CUDA

首先,在Geforce Experience软件更新驱动到最新版本。
其次,查看当前支持的cuda版本。在cmd中输入nvidia-smi查看,支持最高版本为cuda12.3。

然后,进入cuda官网进行下载https://developer.nvidia.com/cuda-toolkit-archive

选择合适版本的CUDA,这里我们选择版本12.2进行下载,进入下载页面,根据系统版本以及安装方式进行选择,点击Download进行安装包下载。

下载完成后进行双击安装,可以自定义安装路径。

同意安装协议。

选择自定义安装。

默认全部安装,选择下一步。
在这里插入图片描述可以自定义选择安装路径。
在这里插入图片描述
直接下一步,cuda开始安装。安装完成之后检查系统环境变量。
在这里插入图片描述
path变量里面新增下面几项内容。
在这里插入图片描述
在Path变量里面手动增加如下几项,该路径为CUDA的安装路径。
在这里插入图片描述
在cmd命令框中查看是否安装成功。输入 nvcc -v 命令进行查看。输入版本信息即为安装成功。

3、配置CUDNN

进入官网进行下载对应版本的cudnn。需要提前注册好nvidia账号,官网地址为:https://developer.nvidia.com/rdp/cudnn-archive
可以看到cuda的对应版本cudnn
根据系统进行选择
点击下载之后,解压缩包之后,将三个文件夹复制到刚刚cuda的安装目录即可。
LICENSE不进行复制

环境配置完成之后进行检验。进入刚才的cuda安装目录的extras\demo_suite下的bandwidthTest.exe和deviceQuery.exe检查是否安装成功,收到result=pass则表示安装成功了!
在这里插入图片描述
在这里插入图片描述

二、使用vs生成cuda项目的两种方法

方法1 直接生成cuda项目

1.直接创建一个CUDA项目

2.项目名右键->属性->CUDA C++ ->第一行填写 $(CUDA_PATH) ->
确定

3.更改Windows SDK : 项目名右键->属性->常规->Windows SDK 版本 选择已安装的版本。

方法2 使用空项目进行配置

1.打开一个空项目

2.项目名右键->生成依赖项->生成自定义->勾选CUDA

2.项目名右键->属性->第一行填写 $(CUDA_PATH) ->
确定

4.在工程名上点击右键,选择添加——新建项。在新建项对话框中选择CUDA12.2,在右侧选择CUDA 12.2 C/C++ File 文件名修改为main

5.复制下代码到main.cu,运行

// A code block
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <iostream>
__global__ void VecAdd(int* A, int* B, int* C)
{
    int i = threadIdx.x;
    C[i] = A[i] + B[i];
}
int main() {
    const int size = 3;
    int a[size] = { 1,2,3 };
    int b[size] = { 10,20,30 };
    int c[size] = { 0 };
    //定义设备变量
    int* dev_a = 0;
    int* dev_b = 0;
    int* dev_c = 0;
    //CUDA状态
    cudaError_t cudaStatus;
    //选择GUP
    cudaStatus = cudaSetDevice(0);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "选择GPU失败,您的电脑上没有GPU");
        return 0;
    }
    //分配GUP内存
    cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));
    if (cudaStatus != cudaSuccess)
        fprintf(stderr, "dev_c内存分配失败");
    cudaStatus = cudaMalloc((void**)&dev_a, size * sizeof(int));
    if (cudaStatus != cudaSuccess)
        fprintf(stderr, "dev_a内存分配失败");
    cudaStatus = cudaMalloc((void**)&dev_b, size * sizeof(int));
    if (cudaStatus != cudaSuccess)
        fprintf(stderr, "dev_b内存分配失败");
    //从主机内存复制数据到GPU内存
    cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "dev_a复制失败");
    }
    //从主机内存复制数据到GPU内存
    cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "dev_b复制失败");
    }
    //调用GPU计算
    VecAdd << <1, size >> > (dev_a, dev_b, dev_c);
    //获取错误状态
    cudaStatus = cudaGetLastError();
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "VecAdd 调用失败: %s\n", cudaGetErrorString(cudaStatus));
    }

    cudaStatus = cudaDeviceSynchronize();
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "cudaDeviceSynchronize 返回错误 %d!\n", cudaStatus);
    }
    //将计算结果返回主机
    cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
    if (cudaStatus != cudaSuccess) {
        fprintf(stderr, "从GPU复制数据失败!");
    }
    printf("{1,2,3} + {10,20,30} = {%d,%d,%d}\n",
        c[0], c[1], c[2]);
    cudaFree(dev_a);
    cudaFree(dev_b);
    cudaFree(dev_c);
    return 0;
}

6.编译并执行。

三、cuda项目创建过程中遇到的问题解决

#include <stdio.h>报错
解决办法:重新配置windows sdk,选择本机已经安装的SDK即可。
在这里插入图片描述

标签: visual studio ide

本文转载自: https://blog.csdn.net/qq_41491827/article/details/134257389
版权归原作者 qq_41491827 所有, 如有侵权,请联系我们删除。

“VS Visual Studio 2017 +cuda环境配置+创建项目”的评论:

还没有评论