【发布时间】:2013-08-22 18:41:23
【问题描述】:
如果要释放 GPU 资源,我需要将排队的 OpenCL 内核出列。有没有可能?
我正在做的是对内核和 I/O 副本进行排队。然后在主机端检查这个结果是否正确。但是由于 70% 的时间是不正确的,所以我在主机中检查结果时将另一个运行排队(CPU+GPU 是并行的!)。这样,GPU 就 100% 处于使用状态。
但是,一旦我发现结果是正确的,我就无法取消正在进行的内核。就是在浪费 GPU 资源。
我正在并行使用许多 OpenCL 队列和内核,因此这实际上减慢了我的速度并将瓶颈置于 GPU 中。甚至可以使内核出队吗?
谢谢。
【问题讨论】:
-
我有一个这样的用例,我将内核分成几个不同偏移量的运行来处理数据的每个部分。这样,当我不需要处理所有数据时,我可以更好地控制停止的能力。这显然不会在所有情况下都有效,但由于大多数优化的 GPGPU 代码已经分成小的并行处理组,这应该不是太大的问题。因此,对于您的情况,您将拥有 RUN_A_PART_1, RUN_A_PART_2 然后 RUN_B_PART_1, RUN_B_PART_2 然后当您释放命令队列时,它只会完成当前正在执行的小子集。
标签: opencl