【发布时间】:2019-09-08 22:44:56
【问题描述】:
我有一个 CUDA 程序,其中一个 warp 需要访问(例如)96 字节的全局内存。
它正确对齐内存位置和通道索引,以便在单个事务中合并和完成访问。
程序可以使用 12 个通道进行访问,每个通道访问一个 uint8_t。或者,它会使用 6 个通道访问 uint16_t,或 3 个通道访问 uint32_t。
这些替代方案之间是否存在性能差异,如果每个线程访问的内存量较小,访问是否会更快?
当每个 warp 需要访问的内存量不同时,优化它以使线程尽可能访问更小的单元(16 位或 8 位)是否有好处?
【问题讨论】: