#!/usr/bin/python import argparse import math from plotly.offline import plot import plotly.graph_objects as go from cacheLib import * def main(): parser = argparse.ArgumentParser(description='Generates a graph obtained by sweeping over a memory area repeatedly with a given stride') parser.add_argument("-stride", help="Stride (in bytes) (Default: 64)", type=int, default=64) parser.add_argument("-startSize", help="Start size of the memory area (in kB) (Default: 4)", type=int, default=4) parser.add_argument("-endSize", help="End size of the memory area (in kB) (Default: 32768)", type=int, default=32768) parser.add_argument("-loop", help="Loop count (Default: 100)", type=int, default=100) parser.add_argument("-output", help="Output file name", default='strideGraph.html') args = parser.parse_args() resetNanoBench() setNanoBenchParameters(config=getDefaultCacheConfig(), nMeasurements=1, warmUpCount=0, unrollCount=1, loopCount=args.loop, basicMode=False, noMem=True) nbDicts = [] xValues = [] nAddresses = [] tickvals = [] pt = args.startSize*1024 while pt <= args.endSize*1024: tickvals.append(pt) for x in ([int(math.pow(2, math.log(pt, 2) + i/16.0)) for i in range(0,16)] if pt < args.endSize*1024 else [pt]): print x/1024 xValues.append(str(x)) addresses = range(0, x, args.stride) nAddresses.append(len(addresses)) ec = getCodeForAddressLists([AddressList(addresses, False, False, False)], wbinvd=True) nbDicts.append(runNanoBench(code=ec.code, init=ec.init, oneTimeInit=ec.oneTimeInit)) pt *= 2 title = cpuid.cpu_name(cpuid.CPUID()) html = ['', '
', '