1

所以我的问题是:我在mac os x山狮上使用Nvidia的nsight应用程序来编写一个CUDA应用程序:源代码是.h/.cu/.cpp混合。

我有一个带有以下声明的 HelloCUDA.h 标头:

//yep, both taken from examples.
__device__ unsigned int bitreverse2(unsigned int number);

__global__ void bitreverse(void *data);

我有一个定义这些方法的 HelloCUDA.cu 文件:

__device__ unsigned int bitreverse3(unsigned int number) {
    //definition
    return number;
}

__global__ void bitreverse4(void *data) {
    //another definition...
    bitreverse3(idata[threadIdx.x]);
}

它一直有效,直到我使用 eclipse 的(nsight)新类向导添加了一个新的 C++ 类文件(.h/.cpp)。现在,当我尝试构建那个东西时:

../src/HelloCUDA.h:21: error: expected constructor, destructor, or type conversion before ‘unsigned’
../src/HelloCUDA.h:23: error: expected constructor, destructor, or type conversion before ‘void’

我检查了项目设置,我认为没有任何变化。

那么,什么给了?任何人都可以,请,帮我解决这个问题?

4

2 回答 2

1

您可能使用“CUDA C Bitreverse Application”模板创建了一个新的 CPP 文件。该模板适用于 CUDA C 文件。只需删除文件内容并添加您的 C++ 代码即可。

于 2013-05-14T20:22:12.950 回答
0

上述解决方案都没有帮助我。只需在文件顶部导入:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

解决了。(我在VS Studio2019下)

于 2021-03-17T18:27:18.710 回答