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 branches found
No related tags found
No related merge requests found
...@@ -28,7 +28,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. ...@@ -28,7 +28,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
""" """
import matplotlib import matplotlib
matplotlib.use("Agg") #matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy import numpy
import pylab as pl import pylab as pl
import sys import sys
...@@ -118,6 +119,7 @@ with open(infile, "r") as fp: ...@@ -118,6 +119,7 @@ with open(infile, "r") as fp:
nrecvs = nrecvs + 1 nrecvs = nrecvs + 1
# Now output. Note we could have unmatched recv keys, we don't check for that. # Now output. Note we could have unmatched recv keys, we don't check for that.
msends = [None] * nsends
with open(outfile, "w") as fp: 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") 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: for key in keysends:
...@@ -125,11 +127,52 @@ with open(outfile, "w") as fp: ...@@ -125,11 +127,52 @@ with open(outfile, "w") as fp:
if len(keysends[key]) == 1 and len(keyrecvs[key]) == 1: if len(keysends[key]) == 1 and len(keyrecvs[key]) == 1:
isend = keysends[key][0] isend = keysends[key][0]
irecv = keyrecvs[key][0] irecv = keyrecvs[key][0]
msends[isend] = irecv
fp.write(" ".join(sends[isend]) + " " + " ".join(recvs[irecv]) + "\n") fp.write(" ".join(sends[isend]) + " " + " ".join(recvs[irecv]) + "\n")
else: else:
print "# ERROR: found ", len(keysends[key]), "/", len(keyrecvs[key]), " matches for key: ", key, " should be 1/1" print "# ERROR: found ", len(keysends[key]), "/", len(keyrecvs[key]), " matches for key: ", key, " should be 1/1"
else: else:
print "# ERROR: missing recv key: ", key 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) sys.exit(0)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment