Another version of the atomic patch. Paul has tested it on a bunch of 
platforms. At this point we have confirmation from all architectures except 
SPARC (v8+ and v9).

  George.

Attachment: atomics.patch
Description: Binary data

On Jul 31, 2014, at 19:13 , George Bosilca <bosi...@icl.utk.edu> wrote:

> All,
> 
> Here is the patch that change the meaning of the atomics to make them always 
> return the previous value (similar to sync_fetch_and_<*>). I tested this with 
> the following atomics: OS X, gcc style intrinsics and AMD64.
> 
> I did not change the base assembly files used when GCC style assembly 
> operations are not supported. If someone feels like fixing them, feel free.
> 
> Paul, I know you have a pretty diverse range computers. Can you try to 
> compile and run a “make check” with the following patch?
> 
>  George.
> 
> <atomics.patch>
> 
> On Jul 30, 2014, at 15:21 , Nathan Hjelm <hje...@lanl.gov> wrote:
> 
>> 
>> That is what I would prefer. I was trying to not disturb things too
>> much :). Please bring the changes over!
>> 
>> -Nathan
>> 
>> On Wed, Jul 30, 2014 at 03:18:44PM -0400, George Bosilca wrote:
>>>  Why do you want to add new versions? This will lead to having two, almost
>>>  identical, sets of atomics that are conceptually equivalent but different
>>>  in terms of code. And we will have to maintained both!
>>>  I did a similar change in a fork of OPAL in another project but instead of
>>>  adding another flavor of atomics, I completely replaced the available ones
>>>  with a set returning the old value. I can bring the code over.
>>>    George.
>>> 
>>>  On Tue, Jul 29, 2014 at 5:29 PM, Paul Hargrove <phhargr...@lbl.gov> wrote:
>>> 
>>>    On Tue, Jul 29, 2014 at 2:10 PM, Nathan Hjelm <hje...@lanl.gov> 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                          phhargr...@lbl.gov
>>>    Future Technologies Group
>>>    Computer and Data Sciences Department     Tel: +1-510-495-2352
>>>    Lawrence Berkeley National Laboratory     Fax: +1-510-486-6900
>>>    _______________________________________________
>>>    devel mailing list
>>>    de...@open-mpi.org
>>>    Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>    Link to this post:
>>>    http://www.open-mpi.org/community/lists/devel/2014/07/15328.php
>> 
>>> _______________________________________________
>>> devel mailing list
>>> de...@open-mpi.org
>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>> Link to this post: 
>>> http://www.open-mpi.org/community/lists/devel/2014/07/15369.php
>> 
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
>> Link to this post: 
>> http://www.open-mpi.org/community/lists/devel/2014/07/15370.php
> 

Reply via email to