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