我有一个包含多个工作项的OpenCL内核。让我们假设讨论,我有一个带有x * y元素的二维工作空间,它们处理一个大小相同但sparce的输入元素数组。这些输入元素中很少产生结果,我想保留,大多数不会。我想将另一个内核排入队列,只将保留的结果作为输入。
OpenCL是否有可能将结果附加到某种列表中以将其作为输入传递给另一个内核,或者是否有更好的想法来减少解决方案空间的数量?此外:考虑到OpenCL的编程模型,这是一个很好的问题吗?
答案 0 :(得分:2)
如果结果数据的数量很小(即:0-10%),我将使用local atomics和global atomics,使用全局计数器。
内核1< ---->之间的数据接口内核2 :
int counter //used by atomics to know where to write
data_type results[counter]; //used to store the results
<强> Kernel1:强>
<强> Kernel2:强>