CUDA共享内存占用的空间是所需空间的两倍

时间:2012-11-09 21:48:48

标签: cuda shared-memory

我刚注意到我的CUDA内核使用的空间是“理论”计算的空间的两倍。 e.g。

__global__ void foo( )
{
    __shared__ double t;
    t = 1;
}

PTX信息显示:
ptxas info:_Z3foov的函数属性,0字节堆栈帧,0字节溢出存储,0字节溢出加载
ptxas info:使用了4个寄存器,16个字节的smem,32个字节的cmem [0]

但双人的大小只有8。

更多示例:

__global__ void foo( )
{
    __shared__ int t[1024];
    t[0] = 1;
}

ptxas info:使用3个寄存器,8192个字节的smem,32个字节的cmem [0]

有人可以解释原因吗?

1 个答案:

答案 0 :(得分:1)

似乎问题已经在当前的CUDA编译器中消失了。

__shared__ int a[1024];

使用命令'nvcc -m64 -Xptxas -v -ccbin /opt/gcc-4.6.3/bin/g++-4.6.3 shmem.cu'编译

ptxas info    : Used 1 registers, 4112 bytes smem, 4 bytes cmem[1]

在这种情况下有一些共享内存开销,但使用量不会翻倍。