我刚刚注意到我的 CUDA 内核使用的空间恰好是“理论”计算的空间的两倍。例如
__global__ void foo( )
{
__shared__ double t;
t = 1;
}
PTX 信息显示:
ptxas 信息:_Z3foov 的函数属性,0 字节堆栈帧,0 字节溢出存储,0 字节溢出加载
ptxas 信息:使用 4 个寄存器,16 字节 smem,32 字节 cmem[0]
但是双倍的大小只有 8。
更多示例:
__global__ void foo( )
{
__shared__ int t[1024];
t[0] = 1;
}
ptxas 信息:使用了 3 个寄存器,8192 字节 smem,32 字节 cmem[0]
有人可以解释为什么吗?