Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] RFC: add atomic compare-and-swap that returns old value
From: Paul Hargrove (phhargrove_at_[hidden])
Date: 2014-07-29 17:29:46


On Tue, Jul 29, 2014 at 2:10 PM, Nathan Hjelm <hjelmn_at_[hidden]> wrote:

> Is there a reason why the
> current implementations of opal atomics (add, cmpset) do not return the
> old value?
>

Because some CPUs don't implement such an atomic instruction?

On any CPU one *can* certainly synthesize the desired operation with an
added read before the compare-and-swap to return a value that was present
at some time before a failed cmpset. That is almost certainly sufficient
for your purposes. However, the added load makes it (marginally) more
expensive on some CPUs that only have the native equivalent of gcc's
__sync_bool_compare_and_swap().

-Paul

-- 
Paul H. Hargrove                          PHHargrove_at_[hidden]
Future Technologies Group
Computer and Data Sciences Department     Tel: +1-510-495-2352
Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900