xref: /petsc/src/benchmarks/streams/process.py (revision d3ae85c4231eeb9c96a2cdde9142a652e423115c)
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