Есть ли эффективный алгоритм для сравнения двух 2D-массивов в CUDA как можно быстрее? В результате мне нужно несколько полей массива, которые равны.CUDA как сравнить два 2D-массива?
Заранее благодарим за любую помощь!
Есть ли эффективный алгоритм для сравнения двух 2D-массивов в CUDA как можно быстрее? В результате мне нужно несколько полей массива, которые равны.CUDA как сравнить два 2D-массива?
Заранее благодарим за любую помощь!
Если вы просто хотите количество равных элементов между двумя массивами, попробуйте операцию уменьшения. Вот пример этого на сайте NVIDIA: reduction. Нормальные сокращения сумм найдут сумму всех элементов в массиве a
. Вы хотите получить сумму выражения a == b
для всех элементов. Вы должны посмотреть статьи о реализации сокращения CUDA.
Для этих типов операций я бы рекомендовал посмотреть на http://code.google.com/p/thrust/.
Две подходящие операции, которые могут быть полезны, - это thrust :: transform, чтобы построить булевский массив и thrust :: count_if для выполнения сокращения. Также возможны более эффективные методы с фантастическими итераторами и т. Д. Просмотрите учебники.
Неработающая ссылка, к сожалению. [Это] (http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_website/projects/reduction/doc/reduction.pdf), возможно? –