Есть ли эффективный алгоритм для сравнения двух 2D-массивов в CUDA как можно быстрее? В результате мне нужно количество полей массива, которые равны.
Заранее спасибо за любую помощь!
Для этих типов операций я бы порекомендовал посмотреть на http://code.google.com/p/thrust/.
Две соответствующие операции, которые могут быть полезны, это thrust :: transform для создания логического массива и thrust :: count_if для выполнения сокращения. Более эффективные методы с причудливыми итераторами и т. Д. Также возможны. Просмотрите учебники.
Если вам просто нужно количество равных элементов между двумя массивами, попробуйте уменьшить операцию. Вот пример этого на сайте NVIDIA: сокращение . Обычные сокращения суммы находят сумму всех элементов в массиве a. То, что вы хотите, это сумма выражения a == b для всех элементов. Вы должны посмотреть статьи о реализации сокращения CUDA.
a
a == b