0%

【CUDA编程】初始配置及一个简单实例

在去年写的一篇文章《Win10 + VS2017 + CUDA10.1 + CPLEX12.9 配置》中,我们已经介绍了如何安装CUDA和使用VS作为编程环境。一晃半年过去了,现在准备用GPU做点东西,投个会议。由于新换了电脑,我又重新安装了运行环境,结果遇到了如下语法问题:

  1. C语言常用的一些头文件都无法打开,如图1:
    图1
  2. 在调用核函数时, 也会显示语法有错(但是可以编译运行),如图2:
    图2

解决办法:

对于问题1,主要原因是VS在安装时,有些文件没有进行勾选安装。此时,我们需要使用Visual Studio Installer进行安装。具体来说:

  1. 打开Visual Studio, 选择工具(Tool)中的获取工具(Get Tools and Features),从而打开Visual Studio Installer; 或者你可以直接从开始菜单中打开;
  2. 在单个组件中,勾选如下文件并安装:
    图3
  3. 右击你的项目,选择属性,在Windows SDK Version中选择你刚才安装的组件版本:
    图4

对于问题2,主要原因是版本问题,具体可见链接:https://stackoverflow.com/questions/6061565/setting-up-visual-studio-intellisense-for-cuda-kernel-calls 。我主要采用了上述中的办法,即在文件头中定义宏:

1
2
3
4
5
6
7
8
9
#ifdef __CUDACC__
#define KERNEL_ARGS2(grid, block) <<< grid, block >>>
#define KERNEL_ARGS3(grid, block, sh_mem) <<< grid, block, sh_mem >>>
#define KERNEL_ARGS4(grid, block, sh_mem, stream) <<< grid, block, sh_mem, stream >>>
#else
#define KERNEL_ARGS2(grid, block)
#define KERNEL_ARGS3(grid, block, sh_mem)
#define KERNEL_ARGS4(grid, block, sh_mem, stream)
#endif

然后我们可以在调用核函数的时候使用上述命令:

图5


一个例子

这里我们给出一个简单的小例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

#include<stdio.h>
#include"cuda_runtime.h"
#include"device_launch_parameters.h"

#ifdef __CUDACC__
#define KERNEL_ARGS2(grid, block) <<< grid, block >>>
#define KERNEL_ARGS3(grid, block, sh_mem) <<< grid, block, sh_mem >>>
#define KERNEL_ARGS4(grid, block, sh_mem, stream) <<< grid, block, sh_mem, stream >>>
#else
#define KERNEL_ARGS2(grid, block)
#define KERNEL_ARGS3(grid, block, sh_mem)
#define KERNEL_ARGS4(grid, block, sh_mem, stream)
#endif


__global__ void hello()
{
printf("Hello world From GPU!!!\n");
}

int main()
{
hello << <1, 10 >> > ();
cudaDeviceSynchronize();

printf("\n");

hello KERNEL_ARGS2(1, 10)();

return 0;
}

运行结果如下:

图6

坚持原创技术分享,您的支持将鼓励我继续创作!