在“异构无种族记忆模型”一文中,作者阐述了以下几点:
“如果...in OpenCL 2.0不能正确地使用作用域,那么编写完全由原子组成的racey程序是可能的.”
这怎麽可能?有人能解释一下吗?
发布于 2014-09-17 09:25:49
OpenCL 2.0规范(第14页)声明,如果以下情况下,程序包含数据竞赛:
它在不同的工作项或宿主线程中包含两个操作,其中
第二个子句意味着,即使这两个操作都是原子的,如果内存作用域不是“包含的”,仍然可以进行数据竞争。非包容性内存作用域的一个例子是:尝试使用workgroup作用域在不同设备上的工作项之间进行同步。
实际上,如果您的作用域是不包含的,那么很可能不会发生任何不好的事情。但从技术上讲,具有非包含内存作用域的程序违反了规范定义的约定,因此其行为没有定义。
https://stackoverflow.com/questions/25230284
复制相似问题