OpenCL -atomic_cmpxchg
这个功能有什么作用??我无法理解 OpenCL 规范中的任何内容! 下面的代码是 spMV 代码的片段。
atomic_cmpxchg((__global int*)loc, *((int*)&old), *((int*)&sum)) != *((int*)&old)
What does this function do??. I couldn't understand a thing from the OpenCL specification!!
The code below is a snippet from spMV code.
atomic_cmpxchg((__global int*)loc, *((int*)&old), *((int*)&sum)) != *((int*)&old)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
atomic_cmpxchg
是“原子比较和交换”。它实现了标准 C99 三元运算的原子版本。对于上面的代码,它意味着以下原子等效项:atomic_cmpxchg
调用返回p
。该操作是原子的,这意味着在事务完成之前没有其他线程可以从 loc 读取或写入。atomic_cmpxchg
is "atomic compare and exchange". It implements an atomic version of the standard C99 ternary operation. For the code above it implies the atomic equivalent of the following:with the
atomic_cmpxchg
call returningp
. The operation is atomic, this means that no other thread can read or write fromloc
until the transaction is completed.