用于搜索集合的OpenCL?

用于搜索集合的OpenCL?,opencl,gpgpu,Opencl,Gpgpu,我有一组排序的无符号空头数组,例如: 12, 222, 333, 444, 555 78, 456, 123, 987, 231 我希望找到匹配一组给定谓词的第一个或所有数组:例如:[idx[1]=222,idx[3]=444],将匹配第一行,因为索引1处的值为222,索引3处的值为444 在这个任务中,通过OpenCL在GPU上运行搜索是否会带来好处? 数据量为1到2亿项。当然,如果您有足够的行使其值得并行化,您可以在单独的内核中测试每一行(因为它们是独立的),并且如果您有一个像样的GPU,

我有一组排序的无符号空头数组,例如:

12, 222, 333, 444, 555
78, 456, 123, 987, 231
我希望找到匹配一组给定谓词的第一个或所有数组:例如:[idx[1]=222,idx[3]=444],将匹配第一行,因为索引1处的值为222,索引3处的值为444

在这个任务中,通过OpenCL在GPU上运行搜索是否会带来好处?
数据量为1到2亿项。

当然,如果您有足够的行使其值得并行化,您可以在单独的内核中测试每一行(因为它们是独立的),并且如果您有一个像样的GPU,可以获得很好的加速。

谢谢,您能在GPU上提前退出这样的操作吗?例如:如果我只想要第一个match@jdoig:很遗憾,不能取消线程块中的所有线程,它们必须运行到完成。您可以尝试使用一个全局变量信令终止,并在每K个项目上检查它。在任何情况下,如果你有一个好的GPU,你会得到比CPU快得多的执行时间。再次感谢Tudor。你能给我指一个关于你提到的技术的链接吗?(通过全局变量发出终止信号)。我担心,如果第一个匹配是索引1000,最后一个匹配是索引1.5亿,那么OpenCL路由可能没有那么高效,并且/或者返回的数据比我实际需要的要多得多(我听说将数据移动到卡中/从卡中移出是慢的部分)@jdoig:但是一行的最大长度是多少?实际上其中一个是整数(id),这就是我想要返回的。