【发布时间】:2015-08-15 06:46:37
【问题描述】:
我正在尝试在我的设备中创建 Color 对象。这是我所拥有的简化版本:
在 Color.hpp:
class Color {
public:
Color(){}
float r, g, b;
// other functions
}
在 test.cu:
__global__ void runCuda(){
Color c = Color();
}
int main() {
runCuda<<<1,1>>>()
}
这给了我一个错误提示
不允许从 global 函数调用 host 函数
所以这很好。我只需要在 Color(){} 函数前面添加 __host__ 和 __device__ 。
然后我收到以下错误:
主机没有命名类型
所以据我了解,这是因为我没有使用 nvcc 编译它。问题是我正在使用 CMake 来构建我的项目。我不太确定它是如何做到的,但它似乎是用 c++ 编译器编译 .cpp 文件,用 nvcc 编译器编译 .cu 文件。
但在我的设备中,我想创建 Color 对象。有没有办法在我的 CMakefiles 或我的代码中解决这个问题?还是我需要为我现有的所有类创建一个 cuda 版本?
【问题讨论】: