CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)

CUDA+VS2017+win环境下 cuda工程环境搭建

  • 引言
  • 前提准备(CUDA和VS的安装)
  • Visual Studio 配置
  • 测试
  • Reference

引言

在学习CUDA并行计算原理时,在VS下新建了一个CUDA工程,但是对加载函数定义中的一些CUDA标识符无法正常识别。错误如下:

__device__   错误:该符号未定义

这个标识符的作用是声明函数从设备端调用并在设备端执行

前提准备(CUDA和VS的安装)

  • Visual Studio(如果确定CUDA和VS安装正确,可以直接转到到Visual Studio配置。) :首先安装VS必要组件(C++桌面程序) CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)_第1张图片

  • CUDA 在 NVIDIA官网链接(此处是CUDA11.0)上下载符合自己显卡且所需版本的CUDA安装,安装后需要配置环境变量,这个网上教程很多,不再赘述。
    安装完成后,记得使用测试程序测试一下是否正确安装。

Visual Studio 配置

  1. 创建CUDA工程:打开vs,创建新项目,选择CUDA项目,填写项目名称选择路径。如上图所示。

  2. 增加包含目录
    右键项目属性->VC++目录->包含目录,将安装好CUDA中include加入包含目录中,将下方这两个路径加入。
    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include
    C:\ProgramData\NVIDIA Corporation\CUDA Samples\v11.0\common\incCUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)_第2张图片

  3. 增加项目扩展名
    点击上方菜单栏工具=>选项=>文本编辑器=>文件扩展名,在扩展名栏中输入.cu,并选择编辑器为:Microsoft Visual C++。
    CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)_第3张图片

5.工具–>选项–>项目和解决方案–>VC++项目设置,添加要包括的扩展名".cu"

CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)_第4张图片
6. 右键打开的项目–>生成依赖项–>生成自定义–>勾选CUDA v11.0
CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)_第5张图片

测试

测试案例来自: [CUDA高性能并行计算链接]第三章中项目dist_v1_cuda
下面展示一些 案例代码

// An highlighted block

#include<stdio.h>
#include<iostream>
#define N 64
#define TPB 32

__device__ float scale(int n, int i) {
	return((float)i) / (n - 1);
}
__device__ float distance(float x1, float x2) {
	return sqrt((x2 - x1)*(x2 - x1));
}

__global__ void distanceKernel(float *d_out,float ref,int len)
{
	const int i = blockIdx.x*blockDim.x + threadIdx.x;
	float x = scale(i, N);
	d_out[i] = distance(x, ref);
	printf("i=%2d:dist from %f to %f is %f.\n", i, ref, x, d_out[i]);
}
int main() {
	float ref = 0.5f;
	float *d_out = 0;
	cudaMalloc(&d_out, N * sizeof(float));
	distanceKernel <<<N/TPB, TPB>>>(d_out,ref,N);
	system("pause");
	cudaFree(d_out);
	return 0;

}

编译成功
在这里插入图片描述
结果
CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明)_第6张图片

Reference

[1] Storti D , Yurtoglu M . CUDA for Engineers: An Introduction to High-Performance Parallel Computing[C]// Addison-Wesley Professional. Addison-Wesley Professional, 2016.
[2] 欧阳求败 https://www.bilibili.com/read/cv7335974/

你可能感兴趣的:(CUDA+VS2017+win环境下 cuda工程环境搭建(解决标识符未定义或申明))