CUDA如何比较两个二维数组?

3

是否有一种高效的算法可以在CUDA中尽可能快地比较两个2D数组?结果我需要相等的数组字段数量。

提前感谢任何帮助!

2个回答

2
如果您只是想得到两个数组之间相等元素的数量,可以尝试使用reduce操作。 NVIDIA网站上有一个示例:reduction。普通的sum reductions会找到数组a中所有元素的和。而您需要的是对于所有元素表达式a == b的总和。您应该查找关于CUDA reduction实现的文章。

1
链接已经失效,很遗憾。也许是这个链接:http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_website/projects/reduction/doc/reduction.pdf? - Engineer

2
对于这些类型的操作,我建议查看http://code.google.com/p/thrust/

两个相关的操作可能会有用,分别是thrust::transform用于构造布尔数组和thrust::count_if用于进行规约。还可以使用带有高级迭代器等更有效的技术。浏览一下教程。


或者使用 thrust::equal https://thrust.github.io/doc/group__comparisons_gad90af5f86ba9092cd92c0ae4ebd8d677.html。(大部分工作将是将2D结构适应为类似于thrust可以接受的形式。) - alfC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接