public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: "naohirot@fujitsu.com" <naohirot@fujitsu.com>
To: Wilco Dijkstra <Wilco.Dijkstra@arm.com>,
	Noah Goldstein <goldstein.w.n@gmail.com>
Cc: "Lucas A. M. Magalhaes" <lamm@linux.ibm.com>,
	GNU C Library <libc-alpha@sourceware.org>
Subject: RE: [PATCH v2 2/5] benchtests: Add memset zero fill benchtest
Date: Wed, 4 Aug 2021 09:11:11 +0000	[thread overview]
Message-ID: <TYAPR01MB602522C0160095FAE0676058DFF19@TYAPR01MB6025.jpnprd01.prod.outlook.com> (raw)
In-Reply-To: <TYAPR01MB6025BA57F7131696EEDF99D8DFEA9@TYAPR01MB6025.jpnprd01.prod.outlook.com>

Hi Wilco, Noah,

> From: Tamura, Naohiro/田村 直広 <naohirot@fujitsu.com>
> Sent: Wednesday, July 28, 2021 4:28 PM
> 
> Taking Noah's comment [1] into account, the final code should be like
> the below. Can we agree with this code?
> 
> Two results, two loop version in the mail [1] and one loop version
> below, are almost same in case of __memset_generic on a64fx as
> shown in the graph [2].
> 
> -----
> static void
> __attribute__((noinline, noclone))
> do_one_test (json_ctx_t *json_ctx, impl_t *impl, CHAR *s,
>              int c1 __attribute ((unused)), int c2 __attribute ((unused)),
>              size_t n)
> {
>   size_t i, iters = 32;
>   timing_t start, stop, cur, latency = 0;
> 
>   CALL (impl, s, c2, n); // warm up
> 
>   for (i = 0; i < iters; i++)
>     {
>       memset (s, c1, n); // alternation
> 
>       TIMING_NOW (start);
> 
>       CALL (impl, s, c2, n);
> 
>       TIMING_NOW (stop);
>       TIMING_DIFF (cur, start, stop);
>       TIMING_ACCUM (latency, cur);
>     }
> 
>   json_element_double (json_ctx, (double) latency / (double) iters);
> }
> -----

I'd like to share an interesting insight which was found when
START_SIZE was changed to smaller size 256 from 16KB.
Currently DC ZVA is called if size is more than 256B and value is zero
in __memset_generic (sysdeps/aarch64/memset.S).
However DC ZVA is slower than store instruction if size is less than
16KB on A64FX[3].
So this would indicate that the appropriate DC ZVA start size might
be different on each CPU.
It would be interesting to see how other CPU behaves.

The code is below, which measures 4 patterns, zero-over-zero,
zero-over-one, one-over-zero and one-over-one from 256B to 64MB.
In the graph [3], 4 patterns are abbreviated 0o0, 0o1, 1o0 and 1o1.


#define START_SIZE 256
#define MIN_PAGE_SIZE (getpagesize () + 64 * 1024 * 1024)

  for (c1 = 0; c1 < 2; c1++)
    for (c2 = 0; c2 < 2; c2++)
      for (i = START_SIZE; i <= MIN_PAGE_SIZE; i <<= 1)
        {
          do_test (&json_ctx, 0, c1, c2, i);
          do_test (&json_ctx, 3, c1, c2, i);
        }

I'd like to submit V3 patch incorporating above change too.

[3] https://drive.google.com/file/d/1fonjDDlF4LPLfZY9-z22DGn-yaSpGN4g/view?usp=sharing

Thanks.
Naohiro

> [1] https://sourceware.org/pipermail/libc-alpha/2021-July/129486.html
> [2] https://drive.google.com/file/d/1bptHqg5vvFAGoYgoR3w_pvclXFSP8Sr0/view?usp=sharing
> 
> Thanks.
> Naohiro

  reply	other threads:[~2021-08-04  9:11 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-13  8:22 [PATCH] benchtests: Add memset zero fill benchmark tests Naohiro Tamura
2021-07-13 13:50 ` Lucas A. M. Magalhaes
2021-07-20  6:31 ` [PATCH v2 0/5] " Naohiro Tamura
2021-08-05  7:47   ` [PATCH v3 0/5] benchtests: Add memset zero fill benchmark test Naohiro Tamura
2021-08-05  7:49     ` [PATCH v3 1/5] benchtests: Enable scripts/plot_strings.py to read stdin Naohiro Tamura
2021-08-05  7:56       ` Siddhesh Poyarekar
2021-09-08  1:46         ` naohirot
2021-09-08 12:56           ` Siddhesh Poyarekar
2021-09-09  0:22             ` naohirot
2021-09-13  3:45               ` Siddhesh Poyarekar
2021-08-05  7:50     ` [PATCH v3 2/5] benchtests: Add memset zero fill benchtest Naohiro Tamura
2021-09-08  2:03       ` naohirot
2021-09-10 20:40       ` Lucas A. M. Magalhaes
2021-09-13  0:53         ` naohirot
2021-09-13 14:05           ` Lucas A. M. Magalhaes
2021-09-14  0:38             ` [PATCH v4] " Naohiro Tamura
2021-09-14  0:44             ` [PATCH v3 2/5] " naohirot
2021-09-14 14:02               ` Wilco Dijkstra
2021-09-15  8:24                 ` naohirot
2021-09-21  1:27                   ` naohirot
2021-09-21 11:09                     ` Wilco Dijkstra
2021-09-22  1:05                       ` [PATCH v5] " Naohiro Tamura
2023-02-09 17:23                         ` Carlos O'Donell
2023-02-10  1:26                           ` Siddhesh Poyarekar
2021-09-22  1:07                       ` [PATCH v3 2/5] " naohirot
2021-09-28  1:40                         ` naohirot
2021-09-30  0:55                           ` Tamura, Naohiro/田村 直�
2021-10-18 12:57                           ` Lucas A. M. Magalhaes
2021-10-20 13:44                             ` Wilco Dijkstra
2021-10-20 15:35                               ` Lucas A. M. Magalhaes
2021-10-20 17:47                                 ` Wilco Dijkstra
2021-10-22 13:08                                   ` Lucas A. M. Magalhaes
2021-08-05  7:51     ` [PATCH v3 3/5] benchtests: Remove redundant assert.h Naohiro Tamura
2021-09-08  1:59       ` naohirot
2021-09-13  3:36       ` Siddhesh Poyarekar
2021-08-05  7:51     ` [PATCH v3 4/5] benchtests: Fix validate_benchout.py exceptions Naohiro Tamura
2021-09-08  1:55       ` naohirot
2021-09-13  3:42       ` Siddhesh Poyarekar
2021-09-13  3:50         ` Siddhesh Poyarekar
2021-09-13 13:44           ` [PATCH v4] " Naohiro Tamura
2021-09-15  3:23             ` Siddhesh Poyarekar
2021-09-16  1:12               ` naohirot
2021-09-16  1:41                 ` Siddhesh Poyarekar
2021-09-16  2:23                   ` [PATCH v5] " Naohiro Tamura
2021-09-16  3:48                     ` Siddhesh Poyarekar
2021-09-16  5:23                       ` naohirot
2021-09-16  2:26                   ` [PATCH v4] " naohirot
2021-09-13 13:46           ` [PATCH v3 4/5] " naohirot
2021-08-05  7:52     ` [PATCH v3 5/5] config: Rename HAVE_BUILTIN_MEMSET macro Naohiro Tamura
2021-08-11 20:34       ` Adhemerval Zanella
2021-07-20  6:34 ` [PATCH v2 1/5] benchtests: Enable scripts/plot_strings.py to read stdin Naohiro Tamura
2021-07-20  6:35 ` [PATCH v2 2/5] benchtests: Add memset zero fill benchtest Naohiro Tamura
2021-07-20 16:48   ` Noah Goldstein
2021-07-21 12:56     ` naohirot
2021-07-21 13:07       ` naohirot
2021-07-21 18:14         ` Noah Goldstein
2021-07-21 19:17           ` Wilco Dijkstra
2021-07-26  8:42             ` naohirot
2021-07-26 11:15               ` Wilco Dijkstra
2021-07-27  2:24                 ` naohirot
2021-07-27 17:26                   ` Wilco Dijkstra
2021-07-28  7:27                     ` naohirot
2021-08-04  9:11                       ` naohirot [this message]
2021-07-26  8:39     ` naohirot
2021-07-26 17:22       ` Noah Goldstein
2021-07-20  6:35 ` [PATCH v2 3/5] benchtests: Add a script to convert benchout string JSON to CSV Naohiro Tamura
2021-07-21  2:41   ` naohirot
2021-07-27 20:17   ` Joseph Myers
2021-07-29  1:56     ` naohirot
2021-07-29  4:42       ` Siddhesh Poyarekar
2021-07-30  7:05         ` naohirot
2021-07-31 10:47           ` Siddhesh Poyarekar
2021-07-20  6:36 ` [PATCH v2 4/5] benchtests: Remove redundant assert.h Naohiro Tamura
2021-07-20  6:37 ` [PATCH v2 5/5] benchtests: Fix validate_benchout.py exceptions Naohiro Tamura
2021-07-26  8:34 ` [PATCH] config: Remove HAVE_BUILTIN_MEMSET macro Naohiro Tamura
2021-07-26  8:48   ` naohirot
2021-07-26  8:49   ` Andreas Schwab
2021-07-26  9:42     ` naohirot
2021-07-26  9:51       ` Andreas Schwab
2021-07-26 13:16         ` naohirot
2021-07-26  8:35 ` [PATCH] benchtests: Add a script to merge two benchout string files Naohiro Tamura
2021-07-27 20:51   ` Joseph Myers
2021-07-30  7:04     ` naohirot

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=TYAPR01MB602522C0160095FAE0676058DFF19@TYAPR01MB6025.jpnprd01.prod.outlook.com \
    --to=naohirot@fujitsu.com \
    --cc=Wilco.Dijkstra@arm.com \
    --cc=goldstein.w.n@gmail.com \
    --cc=lamm@linux.ibm.com \
    --cc=libc-alpha@sourceware.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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).