2011-04-03 2 views
9

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

Кажется, мне нужно знать максимальный размер хэш-карты априори, чтобы выделить память устройства. Все мои предыдущие попытки CUDA использовали массивы и memcpys и поэтому были довольно простыми.

Любое понимание этой проблемы оценивается. Благодарю.

ответ

8

Существует реализация графика хэш-таблицы графического процессора, представленная в «CUDA на примере», от Джейсона Сандерса и Эдварда Кандро.

К счастью, вы можете получить информацию об этой книге и скачать исходный код примеров свободно на этой странице:
http://developer.nvidia.com/object/cuda-by-example.html

В этом варианте осуществления таблица предварительно выделяется на CPU и безопасный многопоточный доступ обеспечивается функцией блокировки, основанной на атомной функции atomicCAS (Compare and Swap).

Кроме того, предполагается, что более новая аппаратная генерация (от 2.0) в сочетании с CUDA> = 4.0 может использовать непосредственно новые/удаленные операторы на графическом процессоре (http://developer.nvidia.com/object/cuda_4_0_RC_downloads.html?utm_source=http://forums.nvidia.com&utm_medium=http://forums.nvidia.com&utm_term=Developers&utm_content=Developers&utm_campaign=CUDA4), которые могут служить вашей реализации. Я еще не тестировал эти функции.

3

Я помню, что кто-то разработал простую реализацию хеш-карты сверху thrust. Для него есть код here, хотя он работает с текущими выпусками топора, чего я не знаю. Это может по крайней мере дать вам некоторые идеи.

+0

Обновление: Поскольку платформа Google для платформы находится в завершении работы, вы можете в этом репозитории GitHub: https://github.com/djebm2/cuda-thrust-extensions/tree/master/hash%20map – Madhatter

1

AFAIK, хеш-таблица, приведенная в «Cuda by Example», не работает слишком хорошо. В настоящее время, я считаю, самая быстрая хеш-таблица на CUDA приведена в Dan Alcantara's PhD dissertation. См. Главу 6.

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