diff --git a/bin/plot_measurements.py b/bin/plot_measurements.py new file mode 100644 index 0000000000000000000000000000000000000000..4d7a2654a55b6e38b11679e0c93365e936026017 --- /dev/null +++ b/bin/plot_measurements.py @@ -0,0 +1,27 @@ +#!/usr/bin/env python + +import pandas +import matplotlib.pyplot as plt +import sys + +title = sys.argv[1] +filename = title.lower().replace(" ", "_") + ".pdf" + +flopframe = pandas.read_csv("./poissondg-insn2/floprates.csv", header=None, delimiter=" ", names=("exec", "degree", "what", "GFlops")) +flopframe = flopframe[flopframe.what == "residual_evaluation"] + +timeframe = pandas.read_csv("./poissondg-insn2/doftimes.csv", header=None, delimiter=" ", names=("exec", "degree", "what", "DOFs")) +timeframe = timeframe[timeframe.what == "residual_evaluation"] + +fig, ax1 = plt.subplots() + +ax2 = ax1.twinx() +ax1.plot(frame['degree'], flopframe['GFlops']) +ax2.plot(frame['degree'], timeframe['DOFs']) + +ax1.set_xlabel("Polynomial degree") +ax1.set_ylabel("GFlops") +ax2.set_ylabel("DOFs / s") +plt.title(title) + +plt.savefig(filename) diff --git a/bin/calculate_floprate.py b/bin/process_measurements.py similarity index 83% rename from bin/calculate_floprate.py rename to bin/process_measurements.py index 14ff9fe88c89ad093672374ca724b6cdd2ac0329..945687f99f58a673693b763544d5b69eaae2e059 100755 --- a/bin/calculate_floprate.py +++ b/bin/process_measurements.py @@ -27,7 +27,8 @@ def calculate_floprate(): exe, kernel = key if "nonopcount" in exe and kernel != "total": opexe = exe.replace("nonopcount", "opcount") - out.write(" ".join([exe, kernel, str((ops[opexe][kernel] / time[exe][kernel]) / 1e9)]) + "\n") + degree = re.match(".*deg([0-9]*).*", exe).group(1) + out.write(" ".join([exe, degree, kernel, str((ops[opexe][kernel] / time[exe][kernel]) / 1e9)]) + "\n") def calculate_doftimes(): @@ -41,8 +42,9 @@ def calculate_doftimes(): with open('doftimes.csv', 'w') as out: for key in time.keys(): exe, kernel = key + degree = re.match(".*deg([0-9]*).*", exe).group(1) if "nonopcount" in exe: - out.write(" ".join([exe, kernel, str(dofs[exe]["dofs"] / time[exe][kernel] / 1e6)]) + "\n") + out.write(" ".join([exe, degree, kernel, str(dofs[exe]["dofs"] / time[exe][kernel] / 1e6)]) + "\n") if __name__ == '__main__':