关于CUDA内存访问的简短问题

时间:2011-05-17 08:43:55

标签: memory cuda

嘿,那里, 假设我有一个问题,每个线程计算一些东西(从常量内存中读取一些参数并使用它们进行计算),然后将其存储到全局内存矩阵中。这个矩阵永远不会被读取,只是写入访问...现在是否有任何意义上首先使用共享内存来存储所有计算的值,然后将它们写入全局内存?我认为不是因为对全局内存的写入完全保持不变,因此对共享内存的写入只会增加我之前已经写过的内容.... 谢谢!

1 个答案:

答案 0 :(得分:3)

根据内核代码中的访问模式,可以有。使用共享内存缓冲区来“分级”输出可以是确保写入被合并的有用方法,当天真写入不会被合并时。这对于前几代CUDA兼容硬件(G80 / G90)的性能非常重要。在较新的硬件中,这种情况的强度要小得多。费米卡有一个非常有效的L1和L2缓存方案,可以(在合理范围内)接近以前只能使用共享内存实现的,而无需任何额外的代码。

这个问题并没有真正的答案,因为它取决于任何给定代码所做的很多具体细节,以及预期运行良好的目标硬件。