2008-02-27 06:35:09 +01:00
|
|
|
# Copyright (c) 2006-2008 The Regents of The University of Michigan
|
2006-11-16 22:10:38 +01:00
|
|
|
# All rights reserved.
|
|
|
|
#
|
|
|
|
# Redistribution and use in source and binary forms, with or without
|
|
|
|
# modification, are permitted provided that the following conditions are
|
|
|
|
# met: redistributions of source code must retain the above copyright
|
|
|
|
# notice, this list of conditions and the following disclaimer;
|
|
|
|
# redistributions in binary form must reproduce the above copyright
|
|
|
|
# notice, this list of conditions and the following disclaimer in the
|
|
|
|
# documentation and/or other materials provided with the distribution;
|
|
|
|
# neither the name of the copyright holders nor the names of its
|
|
|
|
# contributors may be used to endorse or promote products derived from
|
|
|
|
# this software without specific prior written permission.
|
|
|
|
#
|
|
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
|
|
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
|
|
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
|
|
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
|
|
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
|
|
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
|
|
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
|
|
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
|
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
|
|
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
#
|
|
|
|
# Authors: Nathan Binkert
|
|
|
|
|
|
|
|
import os
|
|
|
|
import sys
|
|
|
|
from os.path import basename, exists, join as joinpath, normpath
|
|
|
|
from os.path import isdir, isfile, islink
|
|
|
|
|
2009-04-15 21:52:31 +02:00
|
|
|
spec_dist = os.environ.get('M5_CPU2000', '/dist/m5/cpu2000')
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
def copyfiles(srcdir, dstdir):
|
|
|
|
from filecmp import cmp as filecmp
|
|
|
|
from shutil import copyfile
|
|
|
|
|
|
|
|
srcdir = normpath(srcdir)
|
|
|
|
dstdir = normpath(dstdir)
|
|
|
|
|
|
|
|
if not isdir(dstdir):
|
|
|
|
os.mkdir(dstdir)
|
|
|
|
|
|
|
|
for root, dirs, files in os.walk(srcdir):
|
|
|
|
root = normpath(root)
|
|
|
|
prefix = os.path.commonprefix([root, srcdir])
|
|
|
|
|
|
|
|
root = root[len(prefix):]
|
|
|
|
if root.startswith('/'):
|
|
|
|
root = root[1:]
|
|
|
|
|
|
|
|
for entry in dirs:
|
|
|
|
newdir = joinpath(dstdir, root, entry)
|
|
|
|
if not isdir(newdir):
|
|
|
|
os.mkdir(newdir)
|
|
|
|
|
|
|
|
for entry in files:
|
|
|
|
dest = normpath(joinpath(dstdir, root, entry))
|
|
|
|
src = normpath(joinpath(srcdir, root, entry))
|
|
|
|
if not isfile(dest) or not filecmp(src, dest):
|
|
|
|
copyfile(src, dest)
|
|
|
|
|
|
|
|
# some of the spec benchmarks expect to be run from one directory up.
|
|
|
|
# just create some symlinks that solve the problem
|
|
|
|
inlink = joinpath(dstdir, 'input')
|
|
|
|
outlink = joinpath(dstdir, 'output')
|
|
|
|
if not exists(inlink):
|
|
|
|
os.symlink('.', inlink)
|
|
|
|
if not exists(outlink):
|
|
|
|
os.symlink('.', outlink)
|
|
|
|
|
|
|
|
class Benchmark(object):
|
|
|
|
def __init__(self, isa, os, input_set):
|
|
|
|
if not hasattr(self.__class__, 'name'):
|
|
|
|
self.name = self.__class__.__name__
|
|
|
|
|
|
|
|
if not hasattr(self.__class__, 'binary'):
|
|
|
|
self.binary = self.name
|
|
|
|
|
|
|
|
if not hasattr(self.__class__, 'args'):
|
|
|
|
self.args = []
|
|
|
|
|
|
|
|
if not hasattr(self.__class__, 'output'):
|
|
|
|
self.output = '%s.out' % self.name
|
|
|
|
|
2008-02-27 06:35:09 +01:00
|
|
|
if not hasattr(self.__class__, 'simpoint'):
|
|
|
|
self.simpoint = None
|
|
|
|
|
2006-11-16 22:10:38 +01:00
|
|
|
try:
|
|
|
|
func = getattr(self.__class__, input_set)
|
|
|
|
except AttributeError:
|
|
|
|
raise AttributeError, \
|
|
|
|
'The benchmark %s does not have the %s input set' % \
|
|
|
|
(self.name, input_set)
|
|
|
|
|
|
|
|
executable = joinpath(spec_dist, 'binaries', isa, os, self.binary)
|
|
|
|
if not isfile(executable):
|
|
|
|
raise AttributeError, '%s not found' % executable
|
|
|
|
self.executable = executable
|
|
|
|
|
|
|
|
# root of tree for input & output data files
|
|
|
|
data_dir = joinpath(spec_dist, 'data', self.name)
|
|
|
|
# optional subtree with files shared across input sets
|
|
|
|
all_dir = joinpath(data_dir, 'all')
|
|
|
|
# dirs for input & output files for this input set
|
|
|
|
inputs_dir = joinpath(data_dir, input_set, 'input')
|
|
|
|
outputs_dir = joinpath(data_dir, input_set, 'output')
|
2007-03-03 04:34:53 +01:00
|
|
|
# keep around which input set was specified
|
|
|
|
self.input_set = input_set
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
if not isdir(inputs_dir):
|
|
|
|
raise AttributeError, '%s not found' % inputs_dir
|
|
|
|
|
|
|
|
self.inputs_dir = [ inputs_dir ]
|
|
|
|
if isdir(all_dir):
|
|
|
|
self.inputs_dir += [ joinpath(all_dir, 'input') ]
|
|
|
|
if isdir(outputs_dir):
|
|
|
|
self.outputs_dir = outputs_dir
|
|
|
|
|
|
|
|
if not hasattr(self.__class__, 'stdin'):
|
|
|
|
self.stdin = joinpath(inputs_dir, '%s.in' % self.name)
|
|
|
|
if not isfile(self.stdin):
|
|
|
|
self.stdin = None
|
|
|
|
|
|
|
|
if not hasattr(self.__class__, 'stdout'):
|
|
|
|
self.stdout = joinpath(outputs_dir, '%s.out' % self.name)
|
|
|
|
if not isfile(self.stdout):
|
|
|
|
self.stdout = None
|
|
|
|
|
|
|
|
func(self, isa, os)
|
|
|
|
|
|
|
|
def makeLiveProcessArgs(self, **kwargs):
|
|
|
|
# set up default args for LiveProcess object
|
|
|
|
process_args = {}
|
2007-06-10 22:57:48 +02:00
|
|
|
process_args['cmd'] = [ self.name ] + self.args
|
2006-11-16 22:10:38 +01:00
|
|
|
process_args['executable'] = self.executable
|
|
|
|
if self.stdin:
|
|
|
|
process_args['input'] = self.stdin
|
|
|
|
if self.stdout:
|
|
|
|
process_args['output'] = self.stdout
|
2008-03-16 03:20:09 +01:00
|
|
|
if self.simpoint:
|
|
|
|
process_args['simpoint'] = self.simpoint
|
2006-11-16 22:10:38 +01:00
|
|
|
# explicit keywords override defaults
|
|
|
|
process_args.update(kwargs)
|
|
|
|
|
|
|
|
return process_args
|
|
|
|
|
|
|
|
def makeLiveProcess(self, **kwargs):
|
|
|
|
process_args = self.makeLiveProcessArgs(**kwargs)
|
|
|
|
|
|
|
|
# figure out working directory: use m5's outdir unless
|
|
|
|
# overridden by LiveProcess's cwd param
|
|
|
|
cwd = process_args.get('cwd')
|
2008-02-27 06:35:09 +01:00
|
|
|
|
2006-11-16 22:10:38 +01:00
|
|
|
if not cwd:
|
2011-04-21 04:07:44 +02:00
|
|
|
from m5 import options
|
2006-11-16 22:10:38 +01:00
|
|
|
cwd = options.outdir
|
|
|
|
process_args['cwd'] = cwd
|
|
|
|
if not isdir(cwd):
|
|
|
|
os.makedirs(cwd)
|
|
|
|
# copy input files to working directory
|
|
|
|
for d in self.inputs_dir:
|
|
|
|
copyfiles(d, cwd)
|
|
|
|
# generate LiveProcess object
|
|
|
|
from m5.objects import LiveProcess
|
|
|
|
return LiveProcess(**process_args)
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
return self.name
|
|
|
|
|
|
|
|
class DefaultBenchmark(Benchmark):
|
|
|
|
def ref(self, isa, os): pass
|
|
|
|
def test(self, isa, os): pass
|
|
|
|
def train(self, isa, os): pass
|
|
|
|
|
|
|
|
class MinneDefaultBenchmark(DefaultBenchmark):
|
|
|
|
def smred(self, isa, os): pass
|
|
|
|
def mdred(self, isa, os): pass
|
|
|
|
def lgred(self, isa, os): pass
|
|
|
|
|
|
|
|
class ammp(MinneDefaultBenchmark):
|
|
|
|
name = 'ammp'
|
|
|
|
number = 188
|
|
|
|
lang = 'C'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 108*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class applu(MinneDefaultBenchmark):
|
|
|
|
name = 'applu'
|
|
|
|
number = 173
|
|
|
|
lang = 'F77'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 2179*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class apsi(MinneDefaultBenchmark):
|
|
|
|
name = 'apsi'
|
|
|
|
number = 301
|
|
|
|
lang = 'F77'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 3408*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class art(DefaultBenchmark):
|
|
|
|
name = 'art'
|
|
|
|
number = 179
|
|
|
|
lang = 'C'
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.args = [ '-scanfile', 'c756hel.in',
|
|
|
|
'-trainfile1', 'a10.img',
|
|
|
|
'-stride', '2',
|
|
|
|
'-startx', '134',
|
|
|
|
'-starty', '220',
|
|
|
|
'-endx', '139',
|
|
|
|
'-endy', '225',
|
|
|
|
'-objects', '1' ]
|
|
|
|
self.output = 'test.out'
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ '-scanfile', 'c756hel.in',
|
|
|
|
'-trainfile1', 'a10.img',
|
|
|
|
'-stride', '2',
|
|
|
|
'-startx', '134',
|
|
|
|
'-starty', '220',
|
|
|
|
'-endx', '184',
|
|
|
|
'-endy', '240',
|
|
|
|
'-objects', '3' ]
|
|
|
|
self.output = 'train.out'
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = ['-scanfile', 'c756hel.in',
|
|
|
|
'-trainfile1', 'a10.img',
|
|
|
|
'-stride', '5',
|
|
|
|
'-startx', '134',
|
|
|
|
'-starty', '220',
|
|
|
|
'-endx', '184',
|
|
|
|
'-endy', '240',
|
|
|
|
'-objects', '1' ]
|
|
|
|
self.output = 'lgred.out'
|
|
|
|
|
|
|
|
|
|
|
|
class art110(art):
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.args = [ '-scanfile', 'c756hel.in',
|
|
|
|
'-trainfile1', 'a10.img',
|
|
|
|
'-trainfile2', 'hc.img',
|
|
|
|
'-stride', '2',
|
|
|
|
'-startx', '110',
|
|
|
|
'-starty', '200',
|
|
|
|
'-endx', '160',
|
|
|
|
'-endy', '240',
|
|
|
|
'-objects', '10' ]
|
|
|
|
self.output = 'ref.1.out'
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 340*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class art470(art):
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.args = [ '-scanfile', 'c756hel.in',
|
|
|
|
'-trainfile1', 'a10.img',
|
|
|
|
'-trainfile2', 'hc.img',
|
|
|
|
'-stride', '2',
|
|
|
|
'-startx', '470',
|
|
|
|
'-starty', '140',
|
|
|
|
'-endx', '520',
|
|
|
|
'-endy', '180',
|
|
|
|
'-objects', '10' ]
|
|
|
|
self.output = 'ref.2.out'
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 365*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class equake(DefaultBenchmark):
|
|
|
|
name = 'equake'
|
|
|
|
number = 183
|
|
|
|
lang = 'C'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 812*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
def lgred(self, isa, os): pass
|
|
|
|
|
|
|
|
class facerec(MinneDefaultBenchmark):
|
|
|
|
name = 'facerec'
|
|
|
|
number = 187
|
|
|
|
lang = 'F'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 375*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class fma3d(MinneDefaultBenchmark):
|
|
|
|
name = 'fma3d'
|
|
|
|
number = 191
|
|
|
|
lang = 'F'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 2541*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class galgel(MinneDefaultBenchmark):
|
|
|
|
name = 'galgel'
|
|
|
|
number = 178
|
|
|
|
lang = 'F'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 2491*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class lucas(MinneDefaultBenchmark):
|
|
|
|
name = 'lucas'
|
|
|
|
number = 189
|
|
|
|
lang = 'F'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 545*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class mesa(Benchmark):
|
|
|
|
name = 'mesa'
|
|
|
|
number = 177
|
|
|
|
lang = 'C'
|
|
|
|
stdin = None
|
|
|
|
|
|
|
|
def __set_args(self, frames):
|
|
|
|
self.args = [ '-frames', frames, '-meshfile', '%s.in' % self.name,
|
|
|
|
'-ppmfile', '%s.ppm' % self.name ]
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.__set_args('10')
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.__set_args('500')
|
|
|
|
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.__set_args('1000')
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 1135*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.__set_args('1')
|
|
|
|
|
|
|
|
class mgrid(MinneDefaultBenchmark):
|
|
|
|
name = 'mgrid'
|
|
|
|
number = 172
|
|
|
|
lang = 'F77'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 3292*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class sixtrack(DefaultBenchmark):
|
|
|
|
name = 'sixtrack'
|
|
|
|
number = 200
|
|
|
|
lang = 'F77'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 3043*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
def lgred(self, isa, os): pass
|
|
|
|
|
|
|
|
class swim(MinneDefaultBenchmark):
|
|
|
|
name = 'swim'
|
|
|
|
number = 171
|
|
|
|
lang = 'F77'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 2079*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class wupwise(DefaultBenchmark):
|
|
|
|
name = 'wupwise'
|
|
|
|
number = 168
|
|
|
|
lang = 'F77'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 3237*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
def lgred(self, isa, os): pass
|
|
|
|
|
|
|
|
class bzip2(DefaultBenchmark):
|
|
|
|
name = 'bzip2'
|
|
|
|
number = 256
|
|
|
|
lang = 'C'
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.args = [ 'input.random' ]
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ 'input.compressed' ]
|
|
|
|
|
|
|
|
class bzip2_source(bzip2):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 977*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.source', '58' ]
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.source', '1' ]
|
|
|
|
|
|
|
|
class bzip2_graphic(bzip2):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 718*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.graphic', '58' ]
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.graphic', '1' ]
|
|
|
|
|
|
|
|
class bzip2_program(bzip2):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 458*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.program', '58' ]
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.program', '1' ]
|
|
|
|
|
|
|
|
class crafty(MinneDefaultBenchmark):
|
|
|
|
name = 'crafty'
|
|
|
|
number = 186
|
|
|
|
lang = 'C'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 774*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class eon(MinneDefaultBenchmark):
|
|
|
|
name = 'eon'
|
|
|
|
number = 252
|
|
|
|
lang = 'CXX'
|
|
|
|
stdin = None
|
|
|
|
|
|
|
|
class eon_kajiya(eon):
|
|
|
|
args = [ 'chair.control.kajiya', 'chair.camera', 'chair.surfaces',
|
|
|
|
'chair.kajiya.ppm', 'ppm', 'pixels_out.kajiya']
|
|
|
|
output = 'kajiya_log.out'
|
|
|
|
|
|
|
|
|
|
|
|
class eon_cook(eon):
|
|
|
|
args = [ 'chair.control.cook', 'chair.camera', 'chair.surfaces',
|
|
|
|
'chair.cook.ppm', 'ppm', 'pixels_out.cook' ]
|
|
|
|
output = 'cook_log.out'
|
|
|
|
|
|
|
|
class eon_rushmeier(eon):
|
|
|
|
args = [ 'chair.control.rushmeier', 'chair.camera', 'chair.surfaces',
|
|
|
|
'chair.rushmeier.ppm', 'ppm', 'pixels_out.rushmeier' ]
|
|
|
|
output = 'rushmeier_log.out'
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 403*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class gap(DefaultBenchmark):
|
|
|
|
name = 'gap'
|
|
|
|
number = 254
|
|
|
|
lang = 'C'
|
|
|
|
|
|
|
|
def __set_args(self, size):
|
|
|
|
self.args = [ '-l', './', '-q', '-m', size ]
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.__set_args('64M')
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.__set_args('128M')
|
|
|
|
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.__set_args('192M')
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 674*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.__set_args('64M')
|
|
|
|
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.__set_args('64M')
|
|
|
|
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.__set_args('64M')
|
|
|
|
|
|
|
|
class gcc(DefaultBenchmark):
|
|
|
|
name = 'gcc'
|
|
|
|
number = 176
|
|
|
|
lang = 'C'
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.args = [ 'cccp.i', '-o', 'cccp.s' ]
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ]
|
|
|
|
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ 'c-iterate.i', '-o', 'c-iterate.s' ]
|
|
|
|
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ 'rdlanal.i', '-o', 'rdlanal.s' ]
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ]
|
|
|
|
|
|
|
|
class gcc_166(gcc):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 389*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '166.i', '-o', '166.s' ]
|
|
|
|
|
|
|
|
class gcc_200(gcc):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 736*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '200.i', '-o', '200.s' ]
|
|
|
|
|
|
|
|
class gcc_expr(gcc):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 36*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'expr.i', '-o', 'expr.s' ]
|
|
|
|
|
|
|
|
class gcc_integrate(gcc):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 4*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'integrate.i', '-o', 'integrate.s' ]
|
|
|
|
|
|
|
|
class gcc_scilab(gcc):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 207*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'scilab.i', '-o', 'scilab.s' ]
|
|
|
|
|
|
|
|
class gzip(DefaultBenchmark):
|
|
|
|
name = 'gzip'
|
|
|
|
number = 164
|
|
|
|
lang = 'C'
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.args = [ 'input.compressed', '2' ]
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ 'input.combined', '32' ]
|
|
|
|
|
|
|
|
class gzip_source(gzip):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 334*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.source', '1' ]
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ 'input.source', '1' ]
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ 'input.source', '1' ]
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.source', '1' ]
|
|
|
|
|
|
|
|
class gzip_log(gzip):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 265*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.log', '60' ]
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ 'input.log', '1' ]
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ 'input.log', '1' ]
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.log', '1' ]
|
|
|
|
|
|
|
|
class gzip_graphic(gzip):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 653*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.graphic', '60' ]
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ 'input.graphic', '1' ]
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ 'input.graphic', '1' ]
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.graphic', '1' ]
|
|
|
|
|
|
|
|
class gzip_random(gzip):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 623*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.random', '60' ]
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ 'input.random', '1' ]
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ 'input.random', '1' ]
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.random', '1' ]
|
|
|
|
|
|
|
|
class gzip_program(gzip):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 1189*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'input.program', '60' ]
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ 'input.program', '1' ]
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ 'input.program', '1' ]
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'input.program', '1' ]
|
|
|
|
|
|
|
|
class mcf(MinneDefaultBenchmark):
|
|
|
|
name = 'mcf'
|
|
|
|
number = 181
|
|
|
|
lang = 'C'
|
2007-03-22 05:10:47 +01:00
|
|
|
args = [ 'mcf.in' ]
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 553*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class parser(MinneDefaultBenchmark):
|
|
|
|
name = 'parser'
|
|
|
|
number = 197
|
|
|
|
lang = 'C'
|
|
|
|
args = [ '2.1.dict', '-batch' ]
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 1146*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
class perlbmk(DefaultBenchmark):
|
|
|
|
name = 'perlbmk'
|
|
|
|
number = 253
|
|
|
|
lang = 'C'
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.args = [ '-I.', '-I', 'lib', 'test.pl' ]
|
|
|
|
self.stdin = 'test.in'
|
|
|
|
|
|
|
|
class perlbmk_diffmail(perlbmk):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 141*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '-I', 'lib', 'diffmail.pl', '2', '550', '15', '24',
|
|
|
|
'23', '100' ]
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ '-I', 'lib', 'diffmail.pl', '2', '350', '15', '24',
|
|
|
|
'23', '150' ]
|
|
|
|
|
|
|
|
class perlbmk_scrabbl(perlbmk):
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ '-I.', '-I', 'lib', 'scrabbl.pl' ]
|
|
|
|
self.stdin = 'scrabbl.in'
|
|
|
|
|
|
|
|
class perlbmk_makerand(perlbmk):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 11*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '-I', 'lib', 'makerand.pl' ]
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ '-I.', '-I', 'lib', 'lgred.makerand.pl' ]
|
|
|
|
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ '-I.', '-I', 'lib', 'mdred.makerand.pl' ]
|
|
|
|
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ '-I.', '-I', 'lib', 'smred.makerand.pl' ]
|
|
|
|
|
|
|
|
class perlbmk_perfect(perlbmk):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 5*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3', 'm', '4' ]
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3' ]
|
|
|
|
|
|
|
|
class perlbmk_splitmail1(perlbmk):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 405*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '-I', 'lib', 'splitmail.pl', '850', '5', '19',
|
|
|
|
'18', '1500' ]
|
|
|
|
|
|
|
|
class perlbmk_splitmail2(perlbmk):
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.args = [ '-I', 'lib', 'splitmail.pl', '704', '12', '26',
|
|
|
|
'16', '836' ]
|
|
|
|
|
|
|
|
class perlbmk_splitmail3(perlbmk):
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.args = [ '-I', 'lib', 'splitmail.pl', '535', '13', '25',
|
|
|
|
'24', '1091' ]
|
|
|
|
|
|
|
|
class perlbmk_splitmail4(perlbmk):
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.args = [ '-I', 'lib', 'splitmail.pl', '957', '12', '23',
|
|
|
|
'26', '1014' ]
|
|
|
|
|
|
|
|
class twolf(Benchmark):
|
|
|
|
name = 'twolf'
|
|
|
|
number = 300
|
|
|
|
lang = 'C'
|
|
|
|
stdin = None
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.args = [ 'test' ]
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ 'train' ]
|
|
|
|
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 1066*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ 'ref' ]
|
|
|
|
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ 'smred' ]
|
|
|
|
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ 'mdred' ]
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ 'lgred' ]
|
|
|
|
|
|
|
|
class vortex(Benchmark):
|
|
|
|
name = 'vortex'
|
|
|
|
number = 255
|
|
|
|
lang = 'C'
|
|
|
|
stdin = None
|
|
|
|
|
|
|
|
def __init__(self, isa, os, input_set):
|
2010-06-02 19:58:17 +02:00
|
|
|
if (isa == 'alpha' or isa == 'arm'):
|
2006-11-16 22:10:38 +01:00
|
|
|
self.endian = 'lendian'
|
2007-03-03 04:34:53 +01:00
|
|
|
elif (isa == 'sparc' or isa == 'sparc32'):
|
|
|
|
self.endian = 'bendian'
|
2006-11-16 22:10:38 +01:00
|
|
|
else:
|
|
|
|
raise AttributeError, "unknown ISA %s" % isa
|
|
|
|
|
|
|
|
super(vortex, self).__init__(isa, os, input_set)
|
|
|
|
|
|
|
|
def test(self, isa, os):
|
|
|
|
self.args = [ '%s.raw' % self.endian ]
|
|
|
|
self.output = 'vortex.out'
|
|
|
|
|
|
|
|
def train(self, isa, os):
|
|
|
|
self.args = [ '%s.raw' % self.endian ]
|
|
|
|
self.output = 'vortex.out'
|
|
|
|
|
|
|
|
def smred(self, isa, os):
|
|
|
|
self.args = [ '%s.raw' % self.endian ]
|
|
|
|
self.output = 'vortex.out'
|
|
|
|
|
|
|
|
def mdred(self, isa, os):
|
|
|
|
self.args = [ '%s.raw' % self.endian ]
|
|
|
|
self.output = 'vortex.out'
|
|
|
|
|
|
|
|
def lgred(self, isa, os):
|
|
|
|
self.args = [ '%s.raw' % self.endian ]
|
|
|
|
self.output = 'vortex.out'
|
|
|
|
|
|
|
|
class vortex1(vortex):
|
|
|
|
def ref(self, isa, os):
|
|
|
|
self.args = [ '%s1.raw' % self.endian ]
|
|
|
|
self.output = 'vortex1.out'
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 271*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
|
|
|
|
|
|
|
|
class vortex2(vortex):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 1024*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '%s2.raw' % self.endian ]
|
|
|
|
self.output = 'vortex2.out'
|
|
|
|
|
|
|
|
class vortex3(vortex):
|
|
|
|
def ref(self, isa, os):
|
2008-02-27 06:35:09 +01:00
|
|
|
self.simpoint = 564*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
self.args = [ '%s3.raw' % self.endian ]
|
|
|
|
self.output = 'vortex3.out'
|
|
|
|
|
|
|
|
class vpr(MinneDefaultBenchmark):
|
|
|
|
name = 'vpr'
|
|
|
|
number = 175
|
|
|
|
lang = 'C'
|
|
|
|
|
|
|
|
# not sure about vpr minnespec place.in
|
|
|
|
class vpr_place(vpr):
|
|
|
|
args = [ 'net.in', 'arch.in', 'place.out', 'dum.out', '-nodisp',
|
|
|
|
'-place_only', '-init_t', '5', '-exit_t', '0.005',
|
|
|
|
'-alpha_t', '0.9412', '-inner_num', '2' ]
|
|
|
|
output = 'place_log.out'
|
|
|
|
|
|
|
|
class vpr_route(vpr):
|
2008-02-27 06:35:09 +01:00
|
|
|
simpoint = 476*100E6
|
2006-11-16 22:10:38 +01:00
|
|
|
args = [ 'net.in', 'arch.in', 'place.in', 'route.out', '-nodisp',
|
|
|
|
'-route_only', '-route_chan_width', '15',
|
|
|
|
'-pres_fac_mult', '2', '-acc_fac', '1',
|
|
|
|
'-first_iter_pres_fac', '4', '-initial_pres_fac', '8' ]
|
|
|
|
output = 'route_log.out'
|
|
|
|
|
|
|
|
all = [ ammp, applu, apsi, art110, art470, equake, facerec, fma3d, galgel,
|
|
|
|
lucas, mesa, mgrid, sixtrack, swim, wupwise, bzip2_source,
|
|
|
|
bzip2_graphic, bzip2_program, crafty, eon_kajiya, eon_cook,
|
|
|
|
eon_rushmeier, gap, gcc_166, gcc_200, gcc_expr, gcc_integrate,
|
|
|
|
gcc_scilab, gzip_source, gzip_log, gzip_graphic, gzip_random,
|
|
|
|
gzip_program, mcf, parser, perlbmk_diffmail, perlbmk_makerand,
|
|
|
|
perlbmk_perfect, perlbmk_splitmail1, perlbmk_splitmail2,
|
|
|
|
perlbmk_splitmail3, perlbmk_splitmail4, twolf, vortex1, vortex2,
|
|
|
|
vortex3, vpr_place, vpr_route ]
|
|
|
|
|
|
|
|
__all__ = [ x.__name__ for x in all ]
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
from pprint import pprint
|
|
|
|
for bench in all:
|
|
|
|
for input_set in 'ref', 'test', 'train':
|
|
|
|
print 'class: %s' % bench.__name__
|
|
|
|
x = bench('alpha', 'tru64', input_set)
|
|
|
|
print '%s: %s' % (x, input_set)
|
|
|
|
pprint(x.makeLiveProcessArgs())
|
|
|
|
print
|