1#!/usr/bin/env python 2import os 3from benchmarkExample import PETScExample 4 5def processSummary(moduleName, times, events): 6 '''Process the Python log summary into plot data''' 7 m = __import__(moduleName) 8 reload(m) 9 # Total Time 10 times.append(m.Time[0]) 11 # Common events 12 # Add the time and flop rate 13 for stageName, eventName in [('GPU_Stage','MatCUSPSetValBch'), ('CPU_Stage','ElemAssembly')]: 14 s = getattr(m, stageName) 15 if not eventName in events: 16 events[eventName] = [] 17 events[eventName].append((s.event[eventName].Time[0], s.event[eventName].Flops[0]/(s.event[eventName].Time[0] * 1e6))) 18 return 19 20def plotSummary(library, num, sizes, times, events): 21 from pylab import legend, plot, show, title, xlabel, ylabel 22 import numpy as np 23 showEventTime = True 24 print events 25 if showEventTime: 26 data = [] 27 names = [] 28 for event, style in [('MatCUSPSetValBch', 'b-'), ('ElemAssembly', 'b:')]: 29 names.append(event) 30 data.append(sizes) 31 data.append(np.array(events[event])[:,0]) 32 data.append(style) 33 plot(*data) 34 title('Performance on '+library+' Example '+str(num)) 35 xlabel('Number of Dof') 36 ylabel('Time (s)') 37 legend(names, 'upper left', shadow = True) 38 show() 39 return 40 41if __name__ == '__main__': 42 library = 'KSP' 43 num = 4 44 ex = PETScExample(library, num, log_summary_python='summary.py', preload='off') 45 if 1: 46 sizes = [] 47 times = [] 48 events = {} 49 for n in [10, 20, 50, 100, 150, 200, 250, 300, 350]: 50 ex.run(da_grid_x=n, da_grid_y=n, cusp_synchronize=1) 51 sizes.append(n*n) 52 processSummary('summary', times, events) 53 plotSummary(library, num, sizes, times, events) 54 else: 55 times = [] 56 sizes = [] 57 for n in range(150, 1350, 100): 58 sizes.append(n*n) 59 baconostEvents = {'ElemAssembly': [(0.040919999999999998, 0.0), (0.1242, 0.0), (0.24410000000000001, 0.0), (0.374, 0.0), (0.56259999999999999, 0.0), (0.79049999999999998, 0.0), (1.0880000000000001, 0.0), (1.351, 0.0), (1.6930000000000001, 0.0), (2.0609999999999999, 0.0), (2.4820000000000002, 0.0), (3.0640000000000001, 0.0)], 'MatCUSPSetValBch': [(0.0123, 0.0), (0.023429999999999999, 0.0), (0.043540000000000002, 0.0), (0.06608, 0.0), (0.09579, 0.0), (0.12920000000000001, 0.0), (0.17169999999999999, 0.0), (0.2172, 0.0), (0.27179999999999999, 0.0), (0.48309999999999997, 0.0), (0.44180000000000003, 0.0), (0.51529999999999998, 0.0)]} 60 plotSummary(library, num, sizes, times, baconostEvents) 61