我正在尝试在 CUDA 中使用我的 c++ 类。
我有这样的课程:
#include<string>
#include<stdlib.h>
class exampleClass{
int i;
__host__ __device__ exampleClass(int _i):i(_i){};
__host__ __device__ void increment(){i++;}
__host__ __device__ string outputMessage(return itoa(i);}
};
我已将其设置在 .cu 文件中并设置为编译 CUDA c/c++
这无法使用 nvcc 编译,因为 cuda 没有字符串。
我想做的是通过执行以下操作保留仅 CUDA 的功能:
#ifndef __CUDA_ARCH__
#include<string>
#endif
#include<stdlib.h>
class exampleClass{
int i;
__host__ __device__ exampleClass(int _i):i(_i){};
__host__ __device__ void increment(){i++;}
#ifndef __CUDA_ARCH__
string outputMessage(return itoa(i);}
#endif
};
但我知道这不起作用……至少,它对我不起作用。nvcc 不喜欢包含字符串,也不喜欢需要字符串类型的函数。
如果示例不是一流的,请道歉。总之,我想做的是让核心类成员在 CUDA 上可执行,同时保持在主机端进行花哨的主机操作以进行分析和输出的能力。
更新:我的最终目标是拥有一个基类,其中包含几个指向多个多态类的指针类型。这个基类本身将是可派生的。我认为这在 CUDA5.0 中是可能的。我弄错了吗?