atomic问题

请问, 假如block之间会同时访问几处内存,所以访问时用atomic操作。 我的问题是:不同内存地址之间是不是存在atomic冲突?即两个线程atomic访问不同内存地址,存在冲突吗?

楼主您好:

楼主您好,

如果是global memory, 地址不同,也可能存在冲突的,这要看底层的L2(你的global memory上的原子操作的实际执行者)的多组间是怎么配置的了,这个手册没有给出具体的配置关系。但你可以认为此时比同一地址一般要好。

如果是shared memory, 地址不同,则要看是否是同一的SM上,如果不是,那么无任何关系(SM和SM间无关的)。如果是在同一SM上,属于同一bank,根据第三方的不可靠的资料,则会存在冲突。

感谢您的来访。

您好。我想问的 是对不同地址 (不属于同一个L2 cache LIne) 的 atomic操作会不会影响相互之间的访问?

刚才和您说过了,

根据已有的第三方资料,这是有可能的。

建议您重新阅读。

(以及,实际上请不要考虑这个,真要考虑你也没法,无资料的。建议在日常应用中,注意主要别频繁几种在一个地址上即可。您说呢?)

不好意思。我懂你意思了。能否推荐这个资料的出处?谢谢。

抱歉我不能给出此非官方资料的具体地址,

我简要的说一下吧(请注意,仅供参考):
global memory上的原子操作在L2上进行,
而我们认为的一个大L2实际上由多组L2构成的。
某个L2在执行原子操作的时候,可能有多个不同地址上的原子操作都是该L2执行的,此时将会无法同时执行,只能强制串行。

感谢深夜来访。

感谢您的回复,对我很重要。能否告知这里的一组L2是不是指同一个cache set?还是更大颗粒?
谢谢。

无任何资料可用的。

我建议您自己测试下。

以及,可能不同的卡之间的布置也不同。

(暗暗的说一句,您可以参考AMD的资料,里面很详细,N卡实际上非常类似)
(就当作洋为中用了)

非常感谢。