(Sorry, typo in previous email.  Please read that as)

I have another question: why is any given operation implemented twice for
the same architecture?

Ref:  opal/asm/base/AMD64.asm and opal/include/opal/sys/amd64/atomic.h,
 say function opal_atomic_cmpset_32()

Thanks!



On Fri, Apr 1, 2016 at 2:26 PM, Sreenidhi Bharathkar Ramesh <
sreenidhi-bharathkar.ram...@broadcom.com> wrote:

> Hi Paul,
>
> Thanks for the response, I understand.
>
> I have another question: why is any given operation implemented twice for
> the same architecture?
>
> Ref:  opal/asm/base/ARM.asm and opal/include/opal/sys/amd64/atomic.h
>
> Please let me know.
>
> Thanks,
> - Sreenidhi.
>
>
>
> On Thu, Mar 31, 2016 at 2:28 AM, Paul Hargrove <phhargr...@lbl.gov> wrote:
>
>> Sreenihdi,
>>
>> Maintenance of the "other" files is, at least, required for older
>> compilers (including several non-GNU ones) which have support for GCC
>> inline ASM constructs but do not include the __sync functions.
>>
>> Additionally, the __sync functions always include a full memory fence
>> while there are places where Open MPI only needs Acquire or Release.  In
>> that sense the use of the GCC builtin atomics is not always an
>> "optimization".
>>
>> -Paul
>>
>> On Wed, Mar 30, 2016 at 4:19 AM, Sreenidhi Bharathkar Ramesh <
>> sreenidhi-bharathkar.ram...@broadcom.com> wrote:
>>
>>> Hello,
>>>
>>> I did few more experiments.  Built-in atomics are disabled by default
>>> and can be enabled by "--enable-builtin-atomics".  With this option, a
>>> different atomic file is include  (I mean, different from the other three
>>> mentioned in the earlier email).
>>>
>>> opal/include/opal/sys/sync_builtin/atomic.h
>>>
>>>  By enabling "--enable-builtin-atomics", the OpenMPI library will not
>>> only get the latest optimizations from GCC __sync functions, but also get
>>> all additional functions, such as <__sync_or_and_fetch>  <
>>> __sync_and_and_fetch> etc.  Also, this way, the arch/*.asm files need
>>> not be maintained.
>>>
>>> Seems there is more of an advantage to have "--enable-builtin-atomics".
>>> Am I missing something ?  Please let me know your thoughts.
>>>
>>> Thanks,
>>> - Sreenidhi.
>>>
>>> On Wed, Mar 30, 2016 at 10:33 AM, Sreenidhi Bharathkar Ramesh <
>>> sreenidhi-bharathkar.ram...@broadcom.com> wrote:
>>>
>>>> Hello,
>>>>
>>>> With respect to atomic operations in assembly, I can see three source
>>>> files, for the same AMD64 architecture.
>>>>
>>>> 1. opal/asm/base/AMD64.asm
>>>> 2. opal/include/opal/sys/amd64/atomic.h
>>>> 3. opal/include/opal/sys/atomic_impl.h
>>>>
>>>> What is the need for three files ?  How are they inter-related ?
>>>>
>>>> Please let me know.
>>>>
>>>> Thanks,
>>>> - Sreenidhi.
>>>>
>>>
>>>
>>> _______________________________________________
>>> 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/2016/03/18733.php
>>>
>>
>>
>>
>> --
>> Paul H. Hargrove                          phhargr...@lbl.gov
>> Computer Languages & Systems Software (CLaSS) Group
>> Computer Science 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/2016/03/18734.php
>>
>
>

Reply via email to