我的代码在cuda c / c ++中看起来像这些(共享内存的大小取决于其他参数;即不是所有问题的常量):
__global__ void dist(){
int a=4; int b=2;
const int d=a+b;
__shared__ short unsigned int shared_nodes[a];
}
程序不起作用并显示错误消息:“错误:常量值未知。”你知道我该如何解决这个问题吗?
答案 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];
...
}
就像描述的图片一样: