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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox