【发布时间】:2011-05-06 20:23:18
【问题描述】:
我需要一个 OpenCL 内核迭代更新缓冲区并返回结果。澄清一下:
- 将初始缓冲区内容发送到内核
- 内核/工作者更新缓冲区中的每个元素
- 主机代码读取结果 - 希望是异步的,但我不确定如何在不阻塞内核的情况下执行此操作。
- 内核再次运行,再次更新每个元素,但新值取决于之前的值。
- 重复一些固定的迭代次数。
到目前为止,我已经能够通过提供输入和输出缓冲区、在内核完成执行时将输出复制回输入以及重新启动内核来伪造这一点。由于缓冲区非常大(~1GB),这似乎是对时间的巨大浪费和对有限内存带宽的滥用。
有什么建议/例子吗?我是 OpenCL 的新手,所以这可能有一个非常简单的答案。
如果重要的话,我在 NVidia GTX460 和两个 GTX295 上使用 Cloo/OpenCL.NET。
【问题讨论】:
-
你能详细说明你是如何工作的吗?
标签: opencl