2 import matplotlib.pyplot
as plt
6 parser = argparse.ArgumentParser(
7 description=
"Plot action and timing values")
8 parser.add_argument(
"data_file", help=
"data file to read")
9 parser.add_argument(
"-o,--output-file", dest=
"output_file",
10 default=
"", help=
"name to save plot with")
11 args = parser.parse_args()
12 return (args.data_file, args.output_file)
15 potnl_cols = [
'dim',
'E',
'alpha']
16 profiler_cols = [c
for c
in column_names
if c
not in potnl_cols]
18 if len(profiler_cols) % 3 != 0:
19 raise IOError(
"invalid data column format")
21 return [p[:p.find(
"_action")]
for p
in profiler_cols[::3]]
24 dim_data = data[
"dim"]
27 action_data = data[profiler +
"_action"]
28 timing_data = data[profiler +
"_timems"]
29 error_data = data[profiler +
"_error"]
31 profiler_data = {
"action": action_data[(dim_data == dim) & (E_data == E)],
32 "timing": timing_data[(dim_data == dim) & (E_data == E)],
33 "error": error_data[(dim_data == dim) & (E_data == E)]
39 data = np.genfromtxt(data_file, names=
True)
40 cols = [c
for c
in data.dtype.fields]
43 raise IOError(
"missing dimension column")
44 dim = np.unique(data[
"dim"])[0]
47 raise IOError(
"missing E parameter column")
48 E = np.unique(data[
"E"])[0]
50 if "alpha" not in cols:
51 raise IOError(
"missing alpha parameter column")
52 alpha_data = data[
"alpha"]
59 return (dim, E, alpha_data, profilers_data)
62 for p
in profilers_data:
63 error_data = profilers_data[p][
"error"]
64 valid_alpha_values = alpha_values[error_data == 0]
65 valid_action_data = profilers_data[p][
"action"][error_data == 0]
66 axis.semilogy(valid_alpha_values, valid_action_data, label=p)
68 axis.set_ylabel(
"Action")
69 axis.legend(numpoints=1)
73 for p
in profilers_data:
74 error_data = profilers_data[p][
"error"]
75 valid_alpha_values = alpha_values[error_data == 0]
76 valid_timings_data = profilers_data[p][
"timing"][error_data == 0]
77 axis.semilogy(valid_alpha_values, valid_timings_data, label=p)
79 axis.set_ylabel(
"Time/ms")
80 axis.legend(numpoints=1)
83 def plot_results(dim, E, alpha_values, profilers_data, output_file):
84 fig, ax = plt.subplots(2, 1, sharex=
True)
86 fig.suptitle(
"d = {:d}, E = {:.2f}".format(
int(dim), E))
91 ax[-1].set_xlabel(
"alpha")
94 plt.savefig(output_file)
100 if __name__ ==
"__main__":
102 dim, E, alpha_data, profilers_data =
read_data(data_file)
103 plot_results(dim, E, alpha_data, profilers_data, output_file)
def plot_results(dim, E, alpha_values, profilers_data, output_file)
def plot_timings(axis, alpha_values, profilers_data)
def get_profilers(column_names)
def parse_cmd_line_args()
def plot_action(axis, alpha_values, profilers_data)
def get_profiler_data(profiler, dim, E, data)