CUDA __global__ 函数中:
执行sizeof( class ) 的结果与 __host__中结果不一致,经分析,是由于类是继承于一个基类,且他的一个成员也是继承于同一基类:
如下:
class A0
{
}
class A1
{
}
class B0: public A0
{
double v;
}
class B1: public A0
{
B0 v;
}
B1 的size就是 sizeof(B0)+8=16
class B2: public A1
{
B0 v;
}
B2由于和B0派生自不同的基类,其size正常 就是 sizeof(B0) =8
上述问题原因产生还不太清楚,可能是cuda采用的编译器在处理数据结构对齐时的一种机制。