在CUDA中,使用float
是否比int
更好?
float
是否可以减少银行冲突并确保合并(或与此无关)?
在CUDA中,使用float
是否比int
更好?
float
是否可以减少银行冲突并确保合并(或与此无关)?
int
和float
的大小相同(至少我认为是这样),所以没有区别。int
和float
都是四个字节,所以如果你以相同的方式访问它们,使用哪种类型在全局内存访问合并或共享内存访问中的bank冲突方面并没有区别。
话虽如此,由于设备旨在尽可能快地处理float
,因此使用float
可能会获得更好的性能,而int
通常用于控制和索引等,因此性能较低。当然,情况比这更复杂 - 如果你只有浮点数,那么整数硬件将闲置,这将是一种浪费。
银行冲突和合并都与内存访问模式有关(即warp内的线程是否以统一步幅读/写不同位置)。因此,这些问题与数据类型(float、int、double等)无关。
请注意,数据类型确实会影响计算性能。单精度浮点比双精度浮点更快等。GPU中强大的浮点运算器通常意味着在定点数中进行计算是不必要的,甚至可能是有害的。