1 /* Skeleton for libmvec benchmark programs.
2 Copyright (C) 2021-2024 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
25 #include <bench-timing.h>
27 #include <bench-util.h>
28 #include <math-tests-arch.h>
29 #include <bench-libmvec-arch.h>
31 #include <bench-util.c>
32 #define D_ITERS 200000
35 main (int argc
, char **argv
)
51 json_init (&json_ctx
, 2, stdout
);
54 json_attr_object_begin (&json_ctx
, FUNCNAME
);
56 for (int v
= 0; v
< NUM_VARIANTS
; v
++)
58 double d_total_time
= 0;
60 for (k
= 0; k
< D_ITERS
; k
++)
63 for (i
= 0; i
< NUM_SAMPLES (v
); i
++)
67 TIMING_DIFF (cur
, start
, end
);
69 TIMING_ACCUM (d_total_time
, cur
);
71 double d_total_data_set
= D_ITERS
* NUM_SAMPLES (v
) * STRIDE
;
74 json_attr_object_begin (&json_ctx
, VARIANT (v
));
76 json_attr_double (&json_ctx
, "duration", d_total_time
);
77 json_attr_double (&json_ctx
, "iterations", d_total_data_set
);
78 json_attr_double (&json_ctx
, "mean", d_total_time
/ d_total_data_set
);
81 json_attr_object_end (&json_ctx
);
85 json_attr_object_end (&json_ctx
);