3 /* chrono - demo of GRAS benchmarking features */
5 /* Copyright (c) 2005 Martin Quinson, Arnaud Legrand. All rights reserved. */
7 /* This program is free software; you can redistribute it and/or modify it
8 * under the terms of the license (GNU LGPL) which comes with this package. */
13 XBT_LOG_NEW_DEFAULT_CATEGORY(Chrono, "Messages specific to this example");
16 /* Function prototypes */
17 int multiplier(int argc, char *argv[]);
19 int multiplier(int argc, char *argv[])
27 gras_init(&argc, argv);
29 A = malloc(n * n * sizeof(double));
30 B = malloc(n * n * sizeof(double));
31 C = malloc(n * n * sizeof(double));
33 start = now = gras_os_time();
35 INFO1("Begin matrix multiplication loop (time: %g)", start);
37 for (l = 0; l < 4; l++) {
39 GRAS_BENCH_ONCE_RUN_ONCE_BEGIN();
40 for (i = 0; i < n; i++)
41 for (j = 0; j < n; j++) {
47 for (i = 0; i < n; i++)
48 for (j = 0; j < n; j++)
49 for (k = 0; k < n; k++)
50 C[i * n + j] += A[i * n + k] * B[k * n + j];
52 GRAS_BENCH_ONCE_RUN_ONCE_END();
53 now = gras_os_time() - now;
54 INFO2("Iteration %d : %g ", l, now);
57 now = gras_os_time() - start;
58 INFO2("End matrix multiplication loop (time: %g; Duration: %g)",
61 start = now = gras_os_time();
62 INFO1("Begin malloc loop (time: %g)", start);
63 for (l = 0; l < 4; l++) {
65 GRAS_BENCH_ONCE_RUN_ONCE_BEGIN();
67 A = malloc(n * n * sizeof(double));
68 GRAS_BENCH_ONCE_RUN_ONCE_END();
69 now = gras_os_time() - now;
70 INFO2("Iteration %d : %g ", l, now);
73 start = now = gras_os_time();
74 INFO1("Begin integer incrementation loop (time: %g)", start);
75 for (l = 0; l < 4; l++) {
76 GRAS_BENCH_ONCE_RUN_ONCE_BEGIN();
78 GRAS_BENCH_ONCE_RUN_ONCE_END();