在cuda中声明共享内存的大小

时间:2014-01-09 01:31:26

标签: c++ cuda shared-memory

我的代码在cuda c / c ++中看起来像这些(共享内存的大小取决于其他参数;即不是所有问题的常量):

__global__ void dist(){
     int a=4; int b=2;
     const int d=a+b;
    __shared__ short unsigned int shared_nodes[a];
}

程序不起作用并显示错误消息:“错误:常量值未知。”你知道我该如何解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

如果要动态分配共享内存的大小,只需先声明共享内存,然后在启动时给出大小:

extern __shared__ char array[];
__global__ void shared_memory_1(float* result, int shared_size)
{
    float* sh_data = (float*)array; 
    float* sh_data2 = (float*)&sh_data[shared_size]; 
    ...
}

就像描述的图片一样: enter image description here