cuda profiler手册指出,由于更加宽松的合并策略,未合并的内存事务的数量将始终为零。但我确信仍然存在不合并的情况。怎么计算呢?是否有任何工具或模拟器可以帮助?其中,哪一个似乎最准确? 感谢
答案 0 :(得分:11)
在设备1.0中,您只有两个选项:
在设备1.2和1.3中,这是以不同的方式完成的。 想象一下,您的设备内存分为每个128字节的块。您需要的内存事务数与您命中的块数一样多。所以:
有很多情况,所以将其分为两类:合并/未合并已经没有任何意义了。这就是为什么,Cuda Profiler采用了不同的方式。它们只计算内存事务的数量。您的访问模式越随机,内存事务计数就越高,即使您拥有相同的内存访问指令数。
以上是略微简化的模型。实际上,内存事务可以访问128字节,64字节或32字节宽的块 - 以节省带宽。在列表浏览器中查找列加载128b,加载64b,加载32b,并存储128b,存储64b,存储32b。