[LLVMdev] Optimization on Atomics (and the OpenMP memory model)
Michael Wong
michaelw at ca.ibm.com
Fri Apr 10 11:20:04 PDT 2015
Thanks, I have also forwarded your N document and associated discussion to
the OpenMP MM group including Mark Batty
_________________________________________________________
Regards, Michael
ISOCPP.org Director, VP http://isocpp.org/wiki/faq/wg21#michael-wong
OpenMP CEO: http://openmp.org/wp/about-openmp/
My Blogs: http://ibm.co/pCvPHR
C++11 status: http://tinyurl.com/43y8xgf
Boost test results
http://www.ibm.com/support/docview.wss?rs=2239&context=SSJT9L&uid=swg27006911
C/C++ Compilers Feature Request Page
http://www.ibm.com/developerworks/rfe/?PROD_ID=700
Chair of WG21 SG5 Transactional Memory:
https://groups.google.com/a/isocpp.org/forum/?hl=en&fromgroups#!forum/tm
IBM Corporation
XL C++ Compiler kernel Development
IBM z Systems Software,IBM Systems Unit
IBM Canada Ltd., C2/KD2/8200/MKM
8200 Warden Avenue
Markham, Ontario L6G 1C7
W:905-413-3283 F:905-413-4839
OpenMPCon 2015
From: JF Bastien <jfb at chromium.org>
To: Hal Finkel <hfinkel at anl.gov>
Cc: LLVM Dev <llvmdev at cs.uiuc.edu>, Chandler Carruth
<chandlerc at gmail.com>, Daniel Berlin <dberlin at dberlin.org>,
Robin Morisset <robin.morisset at normalesup.org>, t p northover
<t.p.northover at gmail.com>, James Molloy
<james at jamesmolloy.co.uk>, Tom Stellard <tom at stellard.net>,
renato golin <renato.golin at linaro.org>, Michael
Wong/Toronto/IBM at IBMCA, Alexey Bataev <a.bataev at gmx.com>, Bill
Schmidt <wschmidt at linux.vnet.ibm.com>
Date: 04/10/2015 01:22 PM
Subject: Re: Optimization on Atomics (and the OpenMP memory model)
Sent by: jfb at google.com
Architecture-specific NaCl basically uses whatever the underlying ISA
expects (so answers will be "same as the above"), save for any OS
interactions which go through NaCl's own syscalls (which then sometimes
punt to the host OS). The most interesting here is futex, which is a
restricted version of Linux' futex and gets emulated on non-Linux guests.
For PNaCl none of the C++ constructs get lowered past their C++ semantics
(they look like functions calls). futex is still a syscall for PNaCl. C++
constructs only get lowered once the actual ISA is known (translation time)
at which point we're usually generating NaCl code and the same as the above
applies.
The same as PNaCl would apply to JavaScript once it supports
SharedArrayBuffer if the current proposal goes forward. One small change
would be to rely on synchronic instead of futex.
I'm not familiar enough with taskwait, omp_set_lock / omp_unset_lock to
provide a useful answer. I assume that we can implement them with atomics
and futex if QOI isn't an issue?
On reordering: yes, as much as C++ allows. Good timing for this:
https://github.com/jfbastien/papers/blob/master/source/N4455.rst
On Fri, Apr 10, 2015 at 10:12 AM, Hal Finkel <hfinkel at anl.gov> wrote:
Hi everyone,
The OpenMP standards committee has begun work to formalize their memory
model, and define its relationship to the C/C++ memory models. A
questionnaire has been put together (pasted below), and I'd like
everyone's help in composing detailed answers to inform their
decision-making process. While our OpenMP support is still in active
development, many of these questions apply equally to C/C++ atomics, and
a lot of work has certainly been done here on that front.
* Which processor architectures does your compiler target (e.g. x86,
Power, ARM, ARM v8, Xeon Phi, Nvidia GPUs, etc.)?
[I'll just answer "yes" for that one ;)]
* What is a flush lowered to in assembly for each of the supported
architectures? For instance, a flush might be implemented as an MFENCE on
the x86 architecture in some compilers.
* What are non-seq_cst atomic read, write, update and capture lowered to
for each of your targets?
* What are seq_cst atomic read, write, update and capture lowered to for
each of your targets?
* What is the taskwait construct lowered to for each of your targets?
* What are omp_set_lock and omp_unset_lock lowered to for each of your
targets?
* What is a barrier lowered to for each of your targets?
* Are any optimisations allowed to reorder, change or remove code that
uses any of the synchronisation constructs above, or any of the other
synchronisation constructs in section 2.12 of the OpenMP 4.0
specification?
I'll be happy to collate answers to send back to the committee; please
provide as much feedback as you can.
Thanks in advance,
Hal
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150410/411556aa/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 2E142455.jpg
Type: image/jpeg
Size: 14029 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150410/411556aa/attachment.jpg>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: graycol.gif
Type: image/gif
Size: 105 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20150410/411556aa/attachment.gif>
More information about the llvm-dev
mailing list