找回密码
 立即注册
snake3342 该用户已被删除
发表于 2013-9-20 08:32:46
13232
我看cuda5.0的英文版programming guide。
其中142页说到:

D.2.7  Templates
A __global__function template cannot be instantiated with a type or typedef that is defined within a function or is private to a class or structure, as illustrated in the following code sample

template <typename T>
__global__ voidmyKernel1(void) { }
template <typename T>
__global__ voidmyKernel2(T par) { }
class myClass {
private:
struct inner_t { };
public:
static voidlaunch(void)
{
// Both kernel launches below are disallowed
// as myKernel1 and myKernel2 are instantiated
// with private type inner_t
myKernel1<inner_t><<<1,1>>>();
C/C++ Language Support

inner_t var;
myKernel2<<<1,1>>>(var);
}
};

我的问题是:是不是把struct inner_t { };的定义放在myClass类的外面,那两个__global__函数就都可以被正确运行了?
使用道具 举报 回复
发表于 2013-9-20 13:18:34
楼主您好,

我不是C++用户,无法解答您此问题。

建议您等待其他会员,版主,NVIDIA原厂支持,总版主为您解答。

感谢节日来访。

使用道具 举报 回复 支持 反对
发表于 2013-9-23 11:51:55
横扫千军 发表于 2013-9-20 13:18
楼主您好,

我不是C++用户,无法解答您此问题。

因为贵帖长期无人回答,现在将被移动到灌水专区。
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册

zzczczxczxczx