在我的CUDA内核中,我需要很多索引,所有索引都在小于256的范围内。为了节省内存和内存带宽,我打算将这些索引放在char
而不是int
这实际上会节省我的内存吗?或者CUDA会自动为一个char
使用32或64位内存吗?
(内存合并在这里不是问题,因为所有内核的索引都是相同的。)
答案 0 :(得分:2)
char本身将占用一个字节。 CUDA不是一个奇怪的系统,所以它是常规的8位字节。这是否是一种节约取决于背景。如果你在数组中有这些char索引,它们之间将没有填充,你将节省时间。如果每个char都是结构的一部分并且夹在两个整数之间,那么将具有填充(CUDA对齐整数)。