【发布时间】:2013-04-22 05:12:38
【问题描述】:
在 OS X OpenCL CPU 运行时中,文档here 指出“工作项被安排在提交给 Grand Central Dispatch 的不同任务中”。这似乎表明工作组本质上是无操作的,您应该为(工作项数)=(硬件线程数)而(工作组数)无关紧要。然而,在其他实现中,同一工作组中的项目之间通过本质上的协程(setjmp 和 longjmp)进行低成本切换,这将使安排更多工作项目的成本大大降低(因为您避免了完整的操作系统管理的线程项目之间的上下文切换),这反过来将更容易在 CPU 和 GPU 目标之间重用代码。根据“Heterogeneous Computing with OpenCL”,AMD 的 CPU 运行时执行此操作,我隐约记得一些文档表明 Intel 的 CPU 运行时也是如此。
谁能确认 OS X CPU 运行时中工作组的行为?
【问题讨论】:
标签: macos opencl grand-central-dispatch