2010-02-28 2 views
3

Насколько я знаю, я могу использовать шаблоны C++ в коде устройства CUDA. Итак, если я использую карту для создания словаря, операция добавления новых значений будет атомарной?CUDA с картой <value, key> & атомные операции

Я хочу подсчитать количество появлений определенных значений, т. Е. Создать кодовый словарь с вероятностями кодов.

Благодаря

Macs

+0

Я уверен, что CUDA использует свой собственный вариант C с инстрикцией. Тогда нет шаблонов. – GManNickG

+0

Но http://forums.nvidia.com/index.php?showtopic=98087 утверждает, что «вы можете использовать шаблоны в коде устройства» –

+0

@macs: Это моя новая научная вещь для дня. :) Независимо от того, будут ли эти операции атомами, зависит от реализации, я думаю, поэтому вам нужно будет найти ресурс по гарантиям, который делает nVidia. – GManNickG

ответ

2

Вы не можете использовать STL в коде устройства. Вы можете проверить thrust на аналогичную функциональность (в частности, проверить экспериментальное пространство имен).

Шаблоны в коде устройства хороши, CUDA C в настоящее время поддерживает множество функций C++, хотя некоторые из больших, таких как виртуальные функции и исключения, еще не возможны (и будут возможны только на оборудовании Fermi).

Если вы решите реализовать это самостоятельно, вы можете использовать свойство atomicAdd() для получения атомной операции, посмотрите дополнительную информацию о CUDA Programming Guide.

+1

Это просто распределители, которые делают STL несовместимым с CUDA? Если мы будем писать собственные распределители, можем ли мы использовать STL в CUDA? –

+0

То есть, что я хотел знать ... выучил еще одну ссылку: В следующий раз я дам кий STL. –

+0

Я ничего не нашел в Thrust, который предлагает функциональность, сопоставимую с 'std :: map'. Я не видел ничего, что могло бы позволить поиск по словарю, например 'int value = myMap [" key "]'. –

1

, если я правильно понимаю ваш вопрос, вы пытаетесь использовать карту STL внутри CUDA? скорее всего он не сработает. Вам нужно будет разработать свою собственную реализацию. Тем не менее, вы можете найти реализацию в библиотеке тяги.

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