C++ CUDA中的一个字符实际需要多少内存?

C++ CUDA中的一个字符实际需要多少内存?,c++,c,cuda,C++,C,Cuda,在我的CUDA内核中,我需要很多索引,所有索引的范围都小于256。为了节省内存和内存带宽,我计划将这些索引放在char中,而不是int中 这真的会节省我的内存吗?或者CUDA会自动为一个字符使用32位或64位内存吗 (内存合并在这里不是问题,因为所有内核的索引都是相同的。)字符本身将占用一个字节。CUDA不是一个奇怪的系统,所以它是常规的8位字节。这是否节省取决于上下文。如果数组中有这些字符索引,它们之间就不会有填充,这样可以节省时间。如果每个字符都是一个结构的一部分,并且夹在两个整数之间,则会

在我的CUDA内核中,我需要很多索引,所有索引的范围都小于256。为了节省内存和内存带宽,我计划将这些索引放在
char
中,而不是
int

这真的会节省我的内存吗?或者CUDA会自动为一个
字符使用32位或64位内存吗


(内存合并在这里不是问题,因为所有内核的索引都是相同的。)

字符本身将占用一个字节。CUDA不是一个奇怪的系统,所以它是常规的8位字节。这是否节省取决于上下文。如果数组中有这些字符索引,它们之间就不会有填充,这样可以节省时间。如果每个字符都是一个结构的一部分,并且夹在两个整数之间,则会有填充(CUDA对齐整数)。

我想只要字符在全局或共享内存中,或者当我显式定义一些字符变量(将绑定到寄存器)或者当我进行计算(这也将发生在寄存器中)时,这种情况就会持续,一个字符使用一个完整的寄存器。这是否正确?@Michael Nvidia GPU只有32位宽的寄存器一个
char
变量存储在CPU的寄存器中,也使用整个CPU寄存器。这里没有什么特别的。