这个功能有什么作用??我无法理解 OpenCL 规范中的任何内容!下面的代码是 spMV 代码的片段。
atomic_cmpxchg((__global int*)loc, *((int*)&old), *((int*)&sum)) != *((int*)&old)
Run Code Online (Sandbox Code Playgroud)
atomic_cmpxchg是“原子比较和交换”。它实现了标准 C99 三元运算的原子版本。对于上面的代码,它意味着以下的原子等效项:
p = *loc;
*loc = (p == *old) ? (*sum != *old) : p;
Run Code Online (Sandbox Code Playgroud)
随着atomic_cmpxchg电话的回拨p。loc该操作是原子的,这意味着在事务完成之前没有其他线程可以读取或写入。
| 归档时间: |
|
| 查看次数: |
2486 次 |
| 最近记录: |