将动态内存传递给cuda中的结构数组的共享内存

时间:2015-04-26 19:28:22

标签: memory cuda

我在主机中有以下结构

struct cluster {
    double *centroid;
    int num_elements;
    double *sum_elements;
 };

我想通过动态分配共享内存来调用CUDA内核。共享内存是上述结构的数组。上面的结构还有两个动态数组,这些数组将在内核中动态分配,但它们是事先知道的,让我们调用数组的大小 - d。我尝试使用以下方法调用内核:

kernel<<<block, thread, 2*d*sizeof(double) + sizeof(int)>>>

但我发现a结构的内存大小不等于其元素的内存大小之和。我的问题是:如何动态分配共享内存?谢谢。

1 个答案:

答案 0 :(得分:1)

因为@talomnies要求接受答案......我的答案是,你需要传递的大小是     d *的sizeof(簇)

如果您想了解更多相关信息,我建议您查看this answer explaining struct sizes