Я использовал atomicCAS
в цикле do-while
для выполнения различных арифметических операций, когда это необходимо, в моих первых параллельных программах. Я вижу, что есть и другие операции, такие как atomicInc
, которые были бы такими же, как увеличение с использованием atomicCAS
в do-while
, правильно? Будет ли это более эффективно (с точки зрения тактов), или нет смысла отказываться от моего чрезмерного использования atomicCAS
?
Когда я должен предпочесть более конкретную атомарную операцию использованию atomicCAS?
comment
Т. Вилли, рассмотрите возможность принятия ответа @talonmies.
- person einpoklum   schedule 26.03.2017
Ответы (1)
Единственный разумный ответ на этот вопрос: «каждый сценарий, в котором есть специально созданный атомарный примитив для выполнения одной и той же операции».
На графических процессорах nVIDIA использование atomicCAS для искусственного мьютекса вокруг арифметических операций имеет смысл только тогда, когда у вас нет другой альтернативы. Даже если сегодня нет ощутимой разницы в производительности, используя атомарный примитив, который транслируется в инструкцию PTX, вы предлагаете своему коду возможность повышения производительности на будущем оборудовании и будущих наборах инструментов по мере того, как NVIDIA совершенствует свои реализации.
person
Community
schedule
22.03.2017