2010-12-20 2 views
2

Есть ли эффективный алгоритм для сравнения двух 2D-массивов в CUDA как можно быстрее? В результате мне нужно несколько полей массива, которые равны.CUDA как сравнить два 2D-массива?

Заранее благодарим за любую помощь!

ответ

1

Если вы просто хотите количество равных элементов между двумя массивами, попробуйте операцию уменьшения. Вот пример этого на сайте NVIDIA: reduction. Нормальные сокращения сумм найдут сумму всех элементов в массиве a. Вы хотите получить сумму выражения a == b для всех элементов. Вы должны посмотреть статьи о реализации сокращения CUDA.

+0

Неработающая ссылка, к сожалению. [Это] (http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_website/projects/reduction/doc/reduction.pdf), возможно? –

1

Для этих типов операций я бы рекомендовал посмотреть на http://code.google.com/p/thrust/.

Две подходящие операции, которые могут быть полезны, - это thrust :: transform, чтобы построить булевский массив и thrust :: count_if для выполнения сокращения. Также возможны более эффективные методы с фантастическими итераторами и т. Д. Просмотрите учебники.

Смежные вопросы