gpt4 book ai didi

buffer - 如何有效地交换OpenCL内存缓冲区?

转载 作者:行者123 更新时间:2023-12-04 13:33:44 25 4
gpt4 key购买 nike

恰如标题所示,我正在寻找如何有效交换两个OpenCL缓冲区的方法。我的内核使用两个gloabl缓冲区,一个作为输入,一个作为输出。但是,我用相同的NDRange在for循环中调用我的内核,每次设置内核参数,排队内核并交换缓冲区,因为先前的输出缓冲区将是下一次迭代的输入缓冲区种子。

交换这两个缓冲区的合适方法是什么?我认为将缓冲区复制回主机到已经分配了内存的数组之一,然后使用clEnqueueWriteBuffer()clEnqueueReadBuffer()将其复制到下一个输入缓冲区是一种低效的方法。否则,我只是使用一个临时的cl_mem变量来进行交换。

最佳答案

您不需要,只需使用clSetKernelArg设置正确的内核参数,然后再次将您的内核加入队列(使用clEnqueueNDRangeKernel)。缓冲区将保留在设备上,不会将任何内容复制回主机。

当然,在这种情况下,必须使用CL_MEM_READ_WRITE创建缓冲区。

关于buffer - 如何有效地交换OpenCL内存缓冲区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11041081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com