share memory的赋值何时生效?

感谢您的心得反馈:

但果断warp shuffle的效率和直接带有volatile关键字的shared memory上的交换效率不同的。
我这里说明一下,避免您的结论误导其他会员(但这不代表对您的批判):

(1)warp shuffle和shared memory均需要通过LSU执行相应指令的(请注意warp shuffle指令不是被SP执行的)
(2)warp shuffle的理论吞吐率是32操作/cycle/smx(或者按warp计算是1操作/cycle/smx)。warp shuffle在它的理论吞吐率下,可以在一个周期内完成32个4B数据的交换。而shared memory需要经过至少2步的写入-读取操作,甚至还需要进行地址计算的操作。

因为上文(1)(2)给出的的执行单元信息和吞吐率数据,warp shuffle一般比shared memory的交换效率要高2倍~3倍(分别对应无需使用SP进行地址计算和需要使用SP进行地址计算)。

您的测试没有得到速度上的提升,可能是因为您的kernel的数据交换操作不是瓶颈,从而无法凸显出来。但对于一些原来需要shared memory进行交换的算法,在升级到3.x的硬件后,如果可以使用warp shuffle,往往会得到较高的性能提升。

非常感谢您的心得反馈,此文完全不是对您的批评,只是简单的阐述一些客观资料,避免其他会员误解您,从而造成对您不满。
(此文信息来自非官方公开资料,仅供参考)