30 template<
typename Function>
32 basic(
int best_of, ConvergenceTable & convergence_table, std::string label, Function f)
34 MeasureMinimumTime::repeat(best_of, convergence_table, label,
"", f);
38 template<
typename Function>
41 ConvergenceTable & convergence_table,
43 std::string likwid_suffix,
45 MPI_Comm
const & mpi_comm)
48 MPI_Comm_rank(mpi_comm, &rank);
50 double min_time = std::numeric_limits<double>::max();
51 double max_time = 0.0;
52 double sum_time = 0.0;
53 for(
int i = 0; i < best_of; i++)
55 MPI_Barrier(mpi_comm);
56#ifdef EXADG_WITH_LIKWID
57 std::string likwid_label = label + likwid_suffix;
58 LIKWID_MARKER_START(likwid_label.c_str());
64 MPI_Barrier(mpi_comm);
65 double temp = time.wall_time();
66#ifdef EXADG_WITH_LIKWID
67 LIKWID_MARKER_STOP(likwid_label.c_str());
70 MPI_Reduce(&temp, &temp_global, 1, MPI_DOUBLE, MPI_MAX, 0, mpi_comm);
71 min_time = std::min(min_time, temp_global);
72 max_time = std::max(max_time, temp_global);
75 convergence_table.add_value(label +
"_min", min_time);
76 convergence_table.set_scientific(label +
"_min",
true);
77 convergence_table.add_value(label +
"_max", max_time);
78 convergence_table.set_scientific(label +
"_max",
true);
79 convergence_table.add_value(label +
"_ave", sum_time / best_of);
80 convergence_table.set_scientific(label +
"_ave",
true);