CUDA - Реализация устройства хэш-карты? - PullRequest
10 голосов
/ 04 апреля 2011

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

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

Ответы [ 3 ]

9 голосов
/ 04 апреля 2011

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

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

В этой реализации таблица предварительно выделяется на ЦП, и безопасный многопоточный доступ обеспечивается функцией блокировки на основе атомарной функции 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), что может служить вашей реализации. Я еще не тестировал эти функции.

2 голосов
/ 04 апреля 2011

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

1 голос
/ 28 февраля 2013

AFAIK, хеш-таблица, приведенная в "Cuda by Example", работает не слишком хорошо.В настоящее время, я полагаю, самая быстрая хеш-таблица на CUDA приведена в диссертации доктора Дан Алькантара Посмотрите на главу 6.

...