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

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

  1. C语言常用的一些头文件都无法打开,如图1:
    【CUDA编程】初始配置及一个简单实例_第1张图片
  2. 在调用核函数时, 也会显示语法有错(但是可以编译运行),如图2:
    图2

解决办法:

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

  1. 打开Visual Studio, 选择工具(Tool)中的获取工具(Get Tools and Features),从而打开Visual Studio Installer; 或者你可以直接从开始菜单中打开;
  2. 在单个组件中,勾选如下文件并安装:
    【CUDA编程】初始配置及一个简单实例_第2张图片
  3. 右击你的项目,选择属性,在Windows SDK Version中选择你刚才安装的组件版本:
    【CUDA编程】初始配置及一个简单实例_第3张图片

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

#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

一个例子

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


#include
#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;
}


运行结果如下:

【CUDA编程】初始配置及一个简单实例_第4张图片

你可能感兴趣的:(CUDA编程)