Когда я должен предпочесть более конкретную атомарную операцию использованию atomicCAS?

Я использовал atomicCAS в цикле do-while для выполнения различных арифметических операций, когда это необходимо, в моих первых параллельных программах. Я вижу, что есть и другие операции, такие как atomicInc, которые были бы такими же, как увеличение с использованием atomicCAS в do-while, правильно? Будет ли это более эффективно (с точки зрения тактов), или нет смысла отказываться от моего чрезмерного использования atomicCAS?


person T Willy    schedule 22.03.2017    source источник
comment
Т. Вилли, рассмотрите возможность принятия ответа @talonmies.   -  person einpoklum    schedule 26.03.2017


Ответы (1)


Единственный разумный ответ на этот вопрос: «каждый сценарий, в котором есть специально созданный атомарный примитив для выполнения одной и той же операции».

На графических процессорах nVIDIA использование atomicCAS для искусственного мьютекса вокруг арифметических операций имеет смысл только тогда, когда у вас нет другой альтернативы. Даже если сегодня нет ощутимой разницы в производительности, используя атомарный примитив, который транслируется в инструкцию PTX, вы предлагаете своему коду возможность повышения производительности на будущем оборудовании и будущих наборах инструментов по мере того, как NVIDIA совершенствует свои реализации.

person Community    schedule 22.03.2017