[PATCH v2 2/5] benchtests: Add memset zero fill benchtest
naohirot@fujitsu.com
naohirot@fujitsu.com
Wed Jul 28 07:27:55 GMT 2021
Hi Wilco, Noah,
> > There may be miscomminuation.
> > The * 16 is already in the outer loop (1).
>
> The outer loop is in test_main, and it determines 'n' in do_one_test:
>
> for (i = ...)
> {
> do_test (&json_ctx, 0, c, i);
> }
>
> > Let me copy the code from the mail [1] I put in the previouse mail [2].
>
> The key issue is that this loop:
>
> for (j = 0; j < 16; j++)
> CALL (impl, s + n * j, c2, n);
>
> is equivalent to:
>
> CALL (impl, s, c2, n * 16);
>
> The loop we really want is something like bench-memset-large:
>
> CALL (impl, s, c, n);
> TIMING_NOW (start);
> for (i = 0; i < iters; ++i)
> {
> CALL (impl, s, c, n);
> }
> TIMING_NOW (stop);
>
> This repeats CALL on data of size 'n' after an initial warmup of the caches.
>
> > It doesn't matter what kind of memset is called, but matters the
> > function name in the code so that we can understand it is not mesured.
>
> Then using the standard name 'memset' would be best.
>
OK, I understood, thanks.
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);
}
-----
[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
More information about the Libc-alpha
mailing list