【发布时间】:2012-06-14 20:45:53
【问题描述】:
正如标题所暗示的那样,我正在寻找如何有效地交换两个 OpenCL 缓冲区。我的内核使用两个全局缓冲区,一个作为输入,一个作为输出。但是,我在 for 循环中使用相同的 NDRange 调用我的内核,每次设置内核参数、将内核排入队列并交换缓冲区,因为之前的输出缓冲区将是下一次迭代的输入缓冲区种子。
交换这两个缓冲区的适当方法是什么?我想将缓冲区复制回主机到一个已经 malloc 的数组并使用clEnqueueWriteBuffer() 和clEnqueueReadBuffer() 将其复制到下一个输入缓冲区是一种低效的方法。否则我只是使用一个临时的cl_mem 变量来进行交换。
【问题讨论】: