1*d3ae85c4SBarry Smith#!/usr/bin/env python 2*d3ae85c4SBarry Smith#!/bin/env python 3*d3ae85c4SBarry Smith# 4*d3ae85c4SBarry Smith# Computers speed up of Streams benchmark results generated by make streams 5*d3ae85c4SBarry Smith# 6*d3ae85c4SBarry Smithimport os 7*d3ae85c4SBarry Smith# 8*d3ae85c4SBarry Smithdef process(): 9*d3ae85c4SBarry Smith import re 10*d3ae85c4SBarry Smith ff = open('output') 11*d3ae85c4SBarry Smith data = ff.read() 12*d3ae85c4SBarry Smith ff.close() 13*d3ae85c4SBarry Smith 14*d3ae85c4SBarry Smith hosts = {} 15*d3ae85c4SBarry Smith triads = {} 16*d3ae85c4SBarry Smith speedups = {} 17*d3ae85c4SBarry Smith match = data.split('Number of MPI processes ') 18*d3ae85c4SBarry Smith for i in match: 19*d3ae85c4SBarry Smith if i: 20*d3ae85c4SBarry Smith fields = i.split('\n') 21*d3ae85c4SBarry Smith size = int(fields[0]) 22*d3ae85c4SBarry Smith hosts[size] = fields[1:size+1] 23*d3ae85c4SBarry Smith triads[size] = float(fields[size+5].split()[1]) 24*d3ae85c4SBarry Smith 25*d3ae85c4SBarry Smith ff = open('output','a') 26*d3ae85c4SBarry Smith print 'np speedup' 27*d3ae85c4SBarry Smith ff.write('np speedup\n') 28*d3ae85c4SBarry Smith for sizes in hosts: 29*d3ae85c4SBarry Smith speedups[sizes] = triads[sizes]/triads[1] 30*d3ae85c4SBarry Smith print sizes,round(triads[sizes]/triads[1],2) 31*d3ae85c4SBarry Smith ff.write(str(sizes)+' '+str(round(triads[sizes]/triads[1],2))+'\n') 32*d3ae85c4SBarry Smith ff.close() 33*d3ae85c4SBarry Smith 34*d3ae85c4SBarry Smith try: 35*d3ae85c4SBarry Smith import matplotlib 36*d3ae85c4SBarry Smith except: 37*d3ae85c4SBarry Smith print "Unable to plot speedup" 38*d3ae85c4SBarry Smith return 39*d3ae85c4SBarry Smith 40*d3ae85c4SBarry Smith try: 41*d3ae85c4SBarry Smith import matplotlib.pyplot as plt 42*d3ae85c4SBarry Smith 43*d3ae85c4SBarry Smith plt.title('Perfect and Streams Speedup') 44*d3ae85c4SBarry Smith plt.plot(hosts.keys(),hosts.keys(),'b-o',hosts.keys(),speedups.values(),'r-o') 45*d3ae85c4SBarry Smith plt.show() 46*d3ae85c4SBarry Smith 47*d3ae85c4SBarry Smith# 48*d3ae85c4SBarry Smith# 49*d3ae85c4SBarry Smithif __name__ == '__main__': 50*d3ae85c4SBarry Smith import sys 51*d3ae85c4SBarry Smith process() 52*d3ae85c4SBarry Smith 53*d3ae85c4SBarry Smith 54