美文网首页
windows10+visual studio2019配置cud

windows10+visual studio2019配置cud

作者: glider312 | 来源:发表于2022-05-21 19:39 被阅读0次

    1. 可以下载Geforce Experience,将显卡驱动更新到上面最新

    2. 桌面右键-->Nvidia控制面板->帮助->系统信息->组件

    查看驱动支持的最高cuda版本:


    image.png

    可以看到我的是11.6.134,所以我可以安装这个版本以下的cuda

    3. https://developer.nvidia.com/cuda-11-6-1-download-archive?target_os=Windows&target_arch=x86_64&target_version=10&target_type=exe_local

    image.png

    下载,如果想下其他版本,


    image.png

    点击第二个 "Archive of Previous CUDA Release"

    注意:这个文件不用下载到C盘

    4. 双击下载好的文件进行安装,注意安装的时候选择自定义,然后取消驱动那一项(好像是第二个),特征是他会显示安装某个版本驱动,当前版本驱动是xx, 此时把这一项取消勾选,继续安装。建议装到默认的C盘吧,其实也不是很大。

    5.安装CUDNN

    https://developer.nvidia.cn/rdp/cudnn-archive

    image.png
    点进对应的,我的就是第一个,选择下载带windows的,是一个zip文件,这个不用下载到C盘
    解压该文件,提取其中的文件夹bin,lib,include,分别复制其中内容到“C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.x”中的bin,lib/x64,include中.

    6.添加环境变量:

    CUDA安装的时候是自动添加的但是CUDNN不是,
    我的电脑右键->属性->高级系统设置->高级->环境变量

    image.png

    编辑,添加下面三个(最好先打开C盘,或者自己装的路径,找到这几个地址,如果找不到,就下载一个everything软件,用关键字在everything里搜索一下,找到路径了再粘贴过去):


    image.png

    确定->确定(直接关界面会不生效)

    验证是否安装成功:

    1.win+r -> 输入cmd进入命令行模式,依次输入(第二行依然建议先找到这个地址粘贴过来):

    nvidia-smi
    cd C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\demo_suite
    deviceQuery.exe
    bandwidthTest.exe
    
    image.png

    说明cuda安装完成

    image.png image.png

    有result=pass 说明cudnn成功

    7.配置vs:

    打开一个空的c++控制台


    image.png image.png

    换成x64,这个不改好像也没事

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


    image.png

    项目名右键->属性->

    image.png

    第一行填写
    $(CUDA_PATH)
    确定

    参考https://www.cnblogs.com/wansuiwht/p/15811478.html
    在工程名上点击右键,选择添加——新建项。在新建项对话框中选择CUDA11.x,在右侧选择CUDA 11.x C/C++ File 文件名修改为main

    image.png
    复制下代码到main.cu,运行
    #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;
    }
    

    如果成功,会显示


    image.png

    相关文章

      网友评论

          本文标题:windows10+visual studio2019配置cud

          本文链接:https://www.haomeiwen.com/subject/woacprtx.html