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