Приращение Atomi c для логических переменных (CUDA) - PullRequest
1 голос
/ 07 апреля 2020

У меня есть структура графа, в которой я поддерживаю, посещал ли я определенную вершину или нет (так что она обрабатывается не более одного раза). Для этой цели я использую функцию atomicIn c, которая принимает переменные типа unsigned, проверяет заданное значение (1 для меня) и увеличивает при необходимости.

Однако проблема с функцией atomicIn c заключается в том, что, как только она достигает заданного значения (1), она сбрасывается в 0, чего я не хочу, так как посещение узла два раза будет иметь то же самое ценность как никогда не посещая его. Какая работа вокруг этого? Есть ли более подходящая функция, которую я могу использовать, или есть более разумный способ сделать это?

Примечание. Я делаю это внутри вызова ядра в CUDA

1 Ответ

1 голос
/ 08 апреля 2020

Как предлагается в комментариях, это можно сделать с помощью функции atomicExch() в CUDA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...