1
我正尝试在我的设备中创建Color对象。这里是什么,我有一个简化版:如何在cpp和cuda模块中使用cuda类头文件
在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>>>()
}
这给了我一个错误说
calling a host function from a global function is not allowed
所以这很好。我只需要在Color(){}函数前添加__host__和__device__。
但后来我得到以下错误:
host does not name a type
所以从我个人理解,这种情况正在发生,因为我不跟NVCC编译它。问题是我正在使用CMake来构建我的项目。我不太清楚它是如何做的,但它似乎是用C++编译器编译.cpp文件,用nvcc编译器编译.cu。
但在我的设备中,我想创建Color对象。有没有办法解决这个或者在我的CMakefiles或我的代码?或者我需要为我所有的现有类创建一个cuda版本?
我简单地复制了你所拥有的,并且C++编译器像预期的那样工作,但是nvcc编译器给了我同样的错误。 – MoneyBall
我有一些我现在纠正的错别字。 –
这也适用于Color类中的函数吗? – MoneyBall