Skip to content
Snippets Groups Projects
Commit 1e3af608 authored by Peter W. Draper's avatar Peter W. Draper
Browse files

Add output graphics

parent b8562482
No related merge requests found
......@@ -28,7 +28,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
"""
import matplotlib
matplotlib.use("Agg")
#matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy
import pylab as pl
import sys
......@@ -118,6 +119,7 @@ with open(infile, "r") as fp:
nrecvs = nrecvs + 1
# Now output. Note we could have unmatched recv keys, we don't check for that.
msends = [None] * nsends
with open(outfile, "w") as fp:
fp.write("# send_logticin send_logtic send_injtic send_endtic send_dtic send_step send_rank send_otherrank send_itype send_isubtype send_tag send_size send_nr_tests send_tsum send_tmin send_tmax recv_logticin recv_logtic recv_injtic recv_endtic recv_dtic recv_step recv_rank recv_otherrank recv_itype recv_isubtype recv_tag recv_size recv_nr_tests recv_tsum recv_tmin recv_tmax\n")
for key in keysends:
......@@ -125,11 +127,52 @@ with open(outfile, "w") as fp:
if len(keysends[key]) == 1 and len(keyrecvs[key]) == 1:
isend = keysends[key][0]
irecv = keyrecvs[key][0]
msends[isend] = irecv
fp.write(" ".join(sends[isend]) + " " + " ".join(recvs[irecv]) + "\n")
else:
print "# ERROR: found ", len(keysends[key]), "/", len(keyrecvs[key]), " matches for key: ", key, " should be 1/1"
else:
print "# ERROR: missing recv key: ", key
print "# Matched sends and recvs written to file: ", outfile
# Reorder recvs to same order as sends.
recvs = [recvs[i] for i in msends]
# Do a plot. Display and saves the graphic, uncomment the "Agg" line above to just save.
def doplot(x, y, xlabel, ylabel, title, outpng):
axmax1 = max(x)
axmax2 = max(y)
axmax = max([axmax1, axmax2])
fig,ax = plt.subplots()
ax.set_xlim(0,axmax)
ax.set_ylim(0,axmax)
ax.plot(x, y, ',')
ax.set_xlabel(xlabel)
ax.set_ylabel(ylabel)
ax.set_title("SWIFTmpistepsim plot: " + title)
fig.tight_layout()
plt.savefig(outpng, bbox_inches="tight")
print "# Saved plot to: ", outpng
plt.show()
# Plot no. 1: sends injection time against time of local handoff.
send_injects = [float(send[injcol]) for send in [line for line in sends]]
send_ends = [float(send[endcol]) for send in [line for line in sends]]
doplot(send_injects, send_ends, "Message start time",
"Message local completion time", "local send completions",
"local_sends.png")
# Plot no. 2: recv injection time against time of local handoff.
recv_injects = [float(recv[injcol]) for recv in [line for line in recvs]]
recv_ends = [float(recv[endcol]) for recv in [line for line in recvs]]
doplot(recv_injects, recv_ends, "Message start time",
"Message local completion time", "local recv completions",
"local_recvs.png")
# Plot no. 3: send injection time against time of remote completion.
doplot(send_injects, recv_ends, "Message start time",
"Global message completion time", "message completion times",
"completions.png")
sys.exit(0)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment