windows10+visual studio2019配置cuda记录

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 222,104评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,816评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,697评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,836评论 1 298
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,851评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,441评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,992评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,899评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,457评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,529评论 3 341
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,664评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,346评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,025评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,511评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,611评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 49,081评论 3 377
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,675评论 2 359

推荐阅读更多精彩内容