CUDA 配置环境(一):Windowns10+VS2017+CUDA11.3

发布时间 2023-08-10 16:13:09作者: 一杯清酒邀明月

准备
  安装好VS2017和CUDA11.3,这两个软件的安装都很简单,网上也有很多的教程,对于对应的系统环境变量的配置,一般安装成功后,都会自动添加好,只需要按照网上的教程检查一下即可,下面我会给出我个人感觉不错的安装教程。

VS2017安装

CUDA安装

CUDA自带例程
(1)首先测试CUDA安装是否成功,进入cmd,输入nvcc -V,得到的输出,如图所示,表示cuda安装成功,

 (2)之后,在进入CUDA的SDK实例安装目录,默认是C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.3(该文件夹是隐藏文件夹,需要显示出来),显示隐藏文件夹的办法在下方链接:(3)在VS2017中打开Samples_vs2017.sln文件,等待加载完成

第一次的加载过程较慢,耐心等待。

(4)加载完毕后,点击本地Windowns调试器,运行解决方案,会出现类型的提醒

这是由于设备中不存在对应的符号文件,但这是文件只用于进入对应的dll代码,不影响代码运行,如果想解决可以按照以下操作;
点击工具->选项

 点击调试->符号

 勾选Microsoft服务器,呼出的对话框点击确定

回到代码页面,再次点击运行,会自动下载所需的PDB文件,第一次加载过程时间教程,之后大部分的PDB文件会被加载成功,但仍有部分的PDB未加载成功,这是由于微软的服务器中不存在对应的文件,只能从别的服务器处下载文件,但是缺少PDB文件不影响程序运行。

(5)运行其中一项例程,bicubicTexture.sln,右键该文件,点击调试->启动新实例

 (6)首次加载过程过程较慢,最终输出结果如图所示:

第一个CUDA程序

(1)新建一个项目,选择控制台应用

 (2)右键源文件夹,添加->新建项,选择c++文件,文件名为hello.cu

 (3)右键解决方案,生成依赖项->生成自定义

 (4)勾选CUDA11.3

 (5)右键Hello.cu,属性->项类型->选择cuda c/c++

 (6)右键解决方案,属性->链接器->输入->附加依赖项->添加 cudart.lib;

 (7)链接器->常规->附加库目录,添加 $(CUDA_PATH_V11_3)\lib$(Platform);

 (8)工具->选项->文本编辑器->文件扩展名->添加cu、cuh两个文件扩展名,编辑器选择Microsoft Visual C++

 (8)至此,编译环境的搭建就完成了,下面是测试代码

 1 #include< stdio.h>
 2 #include "cuda_runtime.h" 
 3 
 4 #include "device_launch_parameters.h" 
 5 
 6 bool InitCUDA()
 7 {
 8     int count;
 9 
10     cudaGetDeviceCount(&count);
11 
12     if (count == 0)
13     {
14         fprintf(stderr, "There is no device.\n");
15         return false;
16     }
17 
18     int i;
19 
20     for (i = 0; i < count; i++)
21     {
22         cudaDeviceProp prop;
23         if (cudaGetDeviceProperties(&prop, i) == cudaSuccess)
24         {
25             if (prop.major >= 1)
26             {
27                 break;
28             }
29         }
30     }
31 
32     if (i == count)
33 
34     {
35 
36         fprintf(stderr, "There is no device supporting CUDA 1.x.\n");
37 
38         return false;
39 
40     }
41     cudaSetDevice(i);
42     return true;
43 
44 }
45 
46 
47 int main()
48 {
49     if (!InitCUDA())
50     {
51         return 0;
52     }
53 
54     printf("HelloWorld, CUDA has been initialized.\n");
55     return 0;
56 }

输出结果如图所示: