pie*_*tou 9 synchronization opencl
是否可以同步OpenCL工作组?
例如,我有100个工作组,每个工作组只有一个项目(不要问我为什么,这是一个例子),我需要为每个工作项设置障碍,确保所有工作组都能在这100个工作组中的每个工作项目达到此障碍点后继续.
不,你不能.您可以同步组内的线程,并且可以在命令队列中同步内核执行.
只要它们都是使用原子访问同时执行的,您就可以同步少量的组.但如果稍后安排某些小组,它会冻结,你无法控制它.
总之,不,你不能。OpenCL 范式是一种数据并行范式,其中工作组旨在独立。唯一的工作组范围同步机制是在命令队列级别,即。单独的内核启动。如果您的算法不能适应这一点,您要么需要一个新算法,要么使用不同的编程模型。
您需要记住,同时执行它们的工作组通常比硬件多得多。在这种情况下同步是不可能的。有一些方法可以使用原子内存访问原语在依赖于硬件的数量的工作组中实现自旋锁或临界区,但是它们实际上是对编程模型的滥用,并且往往仅在工作组之间的交互相对较少的情况下才有用。
| 归档时间: |
|
| 查看次数: |
5988 次 |
| 最近记录: |