C++ 声明cuda中共享内存的大小

C++ 声明cuda中共享内存的大小,c++,cuda,shared-memory,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]; } 程序不工作并显示错误消息:“错误:常量值未知”。您知道如何解决该问题吗 如果要动态分配共享内存的大小,只需先声明共享内存,并在启动时给出大小: exter

在cuda c/c++中,我的代码如下所示(共享内存的大小取决于其他参数;即不是所有问题的常数):

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

程序不工作并显示错误消息:“错误:常量值未知”。您知道如何解决该问题吗

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

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]; 
    ...
}
如图所示:

共享内存大小始终可以作为模板参数传入。如果模板不是您想要的,请参阅