From fe7c3614fb617d864b22bbf697939371b53b4d7b Mon Sep 17 00:00:00 2001 From: Maria Kotsifakou <kotsifa2@burman.cs.illinois.edu> Date: Wed, 3 Jun 2015 16:11:21 -0500 Subject: [PATCH] Edited script for plotting --- llvm/test/VISC/parboil/parboilParser.py | 142 +++++++++++++----------- 1 file changed, 78 insertions(+), 64 deletions(-) diff --git a/llvm/test/VISC/parboil/parboilParser.py b/llvm/test/VISC/parboil/parboilParser.py index e2d4e567c1..980f6735a9 100755 --- a/llvm/test/VISC/parboil/parboilParser.py +++ b/llvm/test/VISC/parboil/parboilParser.py @@ -219,11 +219,14 @@ def printTimerDecomposition(csvDict, isVisc): line = line + csvDict[app][v][test][t][cat] + "," print line -def plotTimerDecomposition(csvDict, isVisc): +def plotTimerDecomposition(csvDict, plotapp): global num_figs # get apps - apps = csvDict.keys() + if not plotapp: + apps = csvDict.keys() + else: + apps = [ plotapp ] # get tests for each app tests = dict() @@ -231,79 +234,89 @@ def plotTimerDecomposition(csvDict, isVisc): tests[app] = getTests(app, csvDict) # list of timer-category pairs - if isVisc: - timers =[('Final', 'Kernel'), - ('Final', 'Load Program Binary'), - ('Final', 'Argument Unpack'), - ('Final', 'Marshal Arguments'), - ('Final', 'Free Memory'), - ('Final', 'Memory Track'), - ('Final', 'Clear Context'), - ('Final', 'Total GPU Computation'), - ('Final', 'Copy Pointer Arguments'), - ('Final', 'Initialize Context'), - ('Final', 'Read Output'), - ('Final', 'Pthread Create'), - ('Final', 'Copy Scalar Arguments'), - ('Final', 'WorkGroup Size Calculation'), - ('Final', 'IO'), - ('Final', 'Output Pack'), - ('Parboil', 'Mem_Untrack'), - ('Parboil', 'Clear_Ctx'), - ('GenVISC_Timer', 'Timer Wall Time')] - else: - timers =[('Final', 'Init_Ctx'), - ('Final', 'Arg_Unpack'), - ('Final', 'Copy_Scalar'), - ('Final', 'Mem_Track'), - ('Final', 'Driver'), - ('Final', 'Output_Unpack'), - ('Final', 'Arg_Pack'), - ('Final', 'Copy'), - ('Final', 'Compute'), - ('Final', 'Setup'), - ('Final', 'Read_Output'), - ('Final', 'IO'), - ('Final', 'Pthread_Create'), - ('Final', 'Kernel'), - ('Final', 'Mem_Free'), - ('Final', 'Copy Async'), - ('Final', 'Copy_Ptr'), - ('Final', 'Output_Pack'), - ('Final', 'Mem_Untrack'), - ('Final', 'Clear_Ctx'), - ('Final', 'Timer Wall Time')] - -# num_experiments = 0; -# for app in apps: -# for test in tests[app]: -# num_experiments += 1 + visc_timers =[('Final', 'Kernel'), + ('Final', 'Load Program Binary'), + ('Final', 'Argument Unpack'), + ('Final', 'Marshal Arguments'), + ('Final', 'Free Memory'), + ('Final', 'Memory Track'), + ('Final', 'Clear Context'), + ('Final', 'Total GPU Computation'), + ('Final', 'Copy Pointer Arguments'), + ('Final', 'Initialize Context'), + ('Final', 'Read Output'), + ('Final', 'Pthread Create'), + ('Final', 'Copy Scalar Arguments'), + ('Final', 'WorkGroup Size Calculation'), + ('Final', 'IO'), + ('Final', 'Output Pack'), + ('Parboil', 'Mem_Untrack'), + ('Parboil', 'Clear_Ctx'), + ('GenVISC_Timer', 'Timer Wall Time')] + opencl_timers =[('Final', 'Init_Ctx'), + ('Final', 'Arg_Unpack'), + ('Final', 'Copy_Scalar'), + ('Final', 'Mem_Track'), + ('Final', 'Driver'), + ('Final', 'Output_Unpack'), + ('Final', 'Arg_Pack'), + ('Final', 'Copy'), + ('Final', 'Compute'), + ('Final', 'Setup'), + ('Final', 'Read_Output'), + ('Final', 'IO'), + ('Final', 'Pthread_Create'), + ('Final', 'Kernel'), + ('Final', 'Mem_Free'), + ('Final', 'Copy Async'), + ('Final', 'Copy_Ptr'), + ('Final', 'Output_Pack'), + ('Final', 'Mem_Untrack'), + ('Final', 'Clear_Ctx'), + ('Final', 'Timer Wall Time')] -# exp_count = 0 for app in apps: - v = 'visc' if isVisc else getOpenCLVersionName(app) for test in tests[app]: -# exp_count += 1 +# Plotting visc timers + v = 'visc' n_vals = 0; axis_values = [] - time_decomp = [] - for (t, cat) in timers: + visc_time_decomp = [] + for (t, cat) in visc_timers: n_vals += 1 axis_values.append(cat); - time_decomp.append(float(csvDict[app][v][test][t][cat])) + visc_time_decomp.append(float(csvDict[app][v][test][t][cat])) opacity = 0.4 num_figs += 1 - fig, ax = plt.subplots(num=num_figs) + fig = plt.figure(num=num_figs) + ax = fig.add_subplot(211); index = np.arange(n_vals) - plt.barh(index, time_decomp, alpha=opacity, color='b', label=v) + plt.barh(index, visc_time_decomp, alpha=opacity, color='b', label=v) plt.xlabel('Time (s)') plt.ylabel('Timers') plt.title('Time Decomposition - ' + app + ' ' + test + ' ' + v) plt.yticks(index, axis_values) plt.tight_layout() + v = getOpenCLVersionName(app) + n_vals = 0; + axis_values = [] + opencl_time_decomp = [] + for (t, cat) in opencl_timers: + n_vals += 1 + axis_values.append(cat); + opencl_time_decomp.append(float(csvDict[app][v][test][t][cat])) + opacity = 0.4 + ax = fig.add_subplot(212); + index = np.arange(n_vals) + plt.barh(index, opencl_time_decomp, alpha=opacity, color='r', label=v) + plt.xlabel('Time (s)') + plt.ylabel('Timers') + plt.title('Time Decomposition - ' + app + ' ' + test + ' ' + v) + plt.yticks(index, axis_values) + plt.tight_layout() # command line options parser @@ -314,9 +327,9 @@ parser.add_option("--print-timers-visc",action="store_true",default=False,dest=" parser.add_option("--print-timers-opencl",action="store_true",default=False,dest="printTimersOpencl") parser.add_option("--print-all",action="store_true",default=False,dest="printAll") parser.add_option("--plot-totals",action="store_true",default=False,dest="plotTotals") -parser.add_option("--plot-timers-visc",action="store_true",default=False,dest="plotTimersVisc") -parser.add_option("--plot-timers-opencl",action="store_true",default=False,dest="plotTimersOpencl") +parser.add_option("--plot-timers",action="store_true",default=False,dest="plotTimers") parser.add_option("--plot-all",action="store_true",default=False,dest="plotAll") +parser.add_option("--plot-app",action="store",type="string",dest="plotapp") # main def main(): @@ -350,14 +363,15 @@ def main(): print '' # plot graphs + if options.plotTotals or options.plotAll: plotTotalExecutionTimeTable(csvDict) - if options.plotTimersVisc or options.plotAll: - plotTimerDecomposition(csvDict, isVisc=True) - - if options.plotTimersOpencl or options.plotAll: - plotTimerDecomposition(csvDict, isVisc=False) + if options.plotapp and not options.plotapp in csvDict.keys(): + print "parboilReader.py: Error: No input file was given!" + raise OSError + elif options.plotapp or options.plotTimers or options.plotAll: + plotTimerDecomposition(csvDict, options.plotapp) plt.show() for i in range(num_figs): -- GitLab