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

标签 memory asynchronous opencl

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

谁能解释一下这是怎么回事?

最佳答案

因为这是问题的答案,所以我将其放在这里:

如果您以非阻塞方式将 OpenCL 调用放入循环中。然后这些调用队列必须存储在某个地方。这会占用内存,直到您clflush()到GPU,或者等待它clFinish()。然而它不应该无限期地增长,因为驱动程序应该在某个时候处理它。

关于memory - 为什么将 OpenCL 内核排队执行会导致程序的内存使用增加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20099985/

相关文章:

iOS异步功能不按顺序

c++ - 如何将字符串转换为 cl_uchar *?

c - 如何将字节数组类型转换为 8 字节大小的整数

language-agnostic - 为什么内存地址用十六进制数表示?

memory - cudaMemGetInfo 在 GTX 690 的两个设备上返回相同数量的可用内存

c++ - 多设备环境中的 OpenCL 缓冲区实例化

c++ - OpenCL 内置函数选择

python - 使用 iterparse() 解析大型 XML 会消耗太多内存。还有其他选择吗?

node.js - 对于需要异步加载大文件才能使用的 Node 模块是否有通用模式?

c# - 服务器端 AsyncPattern 调用 SQL Server