未在此范围内声明“ checkCudaErrors”

时间:2019-06-30 09:56:34

标签: c++ cuda

我编写了一个新的CUDA程序,但是在编译时出现错误$.get is not a function。因此,我添加了'checkCudaErrors' was not declared in this scope,但仍然遇到相同的问题。

我使用Visual Studio Code打开了文件helper_cuda.h,发现该文件大部分是灰色的。问题是我没有定义#include "helper_cuda.h",所以我添加了__DRIVER_TYPES_H__。但这没用。在文件driver_types.h中,它表明我已经具有定义#include "driver_types.h"。我该如何解决?

真正的问题是,文件driver_tyeps.h显示我已经具有__DRIVER_TYPES_H__的定义,但是helper_cuda.h显示我没有该定义。

2 个答案:

答案 0 :(得分:0)

您必须自己定义它:

#define checkCudaErrors(call)                                \
  do {                                                        \
    cudaError_t err = call;                                   \
    if (err != cudaSuccess) {                                 \
      printf("CUDA error at %s %d: %s\n", __FILE__, __LINE__, \
             cudaGetErrorString(err));                        \
      exit(EXIT_FAILURE);                                     \
    }                                                         \
  } while (0)

答案 1 :(得分:0)

我已经通过更改include语句的顺序解决了我的问题。 一开始,我的程序是这样的:

    #include "helper_cuda.h"
    #include "driver_types.h"

但现在是:

    #include "driver_types.h"
    #include "helper_cuda.h"

我不知道为什么,但是它可以工作。