问题01:
如果线程之间的数据请求频率非常高(每个线程从特定列中选择至少一个数据),那么使用常量内存中的数据存储是否比 Pascal 架构中的纹理有任何好处?
问题02:
如果warp中的每个线程都从常量内存中请求相同的指令数据,但每个线程都从不同的地址请求它(没有广播),那么性能会比纹理内存差吗?
问题03:
常量内存和纹理的缓存是否具有相同的性能?它们的尺寸是否相似?我可以在 Pascal 架构上为常量或纹理操作缓存维度吗?
背景:
内核中有一部分肯定会从纹理内存中的 2D 矩阵的特定列请求一些浮点数据,通常,每个线程都请求存储在来自前一个线程的请求数据“下方”的相邻单元格中的数据。
对于大多数经线,同一经线中的两个线程请求相同地址的频率低于 25%,但在不到 10% 的经线中可以达到 50%。
可以肯定的是,这个特定的列适合 cmem 用于 95% 的情况。