首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL - atomic_cmpxchg

OpenCL - atomic_cmpxchg
EN

Stack Overflow用户
提问于 2011-07-01 14:12:44
回答 1查看 2.1K关注 0票数 1

这个函数是做什么的?我无法理解OpenCL规范中的任何内容!!下面的代码是spMV代码的一个片段。

代码语言:javascript
复制
atomic_cmpxchg((__global int*)loc, *((int*)&old), *((int*)&sum)) != *((int*)&old)
EN

回答 1

Stack Overflow用户

发布于 2011-07-01 15:00:33

atomic_cmpxchg是“原子比较和交换”。它实现了标准C99三元操作的原子版本。对于上面的代码,它暗示了以下的原子等价物:

代码语言:javascript
复制
p = *loc;
*loc = (p == *old) ? (*sum != *old) : p;

其中atomic_cmpxchg调用返回p。该操作是原子的,这意味着在事务完成之前,没有其他线程可以从loc读取或写入。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6544258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档