【发布时间】:2013-08-28 09:36:51
【问题描述】:
我有一个 opencl 内核批处理类,它使 40 多个内核入队,并且每次内核执行之间都有一个 clFinish()。
问题:当我注释掉 clFinish()s 然后程序运行速度提高 %100 时,这是否意味着当内核使用相同的缓冲区进行写入和读取时存在未定义的行为?我怀疑性能提升来自更好地利用 gpu/占用资源。使用 按顺序命令队列 是否可以保证两个内核之间存在屏障,或者我是否需要在它们之间使用 clFinish()?
它是一个简单的物理模型,两个版本之间没有明显的区别。
也许我只需要在最后使用 clFinish() ?
编辑:此命令队列未使用 CL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE。
【问题讨论】:
-
能发一些主机代码吗?
标签: opencl