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