为什么将OpenCL内核排入执行会导致程序的内存使用量增加?

时间:2013-11-20 15:27:55

标签: memory asynchronous opencl

我正在使用OpenCL在Intel CPU的所有内核上运行模拟。主进程代码由一个循环组成,在该循环中重复调用opencl内核。在循环内没有分配内存,也没有使用任何事件。但是,除非我定期调用clFinish()clFlush(),否则程序的内存使用量会在模拟过程中稳步增加。

有谁能解释这里发生了什么?

1 个答案:

答案 0 :(得分:2)

因为这是我在这里提出的问题的答案:

如果以非阻塞方式将OpenCL调用排入循环中。然后这些呼叫队列必须存储在某个地方。这会占用内存,直到你clflush()到GPU,或等待它clFinish()。但是它不应该无限增长,因为司机应该在某个时候处理它。

相关问题