share memory的赋值何时生效?

楼主您好:

(1)除了__syncthreads()外,最简单的方式是将用volatile修饰shared memory中的数组,这样只要写入语句结束,warp里的其他线程都可以看到。

(2)如果不仅仅是在warp内,而是在block内,推荐使用__syncthreads()替代volatile.

(3)warp vote显然无此效果(它本来就不是用来干shared memory的,无关的,它只能用来交换1bit的数据,在warp内的)。
如果是warp内需要交换4B数据(例如一个float), 您还可以用warp shuffle, 这样可以规避shared memory操作,但您需要购买3.0+(包含)的卡。

感谢来访。