CUDA — Реализация хеш-карты устройства?

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

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

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


person nedblorf    schedule 03.04.2011    source источник


Ответы (3)


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

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

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

Более того, предполагается, что более новое поколение оборудования (начиная с 2.0) в сочетании с CUDA >= 4.0 сможет напрямую использовать операторы new/delete на GPU ( 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 ), которые могут подойти для вашей реализации. Я еще не тестировал эти функции.

person jopasserat    schedule 04.04.2011

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

person talonmies    schedule 04.04.2011
comment
Обновление: поскольку платформа кода Google скоро закроется, вы можете в этом репозитории GitHub: github.com/djebm2/cuda-thrust-extensions/tree/master/hash%20map - person ; 09.06.2015

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

person Gabriel    schedule 28.02.2013