1# Copyright (c) 2006-2008 The Regents of The University of Michigan 2# All rights reserved. 3# 4# Redistribution and use in source and binary forms, with or without 5# modification, are permitted provided that the following conditions are 6# met: redistributions of source code must retain the above copyright 7# notice, this list of conditions and the following disclaimer; 8# redistributions in binary form must reproduce the above copyright 9# notice, this list of conditions and the following disclaimer in the 10# documentation and/or other materials provided with the distribution; 11# neither the name of the copyright holders nor the names of its 12# contributors may be used to endorse or promote products derived from 13# this software without specific prior written permission. 14# 15# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 16# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 17# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 18# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 19# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 20# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 21# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 22# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 23# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 24# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26# 27# Authors: Nathan Binkert 28 29from __future__ import print_function 30from __future__ import absolute_import 31 32import os 33import sys 34from os.path import basename, exists, join as joinpath, normpath 35from os.path import isdir, isfile, islink 36 37spec_dist = os.environ.get('M5_CPU2000', '/dist/m5/cpu2000') 38 39def copyfiles(srcdir, dstdir): 40 from filecmp import cmp as filecmp 41 from shutil import copyfile 42 43 srcdir = normpath(srcdir) 44 dstdir = normpath(dstdir) 45 46 if not isdir(dstdir): 47 os.mkdir(dstdir) 48 49 for root, dirs, files in os.walk(srcdir): 50 root = normpath(root) 51 prefix = os.path.commonprefix([root, srcdir]) 52 53 root = root[len(prefix):] 54 if root.startswith('/'): 55 root = root[1:] 56 57 for entry in dirs: 58 newdir = joinpath(dstdir, root, entry) 59 if not isdir(newdir): 60 os.mkdir(newdir) 61 62 for entry in files: 63 dest = normpath(joinpath(dstdir, root, entry)) 64 src = normpath(joinpath(srcdir, root, entry)) 65 if not isfile(dest) or not filecmp(src, dest): 66 copyfile(src, dest) 67 68 # some of the spec benchmarks expect to be run from one directory up. 69 # just create some symlinks that solve the problem 70 inlink = joinpath(dstdir, 'input') 71 outlink = joinpath(dstdir, 'output') 72 if not exists(inlink): 73 os.symlink('.', inlink) 74 if not exists(outlink): 75 os.symlink('.', outlink) 76 77class Benchmark(object): 78 def __init__(self, isa, os, input_set): 79 if not hasattr(self.__class__, 'name'): 80 self.name = self.__class__.__name__ 81 82 if not hasattr(self.__class__, 'binary'): 83 self.binary = self.name 84 85 if not hasattr(self.__class__, 'args'): 86 self.args = [] 87 88 if not hasattr(self.__class__, 'output'): 89 self.output = '%s.out' % self.name 90 91 if not hasattr(self.__class__, 'simpoint'): 92 self.simpoint = None 93 94 try: 95 func = getattr(self.__class__, input_set) 96 except AttributeError: 97 raise AttributeError( 98 'The benchmark %s does not have the %s input set' % \ 99 (self.name, input_set)) 100 101 executable = joinpath(spec_dist, 'binaries', isa, os, self.binary) 102 if not isfile(executable): 103 raise AttributeError('%s not found' % executable) 104 self.executable = executable 105 106 # root of tree for input & output data files 107 data_dir = joinpath(spec_dist, 'data', self.name) 108 # optional subtree with files shared across input sets 109 all_dir = joinpath(data_dir, 'all') 110 # dirs for input & output files for this input set 111 inputs_dir = joinpath(data_dir, input_set, 'input') 112 outputs_dir = joinpath(data_dir, input_set, 'output') 113 # keep around which input set was specified 114 self.input_set = input_set 115 116 if not isdir(inputs_dir): 117 raise AttributeError('%s not found' % inputs_dir) 118 119 self.inputs_dir = [ inputs_dir ] 120 if isdir(all_dir): 121 self.inputs_dir += [ joinpath(all_dir, 'input') ] 122 if isdir(outputs_dir): 123 self.outputs_dir = outputs_dir 124 125 if not hasattr(self.__class__, 'stdin'): 126 self.stdin = joinpath(inputs_dir, '%s.in' % self.name) 127 if not isfile(self.stdin): 128 self.stdin = None 129 130 if not hasattr(self.__class__, 'stdout'): 131 self.stdout = joinpath(outputs_dir, '%s.out' % self.name) 132 if not isfile(self.stdout): 133 self.stdout = None 134 135 func(self, isa, os) 136 137 def makeProcessArgs(self, **kwargs): 138 # set up default args for Process object 139 process_args = {} 140 process_args['cmd'] = [ self.name ] + self.args 141 process_args['executable'] = self.executable 142 if self.stdin: 143 process_args['input'] = self.stdin 144 if self.stdout: 145 process_args['output'] = self.stdout 146 if self.simpoint: 147 process_args['simpoint'] = self.simpoint 148 # explicit keywords override defaults 149 process_args.update(kwargs) 150 151 return process_args 152 153 def makeProcess(self, **kwargs): 154 process_args = self.makeProcessArgs(**kwargs) 155 156 # figure out working directory: use m5's outdir unless 157 # overridden by Process's cwd param 158 cwd = process_args.get('cwd') 159 160 if not cwd: 161 from m5 import options 162 cwd = options.outdir 163 process_args['cwd'] = cwd 164 if not isdir(cwd): 165 os.makedirs(cwd) 166 # copy input files to working directory 167 for d in self.inputs_dir: 168 copyfiles(d, cwd) 169 # generate Process object 170 from m5.objects import Process 171 return Process(**process_args) 172 173 def __str__(self): 174 return self.name 175 176class DefaultBenchmark(Benchmark): 177 def ref(self, isa, os): pass 178 def test(self, isa, os): pass 179 def train(self, isa, os): pass 180 181class MinneDefaultBenchmark(DefaultBenchmark): 182 def smred(self, isa, os): pass 183 def mdred(self, isa, os): pass 184 def lgred(self, isa, os): pass 185 186class ammp(MinneDefaultBenchmark): 187 name = 'ammp' 188 number = 188 189 lang = 'C' 190 simpoint = 108*100E6 191 192class applu(MinneDefaultBenchmark): 193 name = 'applu' 194 number = 173 195 lang = 'F77' 196 simpoint = 2179*100E6 197 198class apsi(MinneDefaultBenchmark): 199 name = 'apsi' 200 number = 301 201 lang = 'F77' 202 simpoint = 3408*100E6 203 204class art(DefaultBenchmark): 205 name = 'art' 206 number = 179 207 lang = 'C' 208 209 def test(self, isa, os): 210 self.args = [ '-scanfile', 'c756hel.in', 211 '-trainfile1', 'a10.img', 212 '-stride', '2', 213 '-startx', '134', 214 '-starty', '220', 215 '-endx', '139', 216 '-endy', '225', 217 '-objects', '1' ] 218 self.output = 'test.out' 219 220 def train(self, isa, os): 221 self.args = [ '-scanfile', 'c756hel.in', 222 '-trainfile1', 'a10.img', 223 '-stride', '2', 224 '-startx', '134', 225 '-starty', '220', 226 '-endx', '184', 227 '-endy', '240', 228 '-objects', '3' ] 229 self.output = 'train.out' 230 231 def lgred(self, isa, os): 232 self.args = ['-scanfile', 'c756hel.in', 233 '-trainfile1', 'a10.img', 234 '-stride', '5', 235 '-startx', '134', 236 '-starty', '220', 237 '-endx', '184', 238 '-endy', '240', 239 '-objects', '1' ] 240 self.output = 'lgred.out' 241 242 243class art110(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', '110', 250 '-starty', '200', 251 '-endx', '160', 252 '-endy', '240', 253 '-objects', '10' ] 254 self.output = 'ref.1.out' 255 self.simpoint = 340*100E6 256 257class art470(art): 258 def ref(self, isa, os): 259 self.args = [ '-scanfile', 'c756hel.in', 260 '-trainfile1', 'a10.img', 261 '-trainfile2', 'hc.img', 262 '-stride', '2', 263 '-startx', '470', 264 '-starty', '140', 265 '-endx', '520', 266 '-endy', '180', 267 '-objects', '10' ] 268 self.output = 'ref.2.out' 269 self.simpoint = 365*100E6 270 271class equake(DefaultBenchmark): 272 name = 'equake' 273 number = 183 274 lang = 'C' 275 simpoint = 812*100E6 276 277 def lgred(self, isa, os): pass 278 279class facerec(MinneDefaultBenchmark): 280 name = 'facerec' 281 number = 187 282 lang = 'F' 283 simpoint = 375*100E6 284 285class fma3d(MinneDefaultBenchmark): 286 name = 'fma3d' 287 number = 191 288 lang = 'F' 289 simpoint = 2541*100E6 290 291class galgel(MinneDefaultBenchmark): 292 name = 'galgel' 293 number = 178 294 lang = 'F' 295 simpoint = 2491*100E6 296 297class lucas(MinneDefaultBenchmark): 298 name = 'lucas' 299 number = 189 300 lang = 'F' 301 simpoint = 545*100E6 302 303class mesa(Benchmark): 304 name = 'mesa' 305 number = 177 306 lang = 'C' 307 stdin = None 308 309 def __set_args(self, frames): 310 self.args = [ '-frames', frames, '-meshfile', '%s.in' % self.name, 311 '-ppmfile', '%s.ppm' % self.name ] 312 313 def test(self, isa, os): 314 self.__set_args('10') 315 316 def train(self, isa, os): 317 self.__set_args('500') 318 319 def ref(self, isa, os): 320 self.__set_args('1000') 321 self.simpoint = 1135*100E6 322 323 def lgred(self, isa, os): 324 self.__set_args('1') 325 326class mgrid(MinneDefaultBenchmark): 327 name = 'mgrid' 328 number = 172 329 lang = 'F77' 330 simpoint = 3292*100E6 331 332class sixtrack(DefaultBenchmark): 333 name = 'sixtrack' 334 number = 200 335 lang = 'F77' 336 simpoint = 3043*100E6 337 338 def lgred(self, isa, os): pass 339 340class swim(MinneDefaultBenchmark): 341 name = 'swim' 342 number = 171 343 lang = 'F77' 344 simpoint = 2079*100E6 345 346class wupwise(DefaultBenchmark): 347 name = 'wupwise' 348 number = 168 349 lang = 'F77' 350 simpoint = 3237*100E6 351 352 def lgred(self, isa, os): pass 353 354class bzip2(DefaultBenchmark): 355 name = 'bzip2' 356 number = 256 357 lang = 'C' 358 359 def test(self, isa, os): 360 self.args = [ 'input.random' ] 361 362 def train(self, isa, os): 363 self.args = [ 'input.compressed' ] 364 365class bzip2_source(bzip2): 366 def ref(self, isa, os): 367 self.simpoint = 977*100E6 368 self.args = [ 'input.source', '58' ] 369 370 def lgred(self, isa, os): 371 self.args = [ 'input.source', '1' ] 372 373class bzip2_graphic(bzip2): 374 def ref(self, isa, os): 375 self.simpoint = 718*100E6 376 self.args = [ 'input.graphic', '58' ] 377 378 def lgred(self, isa, os): 379 self.args = [ 'input.graphic', '1' ] 380 381class bzip2_program(bzip2): 382 def ref(self, isa, os): 383 self.simpoint = 458*100E6 384 self.args = [ 'input.program', '58' ] 385 386 def lgred(self, isa, os): 387 self.args = [ 'input.program', '1' ] 388 389class crafty(MinneDefaultBenchmark): 390 name = 'crafty' 391 number = 186 392 lang = 'C' 393 simpoint = 774*100E6 394 395class eon(MinneDefaultBenchmark): 396 name = 'eon' 397 number = 252 398 lang = 'CXX' 399 stdin = None 400 401class eon_kajiya(eon): 402 args = [ 'chair.control.kajiya', 'chair.camera', 'chair.surfaces', 403 'chair.kajiya.ppm', 'ppm', 'pixels_out.kajiya'] 404 output = 'kajiya_log.out' 405 406 407class eon_cook(eon): 408 args = [ 'chair.control.cook', 'chair.camera', 'chair.surfaces', 409 'chair.cook.ppm', 'ppm', 'pixels_out.cook' ] 410 output = 'cook_log.out' 411 412class eon_rushmeier(eon): 413 args = [ 'chair.control.rushmeier', 'chair.camera', 'chair.surfaces', 414 'chair.rushmeier.ppm', 'ppm', 'pixels_out.rushmeier' ] 415 output = 'rushmeier_log.out' 416 simpoint = 403*100E6 417 418class gap(DefaultBenchmark): 419 name = 'gap' 420 number = 254 421 lang = 'C' 422 423 def __set_args(self, size): 424 self.args = [ '-l', './', '-q', '-m', size ] 425 426 def test(self, isa, os): 427 self.__set_args('64M') 428 429 def train(self, isa, os): 430 self.__set_args('128M') 431 432 def ref(self, isa, os): 433 self.__set_args('192M') 434 self.simpoint = 674*100E6 435 436 def lgred(self, isa, os): 437 self.__set_args('64M') 438 439 def mdred(self, isa, os): 440 self.__set_args('64M') 441 442 def smred(self, isa, os): 443 self.__set_args('64M') 444 445class gcc(DefaultBenchmark): 446 name = 'gcc' 447 number = 176 448 lang = 'C' 449 450 def test(self, isa, os): 451 self.args = [ 'cccp.i', '-o', 'cccp.s' ] 452 453 def train(self, isa, os): 454 self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ] 455 456 def smred(self, isa, os): 457 self.args = [ 'c-iterate.i', '-o', 'c-iterate.s' ] 458 459 def mdred(self, isa, os): 460 self.args = [ 'rdlanal.i', '-o', 'rdlanal.s' ] 461 462 def lgred(self, isa, os): 463 self.args = [ 'cp-decl.i', '-o', 'cp-decl.s' ] 464 465class gcc_166(gcc): 466 def ref(self, isa, os): 467 self.simpoint = 389*100E6 468 self.args = [ '166.i', '-o', '166.s' ] 469 470class gcc_200(gcc): 471 def ref(self, isa, os): 472 self.simpoint = 736*100E6 473 self.args = [ '200.i', '-o', '200.s' ] 474 475class gcc_expr(gcc): 476 def ref(self, isa, os): 477 self.simpoint = 36*100E6 478 self.args = [ 'expr.i', '-o', 'expr.s' ] 479 480class gcc_integrate(gcc): 481 def ref(self, isa, os): 482 self.simpoint = 4*100E6 483 self.args = [ 'integrate.i', '-o', 'integrate.s' ] 484 485class gcc_scilab(gcc): 486 def ref(self, isa, os): 487 self.simpoint = 207*100E6 488 self.args = [ 'scilab.i', '-o', 'scilab.s' ] 489 490class gzip(DefaultBenchmark): 491 name = 'gzip' 492 number = 164 493 lang = 'C' 494 495 def test(self, isa, os): 496 self.args = [ 'input.compressed', '2' ] 497 498 def train(self, isa, os): 499 self.args = [ 'input.combined', '32' ] 500 501class gzip_source(gzip): 502 def ref(self, isa, os): 503 self.simpoint = 334*100E6 504 self.args = [ 'input.source', '1' ] 505 def smred(self, isa, os): 506 self.args = [ 'input.source', '1' ] 507 def mdred(self, isa, os): 508 self.args = [ 'input.source', '1' ] 509 def lgred(self, isa, os): 510 self.args = [ 'input.source', '1' ] 511 512class gzip_log(gzip): 513 def ref(self, isa, os): 514 self.simpoint = 265*100E6 515 self.args = [ 'input.log', '60' ] 516 def smred(self, isa, os): 517 self.args = [ 'input.log', '1' ] 518 def mdred(self, isa, os): 519 self.args = [ 'input.log', '1' ] 520 def lgred(self, isa, os): 521 self.args = [ 'input.log', '1' ] 522 523class gzip_graphic(gzip): 524 def ref(self, isa, os): 525 self.simpoint = 653*100E6 526 self.args = [ 'input.graphic', '60' ] 527 def smred(self, isa, os): 528 self.args = [ 'input.graphic', '1' ] 529 def mdred(self, isa, os): 530 self.args = [ 'input.graphic', '1' ] 531 def lgred(self, isa, os): 532 self.args = [ 'input.graphic', '1' ] 533 534class gzip_random(gzip): 535 def ref(self, isa, os): 536 self.simpoint = 623*100E6 537 self.args = [ 'input.random', '60' ] 538 def smred(self, isa, os): 539 self.args = [ 'input.random', '1' ] 540 def mdred(self, isa, os): 541 self.args = [ 'input.random', '1' ] 542 def lgred(self, isa, os): 543 self.args = [ 'input.random', '1' ] 544 545class gzip_program(gzip): 546 def ref(self, isa, os): 547 self.simpoint = 1189*100E6 548 self.args = [ 'input.program', '60' ] 549 def smred(self, isa, os): 550 self.args = [ 'input.program', '1' ] 551 def mdred(self, isa, os): 552 self.args = [ 'input.program', '1' ] 553 def lgred(self, isa, os): 554 self.args = [ 'input.program', '1' ] 555 556class mcf(MinneDefaultBenchmark): 557 name = 'mcf' 558 number = 181 559 lang = 'C' 560 args = [ 'mcf.in' ] 561 simpoint = 553*100E6 562 563class parser(MinneDefaultBenchmark): 564 name = 'parser' 565 number = 197 566 lang = 'C' 567 args = [ '2.1.dict', '-batch' ] 568 simpoint = 1146*100E6 569 570class perlbmk(DefaultBenchmark): 571 name = 'perlbmk' 572 number = 253 573 lang = 'C' 574 575 def test(self, isa, os): 576 self.args = [ '-I.', '-I', 'lib', 'test.pl' ] 577 self.stdin = 'test.in' 578 579class perlbmk_diffmail(perlbmk): 580 def ref(self, isa, os): 581 self.simpoint = 141*100E6 582 self.args = [ '-I', 'lib', 'diffmail.pl', '2', '550', '15', '24', 583 '23', '100' ] 584 585 def train(self, isa, os): 586 self.args = [ '-I', 'lib', 'diffmail.pl', '2', '350', '15', '24', 587 '23', '150' ] 588 589class perlbmk_scrabbl(perlbmk): 590 def train(self, isa, os): 591 self.args = [ '-I.', '-I', 'lib', 'scrabbl.pl' ] 592 self.stdin = 'scrabbl.in' 593 594class perlbmk_makerand(perlbmk): 595 def ref(self, isa, os): 596 self.simpoint = 11*100E6 597 self.args = [ '-I', 'lib', 'makerand.pl' ] 598 599 def lgred(self, isa, os): 600 self.args = [ '-I.', '-I', 'lib', 'lgred.makerand.pl' ] 601 602 def mdred(self, isa, os): 603 self.args = [ '-I.', '-I', 'lib', 'mdred.makerand.pl' ] 604 605 def smred(self, isa, os): 606 self.args = [ '-I.', '-I', 'lib', 'smred.makerand.pl' ] 607 608class perlbmk_perfect(perlbmk): 609 def ref(self, isa, os): 610 self.simpoint = 5*100E6 611 self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3', 'm', '4' ] 612 613 def train(self, isa, os): 614 self.args = [ '-I', 'lib', 'perfect.pl', 'b', '3' ] 615 616class perlbmk_splitmail1(perlbmk): 617 def ref(self, isa, os): 618 self.simpoint = 405*100E6 619 self.args = [ '-I', 'lib', 'splitmail.pl', '850', '5', '19', 620 '18', '1500' ] 621 622class perlbmk_splitmail2(perlbmk): 623 def ref(self, isa, os): 624 self.args = [ '-I', 'lib', 'splitmail.pl', '704', '12', '26', 625 '16', '836' ] 626 627class perlbmk_splitmail3(perlbmk): 628 def ref(self, isa, os): 629 self.args = [ '-I', 'lib', 'splitmail.pl', '535', '13', '25', 630 '24', '1091' ] 631 632class perlbmk_splitmail4(perlbmk): 633 def ref(self, isa, os): 634 self.args = [ '-I', 'lib', 'splitmail.pl', '957', '12', '23', 635 '26', '1014' ] 636 637class twolf(Benchmark): 638 name = 'twolf' 639 number = 300 640 lang = 'C' 641 stdin = None 642 643 def test(self, isa, os): 644 self.args = [ 'test' ] 645 646 def train(self, isa, os): 647 self.args = [ 'train' ] 648 649 def ref(self, isa, os): 650 self.simpoint = 1066*100E6 651 self.args = [ 'ref' ] 652 653 def smred(self, isa, os): 654 self.args = [ 'smred' ] 655 656 def mdred(self, isa, os): 657 self.args = [ 'mdred' ] 658 659 def lgred(self, isa, os): 660 self.args = [ 'lgred' ] 661 662class vortex(Benchmark): 663 name = 'vortex' 664 number = 255 665 lang = 'C' 666 stdin = None 667 668 def __init__(self, isa, os, input_set): 669 if (isa in ('alpha', 'arm', 'thumb', 'aarch64')): 670 self.endian = 'lendian' 671 elif (isa == 'sparc' or isa == 'sparc32'): 672 self.endian = 'bendian' 673 else: 674 raise AttributeError("unknown ISA %s" % isa) 675 676 super(vortex, self).__init__(isa, os, input_set) 677 678 def test(self, isa, os): 679 self.args = [ '%s.raw' % self.endian ] 680 self.output = 'vortex.out' 681 682 def train(self, isa, os): 683 self.args = [ '%s.raw' % self.endian ] 684 self.output = 'vortex.out' 685 686 def smred(self, isa, os): 687 self.args = [ '%s.raw' % self.endian ] 688 self.output = 'vortex.out' 689 690 def mdred(self, isa, os): 691 self.args = [ '%s.raw' % self.endian ] 692 self.output = 'vortex.out' 693 694 def lgred(self, isa, os): 695 self.args = [ '%s.raw' % self.endian ] 696 self.output = 'vortex.out' 697 698class vortex1(vortex): 699 def ref(self, isa, os): 700 self.args = [ '%s1.raw' % self.endian ] 701 self.output = 'vortex1.out' 702 self.simpoint = 271*100E6 703 704 705class vortex2(vortex): 706 def ref(self, isa, os): 707 self.simpoint = 1024*100E6 708 self.args = [ '%s2.raw' % self.endian ] 709 self.output = 'vortex2.out' 710 711class vortex3(vortex): 712 def ref(self, isa, os): 713 self.simpoint = 564*100E6 714 self.args = [ '%s3.raw' % self.endian ] 715 self.output = 'vortex3.out' 716 717class vpr(MinneDefaultBenchmark): 718 name = 'vpr' 719 number = 175 720 lang = 'C' 721 722# not sure about vpr minnespec place.in 723class vpr_place(vpr): 724 args = [ 'net.in', 'arch.in', 'place.out', 'dum.out', '-nodisp', 725 '-place_only', '-init_t', '5', '-exit_t', '0.005', 726 '-alpha_t', '0.9412', '-inner_num', '2' ] 727 output = 'place_log.out' 728 729class vpr_route(vpr): 730 simpoint = 476*100E6 731 args = [ 'net.in', 'arch.in', 'place.in', 'route.out', '-nodisp', 732 '-route_only', '-route_chan_width', '15', 733 '-pres_fac_mult', '2', '-acc_fac', '1', 734 '-first_iter_pres_fac', '4', '-initial_pres_fac', '8' ] 735 output = 'route_log.out' 736 737all = [ ammp, applu, apsi, art, art110, art470, equake, facerec, fma3d, galgel, 738 lucas, mesa, mgrid, sixtrack, swim, wupwise, bzip2_source, 739 bzip2_graphic, bzip2_program, crafty, eon_kajiya, eon_cook, 740 eon_rushmeier, gap, gcc_166, gcc_200, gcc_expr, gcc_integrate, 741 gcc_scilab, gzip_source, gzip_log, gzip_graphic, gzip_random, 742 gzip_program, mcf, parser, perlbmk_diffmail, perlbmk_makerand, 743 perlbmk_perfect, perlbmk_splitmail1, perlbmk_splitmail2, 744 perlbmk_splitmail3, perlbmk_splitmail4, twolf, vortex1, vortex2, 745 vortex3, vpr_place, vpr_route ] 746 747__all__ = [ x.__name__ for x in all ] 748 749if __name__ == '__main__': 750 from pprint import pprint 751 for bench in all: 752 for input_set in 'ref', 'test', 'train': 753 print('class: %s' % bench.__name__) 754 x = bench('alpha', 'tru64', input_set) 755 print('%s: %s' % (x, input_set)) 756 pprint(x.makeProcessArgs()) 757 print() 758