cpu2000.py revision 4555
14116Sgblack@eecs.umich.edu# Copyright (c) 2006-2007 The Regents of The University of Michigan 23671Sbinkertn@umich.edu# All rights reserved. 33671Sbinkertn@umich.edu# 43671Sbinkertn@umich.edu# Redistribution and use in source and binary forms, with or without 53671Sbinkertn@umich.edu# modification, are permitted provided that the following conditions are 63671Sbinkertn@umich.edu# met: redistributions of source code must retain the above copyright 73671Sbinkertn@umich.edu# notice, this list of conditions and the following disclaimer; 83671Sbinkertn@umich.edu# redistributions in binary form must reproduce the above copyright 93671Sbinkertn@umich.edu# notice, this list of conditions and the following disclaimer in the 103671Sbinkertn@umich.edu# documentation and/or other materials provided with the distribution; 113671Sbinkertn@umich.edu# neither the name of the copyright holders nor the names of its 123671Sbinkertn@umich.edu# contributors may be used to endorse or promote products derived from 133671Sbinkertn@umich.edu# this software without specific prior written permission. 143671Sbinkertn@umich.edu# 153671Sbinkertn@umich.edu# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 163671Sbinkertn@umich.edu# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 173671Sbinkertn@umich.edu# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 183671Sbinkertn@umich.edu# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 193671Sbinkertn@umich.edu# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 203671Sbinkertn@umich.edu# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 213671Sbinkertn@umich.edu# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 223671Sbinkertn@umich.edu# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 233671Sbinkertn@umich.edu# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 243671Sbinkertn@umich.edu# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 253671Sbinkertn@umich.edu# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 263671Sbinkertn@umich.edu# 273671Sbinkertn@umich.edu# Authors: Nathan Binkert 283671Sbinkertn@umich.edu 293671Sbinkertn@umich.eduimport os 303671Sbinkertn@umich.eduimport sys 313671Sbinkertn@umich.edufrom os.path import basename, exists, join as joinpath, normpath 323671Sbinkertn@umich.edufrom os.path import isdir, isfile, islink 333671Sbinkertn@umich.edu 343671Sbinkertn@umich.eduspec_dist = '/dist/m5/cpu2000' 353671Sbinkertn@umich.edu 363671Sbinkertn@umich.edudef copyfiles(srcdir, dstdir): 373671Sbinkertn@umich.edu from filecmp import cmp as filecmp 383671Sbinkertn@umich.edu from shutil import copyfile 393671Sbinkertn@umich.edu 403671Sbinkertn@umich.edu srcdir = normpath(srcdir) 413671Sbinkertn@umich.edu dstdir = normpath(dstdir) 423671Sbinkertn@umich.edu 433671Sbinkertn@umich.edu if not isdir(dstdir): 443671Sbinkertn@umich.edu os.mkdir(dstdir) 453671Sbinkertn@umich.edu 463671Sbinkertn@umich.edu for root, dirs, files in os.walk(srcdir): 473671Sbinkertn@umich.edu root = normpath(root) 483671Sbinkertn@umich.edu prefix = os.path.commonprefix([root, srcdir]) 493671Sbinkertn@umich.edu 503671Sbinkertn@umich.edu root = root[len(prefix):] 513671Sbinkertn@umich.edu if root.startswith('/'): 523671Sbinkertn@umich.edu root = root[1:] 533671Sbinkertn@umich.edu 543671Sbinkertn@umich.edu for entry in dirs: 553671Sbinkertn@umich.edu newdir = joinpath(dstdir, root, entry) 563671Sbinkertn@umich.edu if not isdir(newdir): 573671Sbinkertn@umich.edu os.mkdir(newdir) 583671Sbinkertn@umich.edu 593671Sbinkertn@umich.edu for entry in files: 603671Sbinkertn@umich.edu dest = normpath(joinpath(dstdir, root, entry)) 613671Sbinkertn@umich.edu src = normpath(joinpath(srcdir, root, entry)) 623671Sbinkertn@umich.edu if not isfile(dest) or not filecmp(src, dest): 633671Sbinkertn@umich.edu copyfile(src, dest) 643671Sbinkertn@umich.edu 653671Sbinkertn@umich.edu # some of the spec benchmarks expect to be run from one directory up. 663671Sbinkertn@umich.edu # just create some symlinks that solve the problem 673671Sbinkertn@umich.edu inlink = joinpath(dstdir, 'input') 683671Sbinkertn@umich.edu outlink = joinpath(dstdir, 'output') 693671Sbinkertn@umich.edu if not exists(inlink): 703671Sbinkertn@umich.edu os.symlink('.', inlink) 713671Sbinkertn@umich.edu if not exists(outlink): 723671Sbinkertn@umich.edu os.symlink('.', outlink) 733671Sbinkertn@umich.edu 743671Sbinkertn@umich.educlass Benchmark(object): 753671Sbinkertn@umich.edu def __init__(self, isa, os, input_set): 763671Sbinkertn@umich.edu if not hasattr(self.__class__, 'name'): 773671Sbinkertn@umich.edu self.name = self.__class__.__name__ 783671Sbinkertn@umich.edu 793671Sbinkertn@umich.edu if not hasattr(self.__class__, 'binary'): 803671Sbinkertn@umich.edu self.binary = self.name 813671Sbinkertn@umich.edu 823671Sbinkertn@umich.edu if not hasattr(self.__class__, 'args'): 833671Sbinkertn@umich.edu self.args = [] 843671Sbinkertn@umich.edu 853671Sbinkertn@umich.edu if not hasattr(self.__class__, 'output'): 863671Sbinkertn@umich.edu self.output = '%s.out' % self.name 873671Sbinkertn@umich.edu 883671Sbinkertn@umich.edu try: 893671Sbinkertn@umich.edu func = getattr(self.__class__, input_set) 903671Sbinkertn@umich.edu except AttributeError: 913671Sbinkertn@umich.edu raise AttributeError, \ 923671Sbinkertn@umich.edu 'The benchmark %s does not have the %s input set' % \ 933671Sbinkertn@umich.edu (self.name, input_set) 943671Sbinkertn@umich.edu 953671Sbinkertn@umich.edu executable = joinpath(spec_dist, 'binaries', isa, os, self.binary) 963671Sbinkertn@umich.edu if not isfile(executable): 973671Sbinkertn@umich.edu raise AttributeError, '%s not found' % executable 983671Sbinkertn@umich.edu self.executable = executable 993671Sbinkertn@umich.edu 1003671Sbinkertn@umich.edu # root of tree for input & output data files 1013671Sbinkertn@umich.edu data_dir = joinpath(spec_dist, 'data', self.name) 1023671Sbinkertn@umich.edu # optional subtree with files shared across input sets 1033671Sbinkertn@umich.edu all_dir = joinpath(data_dir, 'all') 1043671Sbinkertn@umich.edu # dirs for input & output files for this input set 1053671Sbinkertn@umich.edu inputs_dir = joinpath(data_dir, input_set, 'input') 1063671Sbinkertn@umich.edu outputs_dir = joinpath(data_dir, input_set, 'output') 1074116Sgblack@eecs.umich.edu # keep around which input set was specified 1084116Sgblack@eecs.umich.edu self.input_set = input_set 1093671Sbinkertn@umich.edu 1103671Sbinkertn@umich.edu if not isdir(inputs_dir): 1113671Sbinkertn@umich.edu raise AttributeError, '%s not found' % inputs_dir 1123671Sbinkertn@umich.edu 1133671Sbinkertn@umich.edu self.inputs_dir = [ inputs_dir ] 1143671Sbinkertn@umich.edu if isdir(all_dir): 1153671Sbinkertn@umich.edu self.inputs_dir += [ joinpath(all_dir, 'input') ] 1163671Sbinkertn@umich.edu if isdir(outputs_dir): 1173671Sbinkertn@umich.edu self.outputs_dir = outputs_dir 1183671Sbinkertn@umich.edu 1193671Sbinkertn@umich.edu if not hasattr(self.__class__, 'stdin'): 1203671Sbinkertn@umich.edu self.stdin = joinpath(inputs_dir, '%s.in' % self.name) 1213671Sbinkertn@umich.edu if not isfile(self.stdin): 1223671Sbinkertn@umich.edu self.stdin = None 1233671Sbinkertn@umich.edu 1243671Sbinkertn@umich.edu if not hasattr(self.__class__, 'stdout'): 1253671Sbinkertn@umich.edu self.stdout = joinpath(outputs_dir, '%s.out' % self.name) 1263671Sbinkertn@umich.edu if not isfile(self.stdout): 1273671Sbinkertn@umich.edu self.stdout = None 1283671Sbinkertn@umich.edu 1293671Sbinkertn@umich.edu func(self, isa, os) 1303671Sbinkertn@umich.edu 1313671Sbinkertn@umich.edu def makeLiveProcessArgs(self, **kwargs): 1323671Sbinkertn@umich.edu # set up default args for LiveProcess object 1333671Sbinkertn@umich.edu process_args = {} 1344555Sbinkertn@umich.edu process_args['cmd'] = [ self.name ] + self.args 1353671Sbinkertn@umich.edu process_args['executable'] = self.executable 1363671Sbinkertn@umich.edu if self.stdin: 1373671Sbinkertn@umich.edu process_args['input'] = self.stdin 1383671Sbinkertn@umich.edu if self.stdout: 1393671Sbinkertn@umich.edu process_args['output'] = self.stdout 1403671Sbinkertn@umich.edu 1413671Sbinkertn@umich.edu # explicit keywords override defaults 1423671Sbinkertn@umich.edu process_args.update(kwargs) 1433671Sbinkertn@umich.edu 1443671Sbinkertn@umich.edu return process_args 1453671Sbinkertn@umich.edu 1463671Sbinkertn@umich.edu def makeLiveProcess(self, **kwargs): 1473671Sbinkertn@umich.edu process_args = self.makeLiveProcessArgs(**kwargs) 1483671Sbinkertn@umich.edu 1493671Sbinkertn@umich.edu # figure out working directory: use m5's outdir unless 1503671Sbinkertn@umich.edu # overridden by LiveProcess's cwd param 1513671Sbinkertn@umich.edu cwd = process_args.get('cwd') 1523671Sbinkertn@umich.edu if not cwd: 1533671Sbinkertn@umich.edu from m5.main import options 1543671Sbinkertn@umich.edu cwd = options.outdir 1553671Sbinkertn@umich.edu process_args['cwd'] = cwd 1563671Sbinkertn@umich.edu if not isdir(cwd): 1573671Sbinkertn@umich.edu os.makedirs(cwd) 1583671Sbinkertn@umich.edu # copy input files to working directory 1593671Sbinkertn@umich.edu for d in self.inputs_dir: 1603671Sbinkertn@umich.edu copyfiles(d, cwd) 1613671Sbinkertn@umich.edu # generate LiveProcess object 1623671Sbinkertn@umich.edu from m5.objects import LiveProcess 1633671Sbinkertn@umich.edu return LiveProcess(**process_args) 1643671Sbinkertn@umich.edu 1653671Sbinkertn@umich.edu def __str__(self): 1663671Sbinkertn@umich.edu return self.name 1673671Sbinkertn@umich.edu 1683671Sbinkertn@umich.educlass DefaultBenchmark(Benchmark): 1693671Sbinkertn@umich.edu def ref(self, isa, os): pass 1703671Sbinkertn@umich.edu def test(self, isa, os): pass 1713671Sbinkertn@umich.edu def train(self, isa, os): pass 1723671Sbinkertn@umich.edu 1733671Sbinkertn@umich.educlass MinneDefaultBenchmark(DefaultBenchmark): 1743671Sbinkertn@umich.edu def smred(self, isa, os): pass 1753671Sbinkertn@umich.edu def mdred(self, isa, os): pass 1763671Sbinkertn@umich.edu def lgred(self, isa, os): pass 1773671Sbinkertn@umich.edu 1783671Sbinkertn@umich.educlass ammp(MinneDefaultBenchmark): 1793671Sbinkertn@umich.edu name = 'ammp' 1803671Sbinkertn@umich.edu number = 188 1813671Sbinkertn@umich.edu lang = 'C' 1823671Sbinkertn@umich.edu 1833671Sbinkertn@umich.educlass applu(MinneDefaultBenchmark): 1843671Sbinkertn@umich.edu name = 'applu' 1853671Sbinkertn@umich.edu number = 173 1863671Sbinkertn@umich.edu lang = 'F77' 1873671Sbinkertn@umich.edu 1883671Sbinkertn@umich.educlass apsi(MinneDefaultBenchmark): 1893671Sbinkertn@umich.edu name = 'apsi' 1903671Sbinkertn@umich.edu number = 301 1913671Sbinkertn@umich.edu lang = 'F77' 1923671Sbinkertn@umich.edu 1933671Sbinkertn@umich.educlass art(DefaultBenchmark): 1943671Sbinkertn@umich.edu name = 'art' 1953671Sbinkertn@umich.edu number = 179 1963671Sbinkertn@umich.edu lang = 'C' 1973671Sbinkertn@umich.edu 1983671Sbinkertn@umich.edu def test(self, isa, os): 1993671Sbinkertn@umich.edu self.args = [ '-scanfile', 'c756hel.in', 2003671Sbinkertn@umich.edu '-trainfile1', 'a10.img', 2013671Sbinkertn@umich.edu '-stride', '2', 2023671Sbinkertn@umich.edu '-startx', '134', 2033671Sbinkertn@umich.edu '-starty', '220', 2043671Sbinkertn@umich.edu '-endx', '139', 2053671Sbinkertn@umich.edu '-endy', '225', 2063671Sbinkertn@umich.edu '-objects', '1' ] 2073671Sbinkertn@umich.edu self.output = 'test.out' 2083671Sbinkertn@umich.edu 2093671Sbinkertn@umich.edu def train(self, isa, os): 2103671Sbinkertn@umich.edu self.args = [ '-scanfile', 'c756hel.in', 2113671Sbinkertn@umich.edu '-trainfile1', 'a10.img', 2123671Sbinkertn@umich.edu '-stride', '2', 2133671Sbinkertn@umich.edu '-startx', '134', 2143671Sbinkertn@umich.edu '-starty', '220', 2153671Sbinkertn@umich.edu '-endx', '184', 2163671Sbinkertn@umich.edu '-endy', '240', 2173671Sbinkertn@umich.edu '-objects', '3' ] 2183671Sbinkertn@umich.edu self.output = 'train.out' 2193671Sbinkertn@umich.edu 2203671Sbinkertn@umich.edu def lgred(self, isa, os): 2213671Sbinkertn@umich.edu self.args = ['-scanfile', 'c756hel.in', 2223671Sbinkertn@umich.edu '-trainfile1', 'a10.img', 2233671Sbinkertn@umich.edu '-stride', '5', 2243671Sbinkertn@umich.edu '-startx', '134', 2253671Sbinkertn@umich.edu '-starty', '220', 2263671Sbinkertn@umich.edu '-endx', '184', 2273671Sbinkertn@umich.edu '-endy', '240', 2283671Sbinkertn@umich.edu '-objects', '1' ] 2293671Sbinkertn@umich.edu self.output = 'lgred.out' 2303671Sbinkertn@umich.edu 2313671Sbinkertn@umich.edu 2323671Sbinkertn@umich.educlass art110(art): 2333671Sbinkertn@umich.edu def ref(self, isa, os): 2343671Sbinkertn@umich.edu self.args = [ '-scanfile', 'c756hel.in', 2353671Sbinkertn@umich.edu '-trainfile1', 'a10.img', 2363671Sbinkertn@umich.edu '-trainfile2', 'hc.img', 2373671Sbinkertn@umich.edu '-stride', '2', 2383671Sbinkertn@umich.edu '-startx', '110', 2393671Sbinkertn@umich.edu '-starty', '200', 2403671Sbinkertn@umich.edu '-endx', '160', 2413671Sbinkertn@umich.edu '-endy', '240', 2423671Sbinkertn@umich.edu '-objects', '10' ] 2433671Sbinkertn@umich.edu self.output = 'ref.1.out' 2443671Sbinkertn@umich.edu 2453671Sbinkertn@umich.educlass art470(art): 2463671Sbinkertn@umich.edu def ref(self, isa, os): 2473671Sbinkertn@umich.edu self.args = [ '-scanfile', 'c756hel.in', 2483671Sbinkertn@umich.edu '-trainfile1', 'a10.img', 2493671Sbinkertn@umich.edu '-trainfile2', 'hc.img', 2503671Sbinkertn@umich.edu '-stride', '2', 2513671Sbinkertn@umich.edu '-startx', '470', 2523671Sbinkertn@umich.edu '-starty', '140', 2533671Sbinkertn@umich.edu '-endx', '520', 2543671Sbinkertn@umich.edu '-endy', '180', 2553671Sbinkertn@umich.edu '-objects', '10' ] 2563671Sbinkertn@umich.edu self.output = 'ref.2.out' 2573671Sbinkertn@umich.edu 2583671Sbinkertn@umich.educlass equake(DefaultBenchmark): 2593671Sbinkertn@umich.edu name = 'equake' 2603671Sbinkertn@umich.edu number = 183 2613671Sbinkertn@umich.edu lang = 'C' 2623671Sbinkertn@umich.edu 2633671Sbinkertn@umich.edu def lgred(self, isa, os): pass 2643671Sbinkertn@umich.edu 2653671Sbinkertn@umich.educlass facerec(MinneDefaultBenchmark): 2663671Sbinkertn@umich.edu name = 'facerec' 2673671Sbinkertn@umich.edu number = 187 2683671Sbinkertn@umich.edu lang = 'F' 2693671Sbinkertn@umich.edu 2703671Sbinkertn@umich.educlass fma3d(MinneDefaultBenchmark): 2713671Sbinkertn@umich.edu name = 'fma3d' 2723671Sbinkertn@umich.edu number = 191 2733671Sbinkertn@umich.edu lang = 'F' 2743671Sbinkertn@umich.edu 2753671Sbinkertn@umich.educlass galgel(MinneDefaultBenchmark): 2763671Sbinkertn@umich.edu name = 'galgel' 2773671Sbinkertn@umich.edu number = 178 2783671Sbinkertn@umich.edu lang = 'F' 2793671Sbinkertn@umich.edu 2803671Sbinkertn@umich.educlass lucas(MinneDefaultBenchmark): 2813671Sbinkertn@umich.edu name = 'lucas' 2823671Sbinkertn@umich.edu number = 189 2833671Sbinkertn@umich.edu lang = 'F' 2843671Sbinkertn@umich.edu 2853671Sbinkertn@umich.educlass mesa(Benchmark): 2863671Sbinkertn@umich.edu name = 'mesa' 2873671Sbinkertn@umich.edu number = 177 2883671Sbinkertn@umich.edu lang = 'C' 2893671Sbinkertn@umich.edu stdin = None 2903671Sbinkertn@umich.edu 2913671Sbinkertn@umich.edu def __set_args(self, frames): 2923671Sbinkertn@umich.edu self.args = [ '-frames', frames, '-meshfile', '%s.in' % self.name, 2933671Sbinkertn@umich.edu '-ppmfile', '%s.ppm' % self.name ] 2943671Sbinkertn@umich.edu 2953671Sbinkertn@umich.edu def test(self, isa, os): 2963671Sbinkertn@umich.edu self.__set_args('10') 2973671Sbinkertn@umich.edu 2983671Sbinkertn@umich.edu def train(self, isa, os): 2993671Sbinkertn@umich.edu self.__set_args('500') 3003671Sbinkertn@umich.edu 3013671Sbinkertn@umich.edu def ref(self, isa, os): 3023671Sbinkertn@umich.edu self.__set_args('1000') 3033671Sbinkertn@umich.edu 3043671Sbinkertn@umich.edu def lgred(self, isa, os): 3053671Sbinkertn@umich.edu self.__set_args('1') 3063671Sbinkertn@umich.edu 3073671Sbinkertn@umich.educlass mgrid(MinneDefaultBenchmark): 3083671Sbinkertn@umich.edu name = 'mgrid' 3093671Sbinkertn@umich.edu number = 172 3103671Sbinkertn@umich.edu lang = 'F77' 3113671Sbinkertn@umich.edu 3123671Sbinkertn@umich.educlass sixtrack(DefaultBenchmark): 3133671Sbinkertn@umich.edu name = 'sixtrack' 3143671Sbinkertn@umich.edu number = 200 3153671Sbinkertn@umich.edu lang = 'F77' 3163671Sbinkertn@umich.edu 3173671Sbinkertn@umich.edu def lgred(self, isa, os): pass 3183671Sbinkertn@umich.edu 3193671Sbinkertn@umich.educlass swim(MinneDefaultBenchmark): 3203671Sbinkertn@umich.edu name = 'swim' 3213671Sbinkertn@umich.edu number = 171 3223671Sbinkertn@umich.edu lang = 'F77' 3233671Sbinkertn@umich.edu 3243671Sbinkertn@umich.educlass wupwise(DefaultBenchmark): 3253671Sbinkertn@umich.edu name = 'wupwise' 3263671Sbinkertn@umich.edu number = 168 3273671Sbinkertn@umich.edu lang = 'F77' 3283671Sbinkertn@umich.edu 3293671Sbinkertn@umich.edu def lgred(self, isa, os): pass 3303671Sbinkertn@umich.edu 3313671Sbinkertn@umich.educlass bzip2(DefaultBenchmark): 3323671Sbinkertn@umich.edu name = 'bzip2' 3333671Sbinkertn@umich.edu number = 256 3343671Sbinkertn@umich.edu lang = 'C' 3353671Sbinkertn@umich.edu 3363671Sbinkertn@umich.edu def test(self, isa, os): 3373671Sbinkertn@umich.edu self.args = [ 'input.random' ] 3383671Sbinkertn@umich.edu 3393671Sbinkertn@umich.edu def train(self, isa, os): 3403671Sbinkertn@umich.edu self.args = [ 'input.compressed' ] 3413671Sbinkertn@umich.edu 3423671Sbinkertn@umich.educlass bzip2_source(bzip2): 3433671Sbinkertn@umich.edu def ref(self, isa, os): 3443671Sbinkertn@umich.edu self.args = [ 'input.source', '58' ] 3453671Sbinkertn@umich.edu 3463671Sbinkertn@umich.edu def lgred(self, isa, os): 3473671Sbinkertn@umich.edu self.args = [ 'input.source', '1' ] 3483671Sbinkertn@umich.edu 3493671Sbinkertn@umich.educlass bzip2_graphic(bzip2): 3503671Sbinkertn@umich.edu def ref(self, isa, os): 3513671Sbinkertn@umich.edu self.args = [ 'input.graphic', '58' ] 3523671Sbinkertn@umich.edu 3533671Sbinkertn@umich.edu def lgred(self, isa, os): 3543671Sbinkertn@umich.edu self.args = [ 'input.graphic', '1' ] 3553671Sbinkertn@umich.edu 3563671Sbinkertn@umich.educlass bzip2_program(bzip2): 3573671Sbinkertn@umich.edu def ref(self, isa, os): 3583671Sbinkertn@umich.edu self.args = [ 'input.program', '58' ] 3593671Sbinkertn@umich.edu 3603671Sbinkertn@umich.edu def lgred(self, isa, os): 3613671Sbinkertn@umich.edu self.args = [ 'input.program', '1' ] 3623671Sbinkertn@umich.edu 3633671Sbinkertn@umich.educlass crafty(MinneDefaultBenchmark): 3643671Sbinkertn@umich.edu name = 'crafty' 3653671Sbinkertn@umich.edu number = 186 3663671Sbinkertn@umich.edu lang = 'C' 3673671Sbinkertn@umich.edu 3683671Sbinkertn@umich.educlass eon(MinneDefaultBenchmark): 3693671Sbinkertn@umich.edu name = 'eon' 3703671Sbinkertn@umich.edu number = 252 3713671Sbinkertn@umich.edu lang = 'CXX' 3723671Sbinkertn@umich.edu stdin = None 3733671Sbinkertn@umich.edu 3743671Sbinkertn@umich.educlass eon_kajiya(eon): 3753671Sbinkertn@umich.edu args = [ 'chair.control.kajiya', 'chair.camera', 'chair.surfaces', 3763671Sbinkertn@umich.edu 'chair.kajiya.ppm', 'ppm', 'pixels_out.kajiya'] 3773671Sbinkertn@umich.edu output = 'kajiya_log.out' 3783671Sbinkertn@umich.edu 3793671Sbinkertn@umich.edu 3803671Sbinkertn@umich.educlass eon_cook(eon): 3813671Sbinkertn@umich.edu args = [ 'chair.control.cook', 'chair.camera', 'chair.surfaces', 3823671Sbinkertn@umich.edu 'chair.cook.ppm', 'ppm', 'pixels_out.cook' ] 3833671Sbinkertn@umich.edu output = 'cook_log.out' 3843671Sbinkertn@umich.edu 3853671Sbinkertn@umich.educlass eon_rushmeier(eon): 3863671Sbinkertn@umich.edu args = [ 'chair.control.rushmeier', 'chair.camera', 'chair.surfaces', 3873671Sbinkertn@umich.edu 'chair.rushmeier.ppm', 'ppm', 'pixels_out.rushmeier' ] 3883671Sbinkertn@umich.edu output = 'rushmeier_log.out' 3893671Sbinkertn@umich.edu 3903671Sbinkertn@umich.educlass gap(DefaultBenchmark): 3913671Sbinkertn@umich.edu name = 'gap' 3923671Sbinkertn@umich.edu number = 254 3933671Sbinkertn@umich.edu lang = 'C' 3943671Sbinkertn@umich.edu 3953671Sbinkertn@umich.edu def __set_args(self, size): 3963671Sbinkertn@umich.edu self.args = [ '-l', './', '-q', '-m', size ] 3973671Sbinkertn@umich.edu 3983671Sbinkertn@umich.edu def test(self, isa, os): 3993671Sbinkertn@umich.edu self.__set_args('64M') 4003671Sbinkertn@umich.edu 4013671Sbinkertn@umich.edu def train(self, isa, os): 4023671Sbinkertn@umich.edu self.__set_args('128M') 4033671Sbinkertn@umich.edu 4043671Sbinkertn@umich.edu def ref(self, isa, os): 4053671Sbinkertn@umich.edu self.__set_args('192M') 4063671Sbinkertn@umich.edu 4073671Sbinkertn@umich.edu def lgred(self, isa, os): 4083671Sbinkertn@umich.edu self.__set_args('64M') 4093671Sbinkertn@umich.edu 4103671Sbinkertn@umich.edu def mdred(self, isa, os): 4113671Sbinkertn@umich.edu self.__set_args('64M') 4123671Sbinkertn@umich.edu 4133671Sbinkertn@umich.edu def smred(self, isa, os): 4143671Sbinkertn@umich.edu self.__set_args('64M') 4153671Sbinkertn@umich.edu 4163671Sbinkertn@umich.educlass gcc(DefaultBenchmark): 4173671Sbinkertn@umich.edu name = 'gcc' 4183671Sbinkertn@umich.edu number = 176 4193671Sbinkertn@umich.edu lang = 'C' 4203671Sbinkertn@umich.edu 4213671Sbinkertn@umich.edu def test(self, isa, os): 4223671Sbinkertn@umich.edu self.args = [ 'cccp.i', '-o', 'cccp.s' ] 4233671Sbinkertn@umich.edu 4243671Sbinkertn@umich.edu def train(self, isa, os): 4253671Sbinkertn@umich.edu self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ] 4263671Sbinkertn@umich.edu 4273671Sbinkertn@umich.edu def smred(self, isa, os): 4283671Sbinkertn@umich.edu self.args = [ 'c-iterate.i', '-o', 'c-iterate.s' ] 4293671Sbinkertn@umich.edu 4303671Sbinkertn@umich.edu def mdred(self, isa, os): 4313671Sbinkertn@umich.edu self.args = [ 'rdlanal.i', '-o', 'rdlanal.s' ] 4323671Sbinkertn@umich.edu 4333671Sbinkertn@umich.edu def lgred(self, isa, os): 4343671Sbinkertn@umich.edu self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ] 4353671Sbinkertn@umich.edu 4363671Sbinkertn@umich.educlass gcc_166(gcc): 4373671Sbinkertn@umich.edu def ref(self, isa, os): 4383671Sbinkertn@umich.edu self.args = [ '166.i', '-o', '166.s' ] 4393671Sbinkertn@umich.edu 4403671Sbinkertn@umich.educlass gcc_200(gcc): 4413671Sbinkertn@umich.edu def ref(self, isa, os): 4423671Sbinkertn@umich.edu self.args = [ '200.i', '-o', '200.s' ] 4433671Sbinkertn@umich.edu 4443671Sbinkertn@umich.educlass gcc_expr(gcc): 4453671Sbinkertn@umich.edu def ref(self, isa, os): 4463671Sbinkertn@umich.edu self.args = [ 'expr.i', '-o', 'expr.s' ] 4473671Sbinkertn@umich.edu 4483671Sbinkertn@umich.educlass gcc_integrate(gcc): 4493671Sbinkertn@umich.edu def ref(self, isa, os): 4503671Sbinkertn@umich.edu self.args = [ 'integrate.i', '-o', 'integrate.s' ] 4513671Sbinkertn@umich.edu 4523671Sbinkertn@umich.educlass gcc_scilab(gcc): 4533671Sbinkertn@umich.edu def ref(self, isa, os): 4543671Sbinkertn@umich.edu self.args = [ 'scilab.i', '-o', 'scilab.s' ] 4553671Sbinkertn@umich.edu 4563671Sbinkertn@umich.educlass gzip(DefaultBenchmark): 4573671Sbinkertn@umich.edu name = 'gzip' 4583671Sbinkertn@umich.edu number = 164 4593671Sbinkertn@umich.edu lang = 'C' 4603671Sbinkertn@umich.edu 4613671Sbinkertn@umich.edu def test(self, isa, os): 4623671Sbinkertn@umich.edu self.args = [ 'input.compressed', '2' ] 4633671Sbinkertn@umich.edu 4643671Sbinkertn@umich.edu def train(self, isa, os): 4653671Sbinkertn@umich.edu self.args = [ 'input.combined', '32' ] 4663671Sbinkertn@umich.edu 4673671Sbinkertn@umich.educlass gzip_source(gzip): 4683671Sbinkertn@umich.edu def ref(self, isa, os): 4693671Sbinkertn@umich.edu self.args = [ 'input.source', '1' ] 4703671Sbinkertn@umich.edu def smred(self, isa, os): 4713671Sbinkertn@umich.edu self.args = [ 'input.source', '1' ] 4723671Sbinkertn@umich.edu def mdred(self, isa, os): 4733671Sbinkertn@umich.edu self.args = [ 'input.source', '1' ] 4743671Sbinkertn@umich.edu def lgred(self, isa, os): 4753671Sbinkertn@umich.edu self.args = [ 'input.source', '1' ] 4763671Sbinkertn@umich.edu 4773671Sbinkertn@umich.educlass gzip_log(gzip): 4783671Sbinkertn@umich.edu def ref(self, isa, os): 4793671Sbinkertn@umich.edu self.args = [ 'input.log', '60' ] 4803671Sbinkertn@umich.edu def smred(self, isa, os): 4813671Sbinkertn@umich.edu self.args = [ 'input.log', '1' ] 4823671Sbinkertn@umich.edu def mdred(self, isa, os): 4833671Sbinkertn@umich.edu self.args = [ 'input.log', '1' ] 4843671Sbinkertn@umich.edu def lgred(self, isa, os): 4853671Sbinkertn@umich.edu self.args = [ 'input.log', '1' ] 4863671Sbinkertn@umich.edu 4873671Sbinkertn@umich.educlass gzip_graphic(gzip): 4883671Sbinkertn@umich.edu def ref(self, isa, os): 4893671Sbinkertn@umich.edu self.args = [ 'input.graphic', '60' ] 4903671Sbinkertn@umich.edu def smred(self, isa, os): 4913671Sbinkertn@umich.edu self.args = [ 'input.graphic', '1' ] 4923671Sbinkertn@umich.edu def mdred(self, isa, os): 4933671Sbinkertn@umich.edu self.args = [ 'input.graphic', '1' ] 4943671Sbinkertn@umich.edu def lgred(self, isa, os): 4953671Sbinkertn@umich.edu self.args = [ 'input.graphic', '1' ] 4963671Sbinkertn@umich.edu 4973671Sbinkertn@umich.educlass gzip_random(gzip): 4983671Sbinkertn@umich.edu def ref(self, isa, os): 4993671Sbinkertn@umich.edu self.args = [ 'input.random', '60' ] 5003671Sbinkertn@umich.edu def smred(self, isa, os): 5013671Sbinkertn@umich.edu self.args = [ 'input.random', '1' ] 5023671Sbinkertn@umich.edu def mdred(self, isa, os): 5033671Sbinkertn@umich.edu self.args = [ 'input.random', '1' ] 5043671Sbinkertn@umich.edu def lgred(self, isa, os): 5053671Sbinkertn@umich.edu self.args = [ 'input.random', '1' ] 5063671Sbinkertn@umich.edu 5073671Sbinkertn@umich.educlass gzip_program(gzip): 5083671Sbinkertn@umich.edu def ref(self, isa, os): 5093671Sbinkertn@umich.edu self.args = [ 'input.program', '60' ] 5103671Sbinkertn@umich.edu def smred(self, isa, os): 5113671Sbinkertn@umich.edu self.args = [ 'input.program', '1' ] 5123671Sbinkertn@umich.edu def mdred(self, isa, os): 5133671Sbinkertn@umich.edu self.args = [ 'input.program', '1' ] 5143671Sbinkertn@umich.edu def lgred(self, isa, os): 5153671Sbinkertn@umich.edu self.args = [ 'input.program', '1' ] 5163671Sbinkertn@umich.edu 5173671Sbinkertn@umich.educlass mcf(MinneDefaultBenchmark): 5183671Sbinkertn@umich.edu name = 'mcf' 5193671Sbinkertn@umich.edu number = 181 5203671Sbinkertn@umich.edu lang = 'C' 5214271Sgblack@eecs.umich.edu args = [ 'mcf.in' ] 5223671Sbinkertn@umich.edu 5233671Sbinkertn@umich.educlass parser(MinneDefaultBenchmark): 5243671Sbinkertn@umich.edu name = 'parser' 5253671Sbinkertn@umich.edu number = 197 5263671Sbinkertn@umich.edu lang = 'C' 5273671Sbinkertn@umich.edu args = [ '2.1.dict', '-batch' ] 5283671Sbinkertn@umich.edu 5293671Sbinkertn@umich.educlass perlbmk(DefaultBenchmark): 5303671Sbinkertn@umich.edu name = 'perlbmk' 5313671Sbinkertn@umich.edu number = 253 5323671Sbinkertn@umich.edu lang = 'C' 5333671Sbinkertn@umich.edu 5343671Sbinkertn@umich.edu def test(self, isa, os): 5353671Sbinkertn@umich.edu self.args = [ '-I.', '-I', 'lib', 'test.pl' ] 5363671Sbinkertn@umich.edu self.stdin = 'test.in' 5373671Sbinkertn@umich.edu 5383671Sbinkertn@umich.educlass perlbmk_diffmail(perlbmk): 5393671Sbinkertn@umich.edu def ref(self, isa, os): 5403671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'diffmail.pl', '2', '550', '15', '24', 5413671Sbinkertn@umich.edu '23', '100' ] 5423671Sbinkertn@umich.edu 5433671Sbinkertn@umich.edu def train(self, isa, os): 5443671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'diffmail.pl', '2', '350', '15', '24', 5453671Sbinkertn@umich.edu '23', '150' ] 5463671Sbinkertn@umich.edu 5473671Sbinkertn@umich.educlass perlbmk_scrabbl(perlbmk): 5483671Sbinkertn@umich.edu def train(self, isa, os): 5493671Sbinkertn@umich.edu self.args = [ '-I.', '-I', 'lib', 'scrabbl.pl' ] 5503671Sbinkertn@umich.edu self.stdin = 'scrabbl.in' 5513671Sbinkertn@umich.edu 5523671Sbinkertn@umich.educlass perlbmk_makerand(perlbmk): 5533671Sbinkertn@umich.edu def ref(self, isa, os): 5543671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'makerand.pl' ] 5553671Sbinkertn@umich.edu 5563671Sbinkertn@umich.edu def lgred(self, isa, os): 5573671Sbinkertn@umich.edu self.args = [ '-I.', '-I', 'lib', 'lgred.makerand.pl' ] 5583671Sbinkertn@umich.edu 5593671Sbinkertn@umich.edu def mdred(self, isa, os): 5603671Sbinkertn@umich.edu self.args = [ '-I.', '-I', 'lib', 'mdred.makerand.pl' ] 5613671Sbinkertn@umich.edu 5623671Sbinkertn@umich.edu def smred(self, isa, os): 5633671Sbinkertn@umich.edu self.args = [ '-I.', '-I', 'lib', 'smred.makerand.pl' ] 5643671Sbinkertn@umich.edu 5653671Sbinkertn@umich.educlass perlbmk_perfect(perlbmk): 5663671Sbinkertn@umich.edu def ref(self, isa, os): 5673671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3', 'm', '4' ] 5683671Sbinkertn@umich.edu 5693671Sbinkertn@umich.edu def train(self, isa, os): 5703671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3' ] 5713671Sbinkertn@umich.edu 5723671Sbinkertn@umich.educlass perlbmk_splitmail1(perlbmk): 5733671Sbinkertn@umich.edu def ref(self, isa, os): 5743671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'splitmail.pl', '850', '5', '19', 5753671Sbinkertn@umich.edu '18', '1500' ] 5763671Sbinkertn@umich.edu 5773671Sbinkertn@umich.educlass perlbmk_splitmail2(perlbmk): 5783671Sbinkertn@umich.edu def ref(self, isa, os): 5793671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'splitmail.pl', '704', '12', '26', 5803671Sbinkertn@umich.edu '16', '836' ] 5813671Sbinkertn@umich.edu 5823671Sbinkertn@umich.educlass perlbmk_splitmail3(perlbmk): 5833671Sbinkertn@umich.edu def ref(self, isa, os): 5843671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'splitmail.pl', '535', '13', '25', 5853671Sbinkertn@umich.edu '24', '1091' ] 5863671Sbinkertn@umich.edu 5873671Sbinkertn@umich.educlass perlbmk_splitmail4(perlbmk): 5883671Sbinkertn@umich.edu def ref(self, isa, os): 5893671Sbinkertn@umich.edu self.args = [ '-I', 'lib', 'splitmail.pl', '957', '12', '23', 5903671Sbinkertn@umich.edu '26', '1014' ] 5913671Sbinkertn@umich.edu 5923671Sbinkertn@umich.educlass twolf(Benchmark): 5933671Sbinkertn@umich.edu name = 'twolf' 5943671Sbinkertn@umich.edu number = 300 5953671Sbinkertn@umich.edu lang = 'C' 5963671Sbinkertn@umich.edu stdin = None 5973671Sbinkertn@umich.edu 5983671Sbinkertn@umich.edu def test(self, isa, os): 5993671Sbinkertn@umich.edu self.args = [ 'test' ] 6003671Sbinkertn@umich.edu 6013671Sbinkertn@umich.edu def train(self, isa, os): 6023671Sbinkertn@umich.edu self.args = [ 'train' ] 6033671Sbinkertn@umich.edu 6043671Sbinkertn@umich.edu def ref(self, isa, os): 6053671Sbinkertn@umich.edu self.args = [ 'ref' ] 6063671Sbinkertn@umich.edu 6073671Sbinkertn@umich.edu def smred(self, isa, os): 6083671Sbinkertn@umich.edu self.args = [ 'smred' ] 6093671Sbinkertn@umich.edu 6103671Sbinkertn@umich.edu def mdred(self, isa, os): 6113671Sbinkertn@umich.edu self.args = [ 'mdred' ] 6123671Sbinkertn@umich.edu 6133671Sbinkertn@umich.edu def lgred(self, isa, os): 6143671Sbinkertn@umich.edu self.args = [ 'lgred' ] 6153671Sbinkertn@umich.edu 6163671Sbinkertn@umich.educlass vortex(Benchmark): 6173671Sbinkertn@umich.edu name = 'vortex' 6183671Sbinkertn@umich.edu number = 255 6193671Sbinkertn@umich.edu lang = 'C' 6203671Sbinkertn@umich.edu stdin = None 6213671Sbinkertn@umich.edu 6223671Sbinkertn@umich.edu def __init__(self, isa, os, input_set): 6233671Sbinkertn@umich.edu if isa == 'alpha': 6243671Sbinkertn@umich.edu self.endian = 'lendian' 6254116Sgblack@eecs.umich.edu elif (isa == 'sparc' or isa == 'sparc32'): 6264116Sgblack@eecs.umich.edu self.endian = 'bendian' 6273671Sbinkertn@umich.edu else: 6283671Sbinkertn@umich.edu raise AttributeError, "unknown ISA %s" % isa 6293671Sbinkertn@umich.edu 6303671Sbinkertn@umich.edu super(vortex, self).__init__(isa, os, input_set) 6313671Sbinkertn@umich.edu 6323671Sbinkertn@umich.edu def test(self, isa, os): 6333671Sbinkertn@umich.edu self.args = [ '%s.raw' % self.endian ] 6343671Sbinkertn@umich.edu self.output = 'vortex.out' 6353671Sbinkertn@umich.edu 6363671Sbinkertn@umich.edu def train(self, isa, os): 6373671Sbinkertn@umich.edu self.args = [ '%s.raw' % self.endian ] 6383671Sbinkertn@umich.edu self.output = 'vortex.out' 6393671Sbinkertn@umich.edu 6403671Sbinkertn@umich.edu def smred(self, isa, os): 6413671Sbinkertn@umich.edu self.args = [ '%s.raw' % self.endian ] 6423671Sbinkertn@umich.edu self.output = 'vortex.out' 6433671Sbinkertn@umich.edu 6443671Sbinkertn@umich.edu def mdred(self, isa, os): 6453671Sbinkertn@umich.edu self.args = [ '%s.raw' % self.endian ] 6463671Sbinkertn@umich.edu self.output = 'vortex.out' 6473671Sbinkertn@umich.edu 6483671Sbinkertn@umich.edu def lgred(self, isa, os): 6493671Sbinkertn@umich.edu self.args = [ '%s.raw' % self.endian ] 6503671Sbinkertn@umich.edu self.output = 'vortex.out' 6513671Sbinkertn@umich.edu 6523671Sbinkertn@umich.educlass vortex1(vortex): 6533671Sbinkertn@umich.edu def ref(self, isa, os): 6543671Sbinkertn@umich.edu self.args = [ '%s1.raw' % self.endian ] 6553671Sbinkertn@umich.edu self.output = 'vortex1.out' 6563671Sbinkertn@umich.edu 6573671Sbinkertn@umich.edu 6583671Sbinkertn@umich.educlass vortex2(vortex): 6593671Sbinkertn@umich.edu def ref(self, isa, os): 6603671Sbinkertn@umich.edu self.args = [ '%s2.raw' % self.endian ] 6613671Sbinkertn@umich.edu self.output = 'vortex2.out' 6623671Sbinkertn@umich.edu 6633671Sbinkertn@umich.educlass vortex3(vortex): 6643671Sbinkertn@umich.edu def ref(self, isa, os): 6653671Sbinkertn@umich.edu self.args = [ '%s3.raw' % self.endian ] 6663671Sbinkertn@umich.edu self.output = 'vortex3.out' 6673671Sbinkertn@umich.edu 6683671Sbinkertn@umich.educlass vpr(MinneDefaultBenchmark): 6693671Sbinkertn@umich.edu name = 'vpr' 6703671Sbinkertn@umich.edu number = 175 6713671Sbinkertn@umich.edu lang = 'C' 6723671Sbinkertn@umich.edu 6733671Sbinkertn@umich.edu# not sure about vpr minnespec place.in 6743671Sbinkertn@umich.educlass vpr_place(vpr): 6753671Sbinkertn@umich.edu args = [ 'net.in', 'arch.in', 'place.out', 'dum.out', '-nodisp', 6763671Sbinkertn@umich.edu '-place_only', '-init_t', '5', '-exit_t', '0.005', 6773671Sbinkertn@umich.edu '-alpha_t', '0.9412', '-inner_num', '2' ] 6783671Sbinkertn@umich.edu output = 'place_log.out' 6793671Sbinkertn@umich.edu 6803671Sbinkertn@umich.educlass vpr_route(vpr): 6813671Sbinkertn@umich.edu args = [ 'net.in', 'arch.in', 'place.in', 'route.out', '-nodisp', 6823671Sbinkertn@umich.edu '-route_only', '-route_chan_width', '15', 6833671Sbinkertn@umich.edu '-pres_fac_mult', '2', '-acc_fac', '1', 6843671Sbinkertn@umich.edu '-first_iter_pres_fac', '4', '-initial_pres_fac', '8' ] 6853671Sbinkertn@umich.edu output = 'route_log.out' 6863671Sbinkertn@umich.edu 6873671Sbinkertn@umich.eduall = [ ammp, applu, apsi, art110, art470, equake, facerec, fma3d, galgel, 6883671Sbinkertn@umich.edu lucas, mesa, mgrid, sixtrack, swim, wupwise, bzip2_source, 6893671Sbinkertn@umich.edu bzip2_graphic, bzip2_program, crafty, eon_kajiya, eon_cook, 6903671Sbinkertn@umich.edu eon_rushmeier, gap, gcc_166, gcc_200, gcc_expr, gcc_integrate, 6913671Sbinkertn@umich.edu gcc_scilab, gzip_source, gzip_log, gzip_graphic, gzip_random, 6923671Sbinkertn@umich.edu gzip_program, mcf, parser, perlbmk_diffmail, perlbmk_makerand, 6933671Sbinkertn@umich.edu perlbmk_perfect, perlbmk_splitmail1, perlbmk_splitmail2, 6943671Sbinkertn@umich.edu perlbmk_splitmail3, perlbmk_splitmail4, twolf, vortex1, vortex2, 6953671Sbinkertn@umich.edu vortex3, vpr_place, vpr_route ] 6963671Sbinkertn@umich.edu 6973671Sbinkertn@umich.edu__all__ = [ x.__name__ for x in all ] 6983671Sbinkertn@umich.edu 6993671Sbinkertn@umich.eduif __name__ == '__main__': 7003671Sbinkertn@umich.edu from pprint import pprint 7013671Sbinkertn@umich.edu for bench in all: 7023671Sbinkertn@umich.edu for input_set in 'ref', 'test', 'train': 7033671Sbinkertn@umich.edu print 'class: %s' % bench.__name__ 7043671Sbinkertn@umich.edu x = bench('alpha', 'tru64', input_set) 7053671Sbinkertn@umich.edu print '%s: %s' % (x, input_set) 7063671Sbinkertn@umich.edu pprint(x.makeLiveProcessArgs()) 7073671Sbinkertn@umich.edu print 708