<分区>
我的代码在 cuda c/c++ 中看起来像这样(共享内存的大小取决于其他参数;即不是所有问题都是常数):
__global__ void dist(){
int a=4; int b=2;
const int d=a+b;
__shared__ short unsigned int shared_nodes[a];
}
程序无法运行并显示错误消息:“错误:常数值未知。”你知道我该如何解决这个问题吗?
标签 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];
}
程序无法运行并显示错误消息:“错误:常数值未知。”你知道我该如何解决这个问题吗?
最佳答案
如果要动态分配共享内存的大小,只要先声明共享内存,启动时给出大小即可:
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];
...
}
就像描述的图片:
关于c++ - 在cuda中声明共享内存的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010090/