首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL 2.0 -在只包含原子的程序中进行竞赛

OpenCL 2.0 -在只包含原子的程序中进行竞赛
EN

Stack Overflow用户
提问于 2014-08-10 15:48:07
回答 1查看 108关注 0票数 2

在“异构无种族记忆模型”一文中,作者阐述了以下几点:

“如果...in OpenCL 2.0不能正确地使用作用域,那么编写完全由原子组成的racey程序是可能的.”

这怎麽可能?有人能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-17 09:25:49

OpenCL 2.0规范(第14页)声明,如果以下情况下,程序包含数据竞赛:

它在不同的工作项或宿主线程中包含两个操作,其中

  1. 一个操作修改一个内存位置,另一个操作读取或修改相同的内存位置,
  2. 这些操作中至少有一个不是原子的,或者对应的内存作用域是不包含的,并且
  3. 行动是由全局发生--在关系之前--或在局部--发生之前--发生的局部行动无序的全局行动。

第二个子句意味着,即使这两个操作都是原子的,如果内存作用域不是“包含的”,仍然可以进行数据竞争。非包容性内存作用域的一个例子是:尝试使用workgroup作用域在不同设备上的工作项之间进行同步。

实际上,如果您的作用域是不包含的,那么很可能不会发生任何不好的事情。但从技术上讲,具有非包含内存作用域的程序违反了规范定义的约定,因此其行为没有定义。

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

https://stackoverflow.com/questions/25230284

复制
相关文章

相似问题

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