From: "Paul E. McKenney" <paulmck@linux.ibm.com>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: Junchang Wang <junchangwang@gmail.com>, perfbook@vger.kernel.org
Subject: Re: [PATCH 0/4] Update definition of cmpxchg() under CodeSamples
Date: Tue, 11 Dec 2018 09:23:36 -0800 [thread overview]
Message-ID: <20181211172336.GK4170@linux.ibm.com> (raw)
In-Reply-To: <184fed6d-f9ae-8a0b-e8e8-7bcb3e3acf8e@gmail.com>
On Wed, Dec 12, 2018 at 12:39:38AM +0900, Akira Yokosawa wrote:
> Subject: [PATCH 0/4] Update definition of cmpxchg() under CodeSamples
>
> Hi Paul and Junchang,
>
> Based on the earlier correspondence, I prepared a patch set to update
> the definition of cmpxchg().
>
> Patch #1 adds a simple litmus test of cmpxchg().
> Patch #2 fix cmpxchg() in .../litmus/api.h by specifying strong
> __atomic_compare_exchange_n)\(). Results of litmus tests are presented
> in the commit log.
> Patch #3 fix cmpxchg() in .../api-gcc.h in the same manner as patch #2.
I applied and pushed #1-3, thank you!
Thanx, Paul
> Patch #4 is not intended to be applied to master, but provides a weak
> variant of cmpxchg() and count_lim_atomic_weak.c.
>
> I did some experiments on PPC (10 runs each).
>
> count_lim_atomic 1 uperf, ns/update (as of v2018.12.08a):
> 56.6572
> 56.4972
> 56.5504
> 56.4972
> 56.6305
> 56.5238
> 56.6038
> 56.5238
> 56.5504
> 56.5238
>
> count_lim_atomic 1 uperf, ns/update (as of Patch #4):
> 38.3264
> 38.1073
> 38.2287
> 38.2287
> 38.2653
> 38.3142
> 38.1194
> 38.1801
> 38.4986
> 38.2531
>
> count_lim_atomic_weak 1 uperf, ns/update (as of Patch #4):
> 47.3186
> 47.3747
> 47.4121
> 47.5248
> 47.3934
> 47.3373
> 47.3186
> 47.4121
> 47.6002
> 47.3186
>
> So count_lim_atomic (strong semantics) is around 9ns/update
> faster than count_lim_atomic_weak, and is around 18ns/update
> faster than count_lim_atomic of v2018.12.08a.
>
> This contradicts Junchang's view. The difference looks like
> due to removal of ternary operation in cmpxchg().
>
> Or I might be missing something.
>
> Junchang, can you please experiment on PPC and ARM?
>
> Thanks, Akira
> --
> Akira Yokosawa (4):
> CodeSamples: Add C-cmpxchg.litmus
> CodeSamples/formal/litmus/api.h: Fix definition of cmpxchg()
> CodeSamples: Fix definition of cmpxchg() in api-gcc.h
> [EXP] CodeSamples: Add weak variant of cmpxchg() as cmpxchg_weak()
>
> CodeSamples/api-pthreads/api-gcc.h | 19 ++-
> CodeSamples/count/Makefile | 4 +
> CodeSamples/count/count_lim_atomic_weak.c | 226 +++++++++++++++++++++++++++++
> CodeSamples/formal/litmus/C-cmpxchg.litmus | 24 +++
> CodeSamples/formal/litmus/api.h | 2 +-
> 5 files changed, 272 insertions(+), 3 deletions(-)
> create mode 100644 CodeSamples/count/count_lim_atomic_weak.c
> create mode 100644 CodeSamples/formal/litmus/C-cmpxchg.litmus
>
> --
> 2.7.4
>
prev parent reply other threads:[~2018-12-11 17:23 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-12-11 15:39 [PATCH 0/4] Update definition of cmpxchg() under CodeSamples Akira Yokosawa
2018-12-11 15:40 ` [PATCH 1/4] CodeSamples: Add C-cmpxchg.litmus Akira Yokosawa
2018-12-11 15:42 ` [PATCH 2/4] CodeSamples/formal/litmus/api.h: Fix definition of cmpxchg() Akira Yokosawa
2018-12-11 15:42 ` [PATCH 3/4] CodeSamples: Fix definition of cmpxchg() in api-gcc.h Akira Yokosawa
2018-12-12 16:01 ` Junchang Wang
2018-12-13 15:33 ` Akira Yokosawa
2018-12-14 14:32 ` Junchang Wang
2018-12-15 14:58 ` Akira Yokosawa
2018-12-16 0:55 ` Junchang Wang
2018-12-15 15:10 ` Akira Yokosawa
2018-12-15 19:37 ` Paul E. McKenney
2018-12-15 23:42 ` Akira Yokosawa
2018-12-16 0:54 ` Paul E. McKenney
2018-12-11 15:44 ` [PATCH 4/4] EXP CodeSamples: Add weak variant of cmpxchg() as cmpxchg_weak() Akira Yokosawa
2018-12-12 15:48 ` Junchang Wang
2018-12-11 17:23 ` Paul E. McKenney [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181211172336.GK4170@linux.ibm.com \
--to=paulmck@linux.ibm.com \
--cc=akiyks@gmail.com \
--cc=junchangwang@gmail.com \
--cc=perfbook@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.