我已经问过这个问题了,HERE,但没有得到满意的答案。也许是因为我把多个问题都包含在了那个问题里。我的问题是是否允许为同一网格的不同块声明不同的共享内存。
例:
Dx = blockDim.x;
Dy = blockDim.y;
Bx = BlockIdx.x;
By = BlockIdx.y;
if(By==0)
{
if (Bx==0)
{
__shared__ bds[5][5];
}
else if (Bx==(Dy-1))
{
__shared__ bds[6][6];
}
else
{
__shared__ bds[5][6];
}
}上面的代码是内核代码的一部分。我正在尝试将特定数量的共享内存分配给特定的块。这种行为在数据自动化系统中允许吗?
发布于 2014-06-12 16:48:03
既然目标已经停止了摇摆,现在有一个具体的、稳定的问题需要回答:
是的,这是完全可能的,但请注意
第二点和第三点意味着,你提议的方案没有任何规模、效率的提高。事实上恰恰相反。您的内核将需要更多的共享内存,而不是只有一个静态声明的共享内存,这是每种情况下所需的最大内存,并相应地进行了编码。
https://stackoverflow.com/questions/24181507
复制相似问题