如何最大化共享存储器内的原子操作效率

我不认为“OPENCL似乎就可以声明一个共享空间,映射为全局内存的”您的说法是正确的,
也不能理解此说法。

我的意思是,这个空间是BLOCK内各个线程可见的。但不是映射为共享存储器,而是映射为GLOBAL的。
共享空间是一个逻辑上的概念,指各个线程共享可访问空间,而不是特指物理上的共享存储器。

我明白你的意思,你是说用途和shared memory一样,存放位置和global memory一样,

但是我真心不知道“OPENCL可以声明一个共享空间,映射为全局内存”的您的说法是怎么回事。

我建议其他版主给出答案,如果有的话。

实际上原子操作在kepler上要快很多(相比tesla和fermi). 另外我要补充的一点是:shared memory上的原子操作已经很快了(只要冲突量不是非常大,且由于shared memory是block私有的-这本身就是一种让冲突操作发散的办法)。如果要优化原子操作是很trick的,我建议楼主检查一下,看程序的瓶颈是不是原子操作,如果不是,就没有必要纠结于此。

感谢风辰yyfn大指出kepler上会快很多。

其次,对于shared memory上效率如何,以及,是否逻辑上的私有关系决定实际的冲突,以及实际上这些操作被什么因素所左右,我暂时保留我个人的看法。

同时,感谢风大指出任何对原子操作的优化都很tricky的意见。同时我也赞同风大yyfn的楼主自己检查自己是否真的需要优化的看法。