我有一组随机整数。例如[132, 2, 31, 49, 15, 6, 70, 18 ... , 99, 1001]
。我想生成大于100的所有数字的数组,并获得该数组的大小。
有两种方法:
copy_if
的新功能。它基于
GenericScanKernel
如果我们更深入Prefix Sums。 copy_if
是否始终正常运作?我可以看到copy_if
不使用原子。是否可能使用copy_if
?
与原子方式相比,copy_if
的性能怎么样?
你会选择什么?为什么?
答案 0 :(得分:0)
我从未见过copy_if
的错误。总是一样的结果;它似乎非常强大。 (不过,我还没有建立单元测试。)
至于性能,copy_if
应该快得多,特别是如果你的GPU很快。正如其他人所说,原子和GPU是一个糟糕的组合(我学到了很多东西......)
如果预期结果的数量相对于您的数据集很小,我建议使用sparse_copy_if()
方法here ---您还可以在其中找到copy_if
示例。< / p>
分叉我的代码,以下内容应该有效:
from my_pyopencl_algorithm import copy_if
final_gpu, evt = my_pyopencl_algorithm.sparse_copy_if(array_gpu, "ary[i] > 100", queue = queue)