关于我遇到的链接和多重定义函数时遇到的另一个问题,我想简单地将我的cuda代码包装在单例类中。具有私有全局内核方法的C++类
沿
class Singleton{
public:
__host__ void doSomething();
private:
__global__ void someKernel();
};
即显然只装置可用于方法和上面给出“无效存储器限定符的组合”的东西。我想将我的代码包装在一个类中以获得更多结构化的代码,但是如果我需要从外部放置每个内核,则没有多大意义。
同样的问题已经在NVIDIA的网站先前提出的,但没有一个答案 http://forums.nvidia.com/index.php?showtopic=176623
我也理解与这个指针的问题,但即使是静态方法不能是全球性的。
这里真的有问题吗? CUDA语言不允许在类中使用'__global__'声明,大多数原因与内核无法调用内核的原因相同,并且不支持外部链接。工具链和硬件都不能做任何支持这些事情所需的东西。 – talonmies
尽管它们看起来很优雅,但它们是不好的选择。继续使用静态方法或全局函数,它们可以帮助您调用对象及其功能。因此,您也可以维护状态(如果需要) – sarat