cpu2000.py revision 3671:c60eba24f33b
111986Sandreas.sandberg@arm.com# Copyright (c) 2006 The Regents of The University of Michigan 211986Sandreas.sandberg@arm.com# All rights reserved. 311986Sandreas.sandberg@arm.com# 411986Sandreas.sandberg@arm.com# Redistribution and use in source and binary forms, with or without 511986Sandreas.sandberg@arm.com# modification, are permitted provided that the following conditions are 611986Sandreas.sandberg@arm.com# met: redistributions of source code must retain the above copyright 711986Sandreas.sandberg@arm.com# notice, this list of conditions and the following disclaimer; 811986Sandreas.sandberg@arm.com# redistributions in binary form must reproduce the above copyright 911986Sandreas.sandberg@arm.com# notice, this list of conditions and the following disclaimer in the 1011986Sandreas.sandberg@arm.com# documentation and/or other materials provided with the distribution; 1111986Sandreas.sandberg@arm.com# neither the name of the copyright holders nor the names of its 1211986Sandreas.sandberg@arm.com# contributors may be used to endorse or promote products derived from 1311986Sandreas.sandberg@arm.com# this software without specific prior written permission. 1411986Sandreas.sandberg@arm.com# 1511986Sandreas.sandberg@arm.com# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1611986Sandreas.sandberg@arm.com# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1711986Sandreas.sandberg@arm.com# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1811986Sandreas.sandberg@arm.com# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1911986Sandreas.sandberg@arm.com# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2011986Sandreas.sandberg@arm.com# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2111986Sandreas.sandberg@arm.com# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2211986Sandreas.sandberg@arm.com# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2311986Sandreas.sandberg@arm.com# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2411986Sandreas.sandberg@arm.com# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2511986Sandreas.sandberg@arm.com# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2611986Sandreas.sandberg@arm.com# 2711986Sandreas.sandberg@arm.com# Authors: Nathan Binkert 2811986Sandreas.sandberg@arm.com 2911986Sandreas.sandberg@arm.comimport os 3011986Sandreas.sandberg@arm.comimport sys 3111986Sandreas.sandberg@arm.comfrom os.path import basename, exists, join as joinpath, normpath 3211986Sandreas.sandberg@arm.comfrom os.path import isdir, isfile, islink 3311986Sandreas.sandberg@arm.com 3411986Sandreas.sandberg@arm.comspec_dist = '/dist/m5/cpu2000' 3511986Sandreas.sandberg@arm.com 3611986Sandreas.sandberg@arm.comdef copyfiles(srcdir, dstdir): 3711986Sandreas.sandberg@arm.com from filecmp import cmp as filecmp 3811986Sandreas.sandberg@arm.com from shutil import copyfile 3911986Sandreas.sandberg@arm.com 4011986Sandreas.sandberg@arm.com srcdir = normpath(srcdir) 4111986Sandreas.sandberg@arm.com dstdir = normpath(dstdir) 4211986Sandreas.sandberg@arm.com 4311986Sandreas.sandberg@arm.com if not isdir(dstdir): 4411986Sandreas.sandberg@arm.com os.mkdir(dstdir) 4511986Sandreas.sandberg@arm.com 4611986Sandreas.sandberg@arm.com for root, dirs, files in os.walk(srcdir): 4711986Sandreas.sandberg@arm.com root = normpath(root) 4811986Sandreas.sandberg@arm.com prefix = os.path.commonprefix([root, srcdir]) 4911986Sandreas.sandberg@arm.com 5011986Sandreas.sandberg@arm.com root = root[len(prefix):] 5111986Sandreas.sandberg@arm.com if root.startswith('/'): 5211986Sandreas.sandberg@arm.com root = root[1:] 5311986Sandreas.sandberg@arm.com 5411986Sandreas.sandberg@arm.com for entry in dirs: 5511986Sandreas.sandberg@arm.com newdir = joinpath(dstdir, root, entry) 5611986Sandreas.sandberg@arm.com if not isdir(newdir): 5711986Sandreas.sandberg@arm.com os.mkdir(newdir) 5811986Sandreas.sandberg@arm.com 5911986Sandreas.sandberg@arm.com for entry in files: 6011986Sandreas.sandberg@arm.com dest = normpath(joinpath(dstdir, root, entry)) 6111986Sandreas.sandberg@arm.com src = normpath(joinpath(srcdir, root, entry)) 6211986Sandreas.sandberg@arm.com if not isfile(dest) or not filecmp(src, dest): 6311986Sandreas.sandberg@arm.com copyfile(src, dest) 6411986Sandreas.sandberg@arm.com 6511986Sandreas.sandberg@arm.com # some of the spec benchmarks expect to be run from one directory up. 6611986Sandreas.sandberg@arm.com # just create some symlinks that solve the problem 6711986Sandreas.sandberg@arm.com inlink = joinpath(dstdir, 'input') 6811986Sandreas.sandberg@arm.com outlink = joinpath(dstdir, 'output') 6911986Sandreas.sandberg@arm.com if not exists(inlink): 7011986Sandreas.sandberg@arm.com os.symlink('.', inlink) 7111986Sandreas.sandberg@arm.com if not exists(outlink): 7211986Sandreas.sandberg@arm.com os.symlink('.', outlink) 7311986Sandreas.sandberg@arm.com 7411986Sandreas.sandberg@arm.comclass Benchmark(object): 7511986Sandreas.sandberg@arm.com def __init__(self, isa, os, input_set): 7611986Sandreas.sandberg@arm.com if not hasattr(self.__class__, 'name'): 7711986Sandreas.sandberg@arm.com self.name = self.__class__.__name__ 7811986Sandreas.sandberg@arm.com 7911986Sandreas.sandberg@arm.com if not hasattr(self.__class__, 'binary'): 8011986Sandreas.sandberg@arm.com self.binary = self.name 8111986Sandreas.sandberg@arm.com 8211986Sandreas.sandberg@arm.com if not hasattr(self.__class__, 'args'): 8311986Sandreas.sandberg@arm.com self.args = [] 8411986Sandreas.sandberg@arm.com 8511986Sandreas.sandberg@arm.com if not hasattr(self.__class__, 'output'): 8611986Sandreas.sandberg@arm.com self.output = '%s.out' % self.name 8711986Sandreas.sandberg@arm.com 8811986Sandreas.sandberg@arm.com try: 8911986Sandreas.sandberg@arm.com func = getattr(self.__class__, input_set) 9011986Sandreas.sandberg@arm.com except AttributeError: 9111986Sandreas.sandberg@arm.com raise AttributeError, \ 9211986Sandreas.sandberg@arm.com 'The benchmark %s does not have the %s input set' % \ 9311986Sandreas.sandberg@arm.com (self.name, input_set) 9411986Sandreas.sandberg@arm.com 9511986Sandreas.sandberg@arm.com executable = joinpath(spec_dist, 'binaries', isa, os, self.binary) 9611986Sandreas.sandberg@arm.com if not isfile(executable): 9711986Sandreas.sandberg@arm.com raise AttributeError, '%s not found' % executable 9811986Sandreas.sandberg@arm.com self.executable = executable 9911986Sandreas.sandberg@arm.com 10011986Sandreas.sandberg@arm.com # root of tree for input & output data files 10111986Sandreas.sandberg@arm.com data_dir = joinpath(spec_dist, 'data', self.name) 10211986Sandreas.sandberg@arm.com # optional subtree with files shared across input sets 10311986Sandreas.sandberg@arm.com all_dir = joinpath(data_dir, 'all') 10411986Sandreas.sandberg@arm.com # dirs for input & output files for this input set 10511986Sandreas.sandberg@arm.com inputs_dir = joinpath(data_dir, input_set, 'input') 10611986Sandreas.sandberg@arm.com outputs_dir = joinpath(data_dir, input_set, 'output') 10711986Sandreas.sandberg@arm.com 10811986Sandreas.sandberg@arm.com if not isdir(inputs_dir): 10911986Sandreas.sandberg@arm.com raise AttributeError, '%s not found' % inputs_dir 11011986Sandreas.sandberg@arm.com 11111986Sandreas.sandberg@arm.com self.inputs_dir = [ inputs_dir ] 11211986Sandreas.sandberg@arm.com if isdir(all_dir): 11311986Sandreas.sandberg@arm.com self.inputs_dir += [ joinpath(all_dir, 'input') ] 11411986Sandreas.sandberg@arm.com if isdir(outputs_dir): 11511986Sandreas.sandberg@arm.com self.outputs_dir = outputs_dir 11611986Sandreas.sandberg@arm.com 11711986Sandreas.sandberg@arm.com if not hasattr(self.__class__, 'stdin'): 11811986Sandreas.sandberg@arm.com self.stdin = joinpath(inputs_dir, '%s.in' % self.name) 11911986Sandreas.sandberg@arm.com if not isfile(self.stdin): 12011986Sandreas.sandberg@arm.com self.stdin = None 12111986Sandreas.sandberg@arm.com 12211986Sandreas.sandberg@arm.com if not hasattr(self.__class__, 'stdout'): 12311986Sandreas.sandberg@arm.com self.stdout = joinpath(outputs_dir, '%s.out' % self.name) 12411986Sandreas.sandberg@arm.com if not isfile(self.stdout): 12511986Sandreas.sandberg@arm.com self.stdout = None 12611986Sandreas.sandberg@arm.com 12711986Sandreas.sandberg@arm.com func(self, isa, os) 12811986Sandreas.sandberg@arm.com 12911986Sandreas.sandberg@arm.com def makeLiveProcessArgs(self, **kwargs): 13011986Sandreas.sandberg@arm.com # set up default args for LiveProcess object 13111986Sandreas.sandberg@arm.com process_args = {} 13211986Sandreas.sandberg@arm.com process_args['cmd'] = self.name + ' ' + ' '.join(self.args) 13311986Sandreas.sandberg@arm.com process_args['executable'] = self.executable 13411986Sandreas.sandberg@arm.com if self.stdin: 13511986Sandreas.sandberg@arm.com process_args['input'] = self.stdin 13611986Sandreas.sandberg@arm.com if self.stdout: 13711986Sandreas.sandberg@arm.com process_args['output'] = self.stdout 13811986Sandreas.sandberg@arm.com 13911986Sandreas.sandberg@arm.com # explicit keywords override defaults 14011986Sandreas.sandberg@arm.com process_args.update(kwargs) 141 142 return process_args 143 144 def makeLiveProcess(self, **kwargs): 145 process_args = self.makeLiveProcessArgs(**kwargs) 146 147 # figure out working directory: use m5's outdir unless 148 # overridden by LiveProcess's cwd param 149 cwd = process_args.get('cwd') 150 if not cwd: 151 from m5.main import options 152 cwd = options.outdir 153 process_args['cwd'] = cwd 154 if not isdir(cwd): 155 os.makedirs(cwd) 156 # copy input files to working directory 157 for d in self.inputs_dir: 158 copyfiles(d, cwd) 159 # generate LiveProcess object 160 from m5.objects import LiveProcess 161 return LiveProcess(**process_args) 162 163 def __str__(self): 164 return self.name 165 166class DefaultBenchmark(Benchmark): 167 def ref(self, isa, os): pass 168 def test(self, isa, os): pass 169 def train(self, isa, os): pass 170 171class MinneDefaultBenchmark(DefaultBenchmark): 172 def smred(self, isa, os): pass 173 def mdred(self, isa, os): pass 174 def lgred(self, isa, os): pass 175 176class ammp(MinneDefaultBenchmark): 177 name = 'ammp' 178 number = 188 179 lang = 'C' 180 181class applu(MinneDefaultBenchmark): 182 name = 'applu' 183 number = 173 184 lang = 'F77' 185 186class apsi(MinneDefaultBenchmark): 187 name = 'apsi' 188 number = 301 189 lang = 'F77' 190 191class art(DefaultBenchmark): 192 name = 'art' 193 number = 179 194 lang = 'C' 195 196 def test(self, isa, os): 197 self.args = [ '-scanfile', 'c756hel.in', 198 '-trainfile1', 'a10.img', 199 '-stride', '2', 200 '-startx', '134', 201 '-starty', '220', 202 '-endx', '139', 203 '-endy', '225', 204 '-objects', '1' ] 205 self.output = 'test.out' 206 207 def train(self, isa, os): 208 self.args = [ '-scanfile', 'c756hel.in', 209 '-trainfile1', 'a10.img', 210 '-stride', '2', 211 '-startx', '134', 212 '-starty', '220', 213 '-endx', '184', 214 '-endy', '240', 215 '-objects', '3' ] 216 self.output = 'train.out' 217 218 def lgred(self, isa, os): 219 self.args = ['-scanfile', 'c756hel.in', 220 '-trainfile1', 'a10.img', 221 '-stride', '5', 222 '-startx', '134', 223 '-starty', '220', 224 '-endx', '184', 225 '-endy', '240', 226 '-objects', '1' ] 227 self.output = 'lgred.out' 228 229 230class art110(art): 231 def ref(self, isa, os): 232 self.args = [ '-scanfile', 'c756hel.in', 233 '-trainfile1', 'a10.img', 234 '-trainfile2', 'hc.img', 235 '-stride', '2', 236 '-startx', '110', 237 '-starty', '200', 238 '-endx', '160', 239 '-endy', '240', 240 '-objects', '10' ] 241 self.output = 'ref.1.out' 242 243class art470(art): 244 def ref(self, isa, os): 245 self.args = [ '-scanfile', 'c756hel.in', 246 '-trainfile1', 'a10.img', 247 '-trainfile2', 'hc.img', 248 '-stride', '2', 249 '-startx', '470', 250 '-starty', '140', 251 '-endx', '520', 252 '-endy', '180', 253 '-objects', '10' ] 254 self.output = 'ref.2.out' 255 256class equake(DefaultBenchmark): 257 name = 'equake' 258 number = 183 259 lang = 'C' 260 261 def lgred(self, isa, os): pass 262 263class facerec(MinneDefaultBenchmark): 264 name = 'facerec' 265 number = 187 266 lang = 'F' 267 268class fma3d(MinneDefaultBenchmark): 269 name = 'fma3d' 270 number = 191 271 lang = 'F' 272 273class galgel(MinneDefaultBenchmark): 274 name = 'galgel' 275 number = 178 276 lang = 'F' 277 278class lucas(MinneDefaultBenchmark): 279 name = 'lucas' 280 number = 189 281 lang = 'F' 282 283class mesa(Benchmark): 284 name = 'mesa' 285 number = 177 286 lang = 'C' 287 stdin = None 288 289 def __set_args(self, frames): 290 self.args = [ '-frames', frames, '-meshfile', '%s.in' % self.name, 291 '-ppmfile', '%s.ppm' % self.name ] 292 293 def test(self, isa, os): 294 self.__set_args('10') 295 296 def train(self, isa, os): 297 self.__set_args('500') 298 299 def ref(self, isa, os): 300 self.__set_args('1000') 301 302 def lgred(self, isa, os): 303 self.__set_args('1') 304 305class mgrid(MinneDefaultBenchmark): 306 name = 'mgrid' 307 number = 172 308 lang = 'F77' 309 310class sixtrack(DefaultBenchmark): 311 name = 'sixtrack' 312 number = 200 313 lang = 'F77' 314 315 def lgred(self, isa, os): pass 316 317class swim(MinneDefaultBenchmark): 318 name = 'swim' 319 number = 171 320 lang = 'F77' 321 322class wupwise(DefaultBenchmark): 323 name = 'wupwise' 324 number = 168 325 lang = 'F77' 326 327 def lgred(self, isa, os): pass 328 329class bzip2(DefaultBenchmark): 330 name = 'bzip2' 331 number = 256 332 lang = 'C' 333 334 def test(self, isa, os): 335 self.args = [ 'input.random' ] 336 337 def train(self, isa, os): 338 self.args = [ 'input.compressed' ] 339 340class bzip2_source(bzip2): 341 def ref(self, isa, os): 342 self.args = [ 'input.source', '58' ] 343 344 def lgred(self, isa, os): 345 self.args = [ 'input.source', '1' ] 346 347class bzip2_graphic(bzip2): 348 def ref(self, isa, os): 349 self.args = [ 'input.graphic', '58' ] 350 351 def lgred(self, isa, os): 352 self.args = [ 'input.graphic', '1' ] 353 354class bzip2_program(bzip2): 355 def ref(self, isa, os): 356 self.args = [ 'input.program', '58' ] 357 358 def lgred(self, isa, os): 359 self.args = [ 'input.program', '1' ] 360 361class crafty(MinneDefaultBenchmark): 362 name = 'crafty' 363 number = 186 364 lang = 'C' 365 366class eon(MinneDefaultBenchmark): 367 name = 'eon' 368 number = 252 369 lang = 'CXX' 370 stdin = None 371 372class eon_kajiya(eon): 373 args = [ 'chair.control.kajiya', 'chair.camera', 'chair.surfaces', 374 'chair.kajiya.ppm', 'ppm', 'pixels_out.kajiya'] 375 output = 'kajiya_log.out' 376 377 378class eon_cook(eon): 379 args = [ 'chair.control.cook', 'chair.camera', 'chair.surfaces', 380 'chair.cook.ppm', 'ppm', 'pixels_out.cook' ] 381 output = 'cook_log.out' 382 383class eon_rushmeier(eon): 384 args = [ 'chair.control.rushmeier', 'chair.camera', 'chair.surfaces', 385 'chair.rushmeier.ppm', 'ppm', 'pixels_out.rushmeier' ] 386 output = 'rushmeier_log.out' 387 388class gap(DefaultBenchmark): 389 name = 'gap' 390 number = 254 391 lang = 'C' 392 393 def __set_args(self, size): 394 self.args = [ '-l', './', '-q', '-m', size ] 395 396 def test(self, isa, os): 397 self.__set_args('64M') 398 399 def train(self, isa, os): 400 self.__set_args('128M') 401 402 def ref(self, isa, os): 403 self.__set_args('192M') 404 405 def lgred(self, isa, os): 406 self.__set_args('64M') 407 408 def mdred(self, isa, os): 409 self.__set_args('64M') 410 411 def smred(self, isa, os): 412 self.__set_args('64M') 413 414class gcc(DefaultBenchmark): 415 name = 'gcc' 416 number = 176 417 lang = 'C' 418 419 def test(self, isa, os): 420 self.args = [ 'cccp.i', '-o', 'cccp.s' ] 421 422 def train(self, isa, os): 423 self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ] 424 425 def smred(self, isa, os): 426 self.args = [ 'c-iterate.i', '-o', 'c-iterate.s' ] 427 428 def mdred(self, isa, os): 429 self.args = [ 'rdlanal.i', '-o', 'rdlanal.s' ] 430 431 def lgred(self, isa, os): 432 self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ] 433 434class gcc_166(gcc): 435 def ref(self, isa, os): 436 self.args = [ '166.i', '-o', '166.s' ] 437 438class gcc_200(gcc): 439 def ref(self, isa, os): 440 self.args = [ '200.i', '-o', '200.s' ] 441 442class gcc_expr(gcc): 443 def ref(self, isa, os): 444 self.args = [ 'expr.i', '-o', 'expr.s' ] 445 446class gcc_integrate(gcc): 447 def ref(self, isa, os): 448 self.args = [ 'integrate.i', '-o', 'integrate.s' ] 449 450class gcc_scilab(gcc): 451 def ref(self, isa, os): 452 self.args = [ 'scilab.i', '-o', 'scilab.s' ] 453 454class gzip(DefaultBenchmark): 455 name = 'gzip' 456 number = 164 457 lang = 'C' 458 459 def test(self, isa, os): 460 self.args = [ 'input.compressed', '2' ] 461 462 def train(self, isa, os): 463 self.args = [ 'input.combined', '32' ] 464 465class gzip_source(gzip): 466 def ref(self, isa, os): 467 self.args = [ 'input.source', '1' ] 468 def smred(self, isa, os): 469 self.args = [ 'input.source', '1' ] 470 def mdred(self, isa, os): 471 self.args = [ 'input.source', '1' ] 472 def lgred(self, isa, os): 473 self.args = [ 'input.source', '1' ] 474 475class gzip_log(gzip): 476 def ref(self, isa, os): 477 self.args = [ 'input.log', '60' ] 478 def smred(self, isa, os): 479 self.args = [ 'input.log', '1' ] 480 def mdred(self, isa, os): 481 self.args = [ 'input.log', '1' ] 482 def lgred(self, isa, os): 483 self.args = [ 'input.log', '1' ] 484 485class gzip_graphic(gzip): 486 def ref(self, isa, os): 487 self.args = [ 'input.graphic', '60' ] 488 def smred(self, isa, os): 489 self.args = [ 'input.graphic', '1' ] 490 def mdred(self, isa, os): 491 self.args = [ 'input.graphic', '1' ] 492 def lgred(self, isa, os): 493 self.args = [ 'input.graphic', '1' ] 494 495class gzip_random(gzip): 496 def ref(self, isa, os): 497 self.args = [ 'input.random', '60' ] 498 def smred(self, isa, os): 499 self.args = [ 'input.random', '1' ] 500 def mdred(self, isa, os): 501 self.args = [ 'input.random', '1' ] 502 def lgred(self, isa, os): 503 self.args = [ 'input.random', '1' ] 504 505class gzip_program(gzip): 506 def ref(self, isa, os): 507 self.args = [ 'input.program', '60' ] 508 def smred(self, isa, os): 509 self.args = [ 'input.program', '1' ] 510 def mdred(self, isa, os): 511 self.args = [ 'input.program', '1' ] 512 def lgred(self, isa, os): 513 self.args = [ 'input.program', '1' ] 514 515class mcf(MinneDefaultBenchmark): 516 name = 'mcf' 517 number = 181 518 lang = 'C' 519 520class parser(MinneDefaultBenchmark): 521 name = 'parser' 522 number = 197 523 lang = 'C' 524 args = [ '2.1.dict', '-batch' ] 525 526class perlbmk(DefaultBenchmark): 527 name = 'perlbmk' 528 number = 253 529 lang = 'C' 530 531 def test(self, isa, os): 532 self.args = [ '-I.', '-I', 'lib', 'test.pl' ] 533 self.stdin = 'test.in' 534 535class perlbmk_diffmail(perlbmk): 536 def ref(self, isa, os): 537 self.args = [ '-I', 'lib', 'diffmail.pl', '2', '550', '15', '24', 538 '23', '100' ] 539 540 def train(self, isa, os): 541 self.args = [ '-I', 'lib', 'diffmail.pl', '2', '350', '15', '24', 542 '23', '150' ] 543 544class perlbmk_scrabbl(perlbmk): 545 def train(self, isa, os): 546 self.args = [ '-I.', '-I', 'lib', 'scrabbl.pl' ] 547 self.stdin = 'scrabbl.in' 548 549class perlbmk_makerand(perlbmk): 550 def ref(self, isa, os): 551 self.args = [ '-I', 'lib', 'makerand.pl' ] 552 553 def lgred(self, isa, os): 554 self.args = [ '-I.', '-I', 'lib', 'lgred.makerand.pl' ] 555 556 def mdred(self, isa, os): 557 self.args = [ '-I.', '-I', 'lib', 'mdred.makerand.pl' ] 558 559 def smred(self, isa, os): 560 self.args = [ '-I.', '-I', 'lib', 'smred.makerand.pl' ] 561 562class perlbmk_perfect(perlbmk): 563 def ref(self, isa, os): 564 self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3', 'm', '4' ] 565 566 def train(self, isa, os): 567 self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3' ] 568 569class perlbmk_splitmail1(perlbmk): 570 def ref(self, isa, os): 571 self.args = [ '-I', 'lib', 'splitmail.pl', '850', '5', '19', 572 '18', '1500' ] 573 574class perlbmk_splitmail2(perlbmk): 575 def ref(self, isa, os): 576 self.args = [ '-I', 'lib', 'splitmail.pl', '704', '12', '26', 577 '16', '836' ] 578 579class perlbmk_splitmail3(perlbmk): 580 def ref(self, isa, os): 581 self.args = [ '-I', 'lib', 'splitmail.pl', '535', '13', '25', 582 '24', '1091' ] 583 584class perlbmk_splitmail4(perlbmk): 585 def ref(self, isa, os): 586 self.args = [ '-I', 'lib', 'splitmail.pl', '957', '12', '23', 587 '26', '1014' ] 588 589class twolf(Benchmark): 590 name = 'twolf' 591 number = 300 592 lang = 'C' 593 stdin = None 594 595 def test(self, isa, os): 596 self.args = [ 'test' ] 597 598 def train(self, isa, os): 599 self.args = [ 'train' ] 600 601 def ref(self, isa, os): 602 self.args = [ 'ref' ] 603 604 def smred(self, isa, os): 605 self.args = [ 'smred' ] 606 607 def mdred(self, isa, os): 608 self.args = [ 'mdred' ] 609 610 def lgred(self, isa, os): 611 self.args = [ 'lgred' ] 612 613class vortex(Benchmark): 614 name = 'vortex' 615 number = 255 616 lang = 'C' 617 stdin = None 618 619 def __init__(self, isa, os, input_set): 620 if isa == 'alpha': 621 self.endian = 'lendian' 622 else: 623 raise AttributeError, "unknown ISA %s" % isa 624 625 super(vortex, self).__init__(isa, os, input_set) 626 627 def test(self, isa, os): 628 self.args = [ '%s.raw' % self.endian ] 629 self.output = 'vortex.out' 630 631 def train(self, isa, os): 632 self.args = [ '%s.raw' % self.endian ] 633 self.output = 'vortex.out' 634 635 def smred(self, isa, os): 636 self.args = [ '%s.raw' % self.endian ] 637 self.output = 'vortex.out' 638 639 def mdred(self, isa, os): 640 self.args = [ '%s.raw' % self.endian ] 641 self.output = 'vortex.out' 642 643 def lgred(self, isa, os): 644 self.args = [ '%s.raw' % self.endian ] 645 self.output = 'vortex.out' 646 647class vortex1(vortex): 648 def ref(self, isa, os): 649 self.args = [ '%s1.raw' % self.endian ] 650 self.output = 'vortex1.out' 651 652 653class vortex2(vortex): 654 def ref(self, isa, os): 655 self.args = [ '%s2.raw' % self.endian ] 656 self.output = 'vortex2.out' 657 658class vortex3(vortex): 659 def ref(self, isa, os): 660 self.args = [ '%s3.raw' % self.endian ] 661 self.output = 'vortex3.out' 662 663class vpr(MinneDefaultBenchmark): 664 name = 'vpr' 665 number = 175 666 lang = 'C' 667 668# not sure about vpr minnespec place.in 669class vpr_place(vpr): 670 args = [ 'net.in', 'arch.in', 'place.out', 'dum.out', '-nodisp', 671 '-place_only', '-init_t', '5', '-exit_t', '0.005', 672 '-alpha_t', '0.9412', '-inner_num', '2' ] 673 output = 'place_log.out' 674 675class vpr_route(vpr): 676 args = [ 'net.in', 'arch.in', 'place.in', 'route.out', '-nodisp', 677 '-route_only', '-route_chan_width', '15', 678 '-pres_fac_mult', '2', '-acc_fac', '1', 679 '-first_iter_pres_fac', '4', '-initial_pres_fac', '8' ] 680 output = 'route_log.out' 681 682all = [ ammp, applu, apsi, art110, art470, equake, facerec, fma3d, galgel, 683 lucas, mesa, mgrid, sixtrack, swim, wupwise, bzip2_source, 684 bzip2_graphic, bzip2_program, crafty, eon_kajiya, eon_cook, 685 eon_rushmeier, gap, gcc_166, gcc_200, gcc_expr, gcc_integrate, 686 gcc_scilab, gzip_source, gzip_log, gzip_graphic, gzip_random, 687 gzip_program, mcf, parser, perlbmk_diffmail, perlbmk_makerand, 688 perlbmk_perfect, perlbmk_splitmail1, perlbmk_splitmail2, 689 perlbmk_splitmail3, perlbmk_splitmail4, twolf, vortex1, vortex2, 690 vortex3, vpr_place, vpr_route ] 691 692__all__ = [ x.__name__ for x in all ] 693 694if __name__ == '__main__': 695 from pprint import pprint 696 for bench in all: 697 for input_set in 'ref', 'test', 'train': 698 print 'class: %s' % bench.__name__ 699 x = bench('alpha', 'tru64', input_set) 700 print '%s: %s' % (x, input_set) 701 pprint(x.makeLiveProcessArgs()) 702 print 703