【发布时间】:2015-09-17 02:01:12
【问题描述】:
在我的命令队列中,我有一个用户事件 E 和内核 K1、K2 和 K3。
我将 K1 加入队列,等待事件到 E。
我将 K2 加入队列,等待事件设置为 K1 的完成事件。
我将 K3 入队,等待事件设置为 K2 的完成事件。
假设我需要在 E 触发之前释放这个命令队列。我该怎么做呢?目前,发布只是挂起。事件如果我将 E 上的事件状态设置为 -1,仍然不会释放。
【问题讨论】:
标签: opencl
在我的命令队列中,我有一个用户事件 E 和内核 K1、K2 和 K3。
我将 K1 加入队列,等待事件到 E。
我将 K2 加入队列,等待事件设置为 K1 的完成事件。
我将 K3 入队,等待事件设置为 K2 的完成事件。
假设我需要在 E 触发之前释放这个命令队列。我该怎么做呢?目前,发布只是挂起。事件如果我将 E 上的事件状态设置为 -1,仍然不会释放。
【问题讨论】:
标签: opencl
至少在
我知道,这很糟糕。
释放队列会先调用队列中的clFinish(),导致锁的情况。
我遇到了这种情况,当时我有足够的 GPU 资源,而 CPU 是瓶颈。所以我在 GPU 中对下一次迭代进行排队,根据 CPU 结果,是否足够,我运行更多迭代或丢弃 GPU 结果。
一旦 CPU 知道它不再需要的数据就能够停止排队的执行会很棒。但是你要么稍后排队(导致一些 GPU 空闲时间),要么一直运行它,但如果不需要它就不要等待结果(导致额外的 GPU 使用)。
【讨论】: