我在主机中有以下结构
struct cluster {
double *centroid;
int num_elements;
double *sum_elements;
};
我想通过动态分配共享内存来调用CUDA内核。共享内存是上述结构的数组。上面的结构还有两个动态数组,这些数组将在内核中动态分配,但它们是事先知道的,让我们调用数组的大小 - d。我尝试使用以下方法调用内核:
kernel<<<block, thread, 2*d*sizeof(double) + sizeof(int)>>>
但我发现a结构的内存大小不等于其元素的内存大小之和。我的问题是:如何动态分配共享内存?谢谢。
答案 0 :(得分:1)
因为@talomnies要求接受答案......我的答案是,你需要传递的大小是 d *的sizeof(簇)
如果您想了解更多相关信息,我建议您查看this answer explaining struct sizes。