gem5 is copyrighted software; use the --copyright option for details. Options ======= --version show programm's version number and exit --help, -h show this help message and exit --build-info, -B Show build information --copyright, -C Show full copyright information --readme, -R Show the readme --outdir=DIR, -d DIR Set the output directory to DIR [Default: m5out] --redirect-stdout, -r Redirect stdout (& stderr, without -e) to file --redirect-stderr, -e Redirect stderr to file --stdout-file=FILE Filename for -r redirection [Default: simout] --stderr-file=FILE Filename for -e redirection [Default: simerr] --listener-mode={on,off,auto} Port (e.g., gdb) listener mode (auto: Enable if running interactively) [Default: auto] --listener-loopback-only Port listeners will only accept connections over the loopback device --interactive, -i Invoke the interactive interpreter after running the script --pdb Invoke the python debugger before running the script --path=PATH[:PATH], -p PATH[:PATH] Prepend PATH to the system path when invoking the script --quiet, -q Reduce verbosity --verbose, -v Increase verbosity ...
Options: -h, --help show this help message and exit -n NUM_CPUS, --num-cpus=NUM_CPUS --sys-voltage=SYS_VOLTAGE Top-level voltage for blocks running at system power supply --sys-clock=SYS_CLOCK Top-level clock for blocks running at system speed --list-mem-types List available memory types --mem-type=MEM_TYPE type of memory to use --mem-channels=MEM_CHANNELS number of memory channels --mem-ranks=MEM_RANKS number of memory ranks per channel --mem-size=MEM_SIZE Specify the physical memory size (single memory) --enable-dram-powerdown Enable low-power states in DRAMCtrl --mem-channels-intlv=MEM_CHANNELS_INTLV Memory channels interleave --memchecker --external-memory-system=EXTERNAL_MEMORY_SYSTEM use external ports of this port_type for caches --tlm-memory=TLM_MEMORY use external port for SystemC TLM cosimulation --caches --l2cache --num-dirs=NUM_DIRS --num-l2caches=NUM_L2CACHES --num-l3caches=NUM_L3CACHES --l1d_size=L1D_SIZE --l1i_size=L1I_SIZE --l2_size=L2_SIZE --l3_size=L3_SIZE --l1d_assoc=L1D_ASSOC --l1i_assoc=L1I_ASSOC --l2_assoc=L2_ASSOC --l3_assoc=L3_ASSOC --cacheline_size=CACHELINE_SIZE --ruby ......
-c CMD, --cmd=CMD The binary to run in syscall emulation mode. -o OPTIONS, --options=OPTIONS The options to pass to the binary, use " " around the entire string -e ENV, --env=ENV Initialize workload environment from text file. -i INPUT, --input=INPUT Read stdin from a file. --output=OUTPUT Redirect stdout to a file. --errout=ERROUT Redirect stderr to a file. ......
# Copyright (c) 2012-2013 ARM Limited # All rights reserved. # # The license below extends only to copyright in the software and shall # not be construed as granting a license to any other intellectual # property including but not limited to intellectual property relating # to a hardware implementation of the functionality of the software # licensed hereunder. You may use the software subject to the license # terms below provided that you ensure that this notice is replicated # unmodified and in its entirety in all distributions of the software, # modified or unmodified, in source code or in binary form. # # Copyright (c) 2006-2008 The Regents of The University of Michigan # 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.
# Simple test script # # "m5 test.py"
from __future__ import print_function from __future__ import absolute_import
import optparse import sys import os
import m5 from m5.defines import buildEnv from m5.objects import * from m5.params import NULL from m5.util import addToPath, fatal, warn
addToPath('../')
from ruby import Ruby
from common import Options from common import Simulation from common import CacheConfig from common import CpuConfig from common import ObjectList from common import MemConfig from common.FileSystemConfig import config_filesystem from common.Caches import * from common.cpu2000 import * import spec06_benchmarks
parser.add_option("-b", "--benchmark", type="string", default="", help="The SPEC benchmark to be loaded.") parser.add_option("--benchmark_stdout", type="string", default="", help="Absolute path for stdout redirection for the benchmark.") parser.add_option("--benchmark_stderr", type="string", default="", help="Absolute path for stderr redirection for the benchmark.")
defget_processes(options): """Interprets provided options and returns a list of processes"""
# Check -- do not allow SMT with multiple CPUs if options.smt and options.num_cpus > 1: fatal("You cannot use SMT with multiple CPUs!")
np = options.num_cpus system = System(cpu = [CPUClass(cpu_id=i) for i inrange(np)], mem_mode = test_mem_mode, mem_ranges = [AddrRange(options.mem_size)], cache_line_size = options.cacheline_size, workload = NULL)
if numThreads > 1: system.multi_thread = True
# Create a top-level voltage domain system.voltage_domain = VoltageDomain(voltage = options.sys_voltage)
# Create a source clock for the system and set the clock period system.clk_domain = SrcClockDomain(clock = options.sys_clock, voltage_domain = system.voltage_domain)
# Create a CPU voltage domain system.cpu_voltage_domain = VoltageDomain()
# Create a separate clock domain for the CPUs system.cpu_clk_domain = SrcClockDomain(clock = options.cpu_clock, voltage_domain = system.cpu_voltage_domain)
# If elastic tracing is enabled, then configure the cpu and attach the elastic # trace probe #if options.elastic_trace_en: # CpuConfig.config_etrace(CPUClass, system.cpu, options)
# All cpus belong to a common cpu_clk_domain, therefore running at a common # frequency. for cpu in system.cpu: cpu.clk_domain = system.cpu_clk_domain
if ObjectList.is_kvm_cpu(CPUClass) or ObjectList.is_kvm_cpu(FutureClass): if buildEnv['TARGET_ISA'] == 'x86': system.kvm_vm = KvmVM() for process in multiprocesses: process.useArchPT = True process.kvmInSE = True else: fatal("KvmCPU can only be used in SE mode with x86")
# Sanity check if options.simpoint_profile: ifnot ObjectList.is_noncaching_cpu(CPUClass): fatal("SimPoint/BPProbe should be done with an atomic cpu") if np > 1: fatal("SimPoint generation not supported with more than one CPUs")
for i inrange(np): if options.smt: system.cpu[i].workload = multiprocesses eliflen(multiprocesses) == 1: system.cpu[i].workload = multiprocesses[0] else: system.cpu[i].workload = multiprocesses[i]
if options.simpoint_profile: system.cpu[i].addSimPointProbe(options.simpoint_interval)
if options.checker: system.cpu[i].addCheckerCpu()
if options.bp_type: bpClass = ObjectList.bp_list.get(options.bp_type) system.cpu[i].branchPred = bpClass()
if options.indirect_bp_type: indirectBPClass = \ ObjectList.indirect_bp_list.get(options.indirect_bp_type) system.cpu[i].branchPred.indirectBranchPred = indirectBPClass()
system.cpu[i].createThreads()
if options.ruby: Ruby.create_system(options, False, system) assert(options.num_cpus == len(system.ruby._cpu_ports))
system.ruby.clk_domain = SrcClockDomain(clock = options.ruby_clock, voltage_domain = system.voltage_domain) for i inrange(np): ruby_port = system.ruby._cpu_ports[i]
# Create the interrupt controller and connect its ports to Ruby # Note that the interrupt controller is always present but only # in x86 does it have message ports that need to be connected system.cpu[i].createInterruptController()
##spec06_benchmarks.py import m5 from m5.objects import *
# These three directory paths are not currently used. # gem5_dir = '<FULL_PATH_TO_YOUR_GEM5_INSTALL>' # spec_dir = '<FULL_PATH_TO_YOUR_SPEC_CPU2006_INSTALL>' # out_dir = '<FULL_PATH_TO_DESIRED_OUTPUT_DIRECTORY>'
GEM5_DIR='/home/tom/gem5' #<PATH_TO_YOUR_GEM5_INSTALL> # Install location of gem5 SPEC_DIR='/home/tom/cpu2006/benchspec/CPU2006/'
# 447.dealII ####### NOT WORKING ######### dealII = Process(pid=447) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'447.dealII'+dir_suffix dealII.executable = fullpath+'dealII' + exe_suffix # TEST CMDS ####### NOT WORKING ######### dealII.cmd = [gobmk.executable]+['8'] # REF CMDS ####### NOT WORKING ######### # dealII.output = out_dir + 'dealII.out'
# 450.soplex soplex = Process(pid=450) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'450.soplex'+dir_suffix soplex.executable = fullpath+'soplex' + exe_suffix # TEST CMDS # soplex.cmd = [soplex.executable] + ['-m10000',fullpath+ 'test.mps'] # REF CMDS soplex.cmd = [soplex.executable] + ['-m45000', fullpath+'pds-50.mps'] # soplex.cmd = [soplex.executable] + ['-m3500', fullpath+'ref.mps'] # soplex.output = out_dir + 'soplex.out'
# 453.povray povray = Process(pid=453) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'453.povray'+dir_suffix povray.executable = fullpath+'povray' + exe_suffix # TEST CMDS # povray.cmd = [povray.executable] + [fullpath+'SPEC-benchmark-test.ini'] # REF CMDS povray.cmd = [povray.executable] + [fullpath+'SPEC-benchmark-ref.ini'] # povray.output = out_dir + 'povray.out'
# 454.calculix calculix = Process(pid=454) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'454.calculix'+dir_suffix calculix.executable = fullpath+'calculix' + exe_suffix # TEST CMDS # calculix.cmd = [calculix.executable] + ['-i', 'beampic'] # REF CMDS calculix.cmd = [calculix.executable] + ['-i', 'hyperviscoplastic'] # calculix.output = out_dir + 'calculix.out'
# 458.sjeng sjeng = Process(pid=458) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'458.sjeng'+dir_suffix sjeng.executable = fullpath+'sjeng' + exe_suffix # TEST CMDS # sjeng.cmd = [sjeng.executable] + [fullpath+'test.txt'] # REF CMDS sjeng.cmd = [sjeng.executable] + [fullpath+'ref.txt'] # sjeng.output = out_dir + 'sjeng.out'
# 459.GemsFDTD GemsFDTD = Process(pid=459) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'459.GemsFDTD'+dir_suffix GemsFDTD.executable = fullpath+'GemsFDTD' + exe_suffix # TEST CMDS # GemsFDTD.cmd = [GemsFDTD.executable] # REF CMDS GemsFDTD.cmd = [GemsFDTD.executable] # GemsFDTD.output = out_dir + 'GemsFDTD.out'
# 462.libquantum libquantum = Process(pid=462) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'462.libquantum'+dir_suffix libquantum.executable = fullpath+'libquantum' + exe_suffix # TEST CMDS # libquantum.cmd = [libquantum.executable] + ['33','5'] # REF CMDS [UPDATE 10/2/2015]: Sparsh Mittal has pointed out the correct input for libquantum should be 1397 and 8, not 1297 and 8. Thanks! libquantum.cmd = [libquantum.executable] + ['1397', '8'] # libquantum.output = out_dir + 'libquantum.out'
# 464.h264ref h264ref = Process(pid=464) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'464.h264ref'+dir_suffix h264ref.executable = fullpath+'h264ref' + exe_suffix # TEST CMDS # h264ref.cmd = [h264ref.executable] + ['-d', fullpath+'foreman_test_encoder_baseline.cfg'] # REF CMDS h264ref.cmd = [h264ref.executable] + ['-d', fullpath+'foreman_ref_encoder_baseline.cfg'] # h264ref.cmd = [h264ref.executable] + ['-d', fullpath+'foreman_ref_encoder_main.cfg'] # h264ref.cmd = [h264ref.executable] + ['-d', fullpath+'sss_encoder_main.cfg'] # h264ref.output = out_dir + 'h264ref.out'
# 465.tonto tonto = Process(pid=465) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'465.tonto'+dir_suffix tonto.executable = fullpath+'tonto' + exe_suffix # TEST CMDS # tonto.cmd = [tonto.executable] # REF CMDS tonto.cmd = [tonto.executable] # tonto.output = out_dir + 'tonto.out'
# 470.lbm lbm = Process(pid=470) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'470.lbm'+dir_suffix lbm.executable = fullpath+'lbm' + exe_suffix # TEST CMDS # lbm.cmd = [lbm.executable] + ['20', fullpath+'reference.dat', '0', '1', fullpath+'100_100_130_cf_a.of'] # REF CMDS lbm.cmd = [lbm.executable] + ['300', fullpath+'reference.dat', '0', '0', fullpath+'100_100_130_ldc.of'] # lbm.output = out_dir + 'lbm.out'
# 471.omnetpp omnetpp = Process(pid=471) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'471.omnetpp'+dir_suffix omnetpp.executable = fullpath+'omnetpp' + exe_suffix # TEST CMDS # omnetpp.cmd = [omnetpp.executable] + [fullpath+'omnetpp.ini'] # REF CMDS omnetpp.cmd = [omnetpp.executable] + [fullpath+'omnetpp.ini'] # omnetpp.output = out_dir + 'omnetpp.out'
# 473.astar astar = Process(pid=473) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'473.astar'+dir_suffix astar.executable = fullpath+'astar' + exe_suffix # TEST CMDS # astar.cmd = [astar.executable] + [fullpath+'lake.cfg'] # REF CMDS astar.cmd = [astar.executable] + [fullpath+'rivers.cfg'] # astar.output = out_dir + 'astar.out'
# 481.wrf wrf = Process(pid=481) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'481.wrf'+dir_suffix wrf.executable = fullpath+'wrf' + exe_suffix # TEST CMDS # wrf.cmd = [wrf.executable] # REF CMDS wrf.cmd = [wrf.executable] # wrf.output = out_dir + 'wrf.out'
# 482.sphinx3 sphinx3 = Process(pid=482) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'482.sphinx3'+dir_suffix sphinx3.executable = fullpath+'sphinx_livepretend' + exe_suffix # TEST CMDS # sphinx3.cmd = [sphinx3.executable] + [fullpath+'ctlfile', fullpath, fullpath+'args.an4'] # REF CMDS sphinx3.cmd = [sphinx3.executable] + [fullpath+'ctlfile', fullpath, fullpath+'args.an4'] # sphinx3.output = out_dir + 'sphinx3.out'
# 483.xalancbmk ######## NOT WORKING ########### xalancbmk = Process(pid=483) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'483.xalancbmk'+dir_suffix xalancbmk.executable = fullpath+'Xalan' + exe_suffix # TEST CMDS ######## NOT WORKING ########### xalancbmk.cmd = [xalancbmk.executable] + ['-v',fullpath+'test.xml',fullpath+'xalanc.xsl'] # REF CMDS ######## NOT WORKING ########### # xalancbmk.output = out_dir + 'xalancbmk.out'
# 998.specrand specrand_i = Process(pid=998) # Update June 7, 2017: This used to be LiveProcess() fullpath=SPEC_DIR+'998.specrand'+dir_suffix specrand_i.executable = fullpath+'specrand' + exe_suffix # TEST CMDS # specrand_i.cmd = [specrand_i.executable] + ['324342', '24239'] # REF CMDS specrand_i.cmd = [specrand_i.executable] + ['1255432124', '234923'] # specrand_i.output = out_dir + 'specrand_i.out' # 999.specrand specrand_f = Process(pid=999) # Update June 7, 2017: This used to be LiveProces using std::in; fullpath=SPEC_DIR+'999.specrand'+dir_suffix specrand_f.executable = fullpath+'specrand' + exe_suffix # TEST CMDS # specrand_f.cmd = [specrand_f.executable] + ['324342', '24239'] # REF CMDS specrand_f.cmd = [specrand_f.executable] + ['1255432124', '234923'] # specrand_f.output = out_dir + 'specrand_f.out'
#!/bin/bash # # run_spec2006.sh # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>.
############ DIRECTORY VARIABLES: MODIFY ACCORDINGLY ############# GEM5_DIR=/home/tom/gem5 #<PATH_TO_YOUR_GEM5_INSTALL> # Install location of gem5 SPEC_DIR=/home/tom/cpu2006 #<PATH_TO_YOUR_SPEC_CPU2006_INSTALL> # Install location of your SPEC2006 benchmarks
ARGC=$## Get number of arguments excluding arg0 (the script itself). Check for help message condition. if [[ "$ARGC" != 2 ]]; then# Bad number of arguments. echo"run_gem5_alpha_spec06_benchmark.sh Copyright (C) 2014 Mark Gottscho" echo"This program comes with ABSOLUTELY NO WARRANTY; for details see <http://www.gnu.org/licenses/>." echo"This is free software, and you are welcome to redistribute it under certain conditions; see <http://www.gnu.org/licenses/> for details." echo"" echo"This script runs a single gem5 simulation of a single SPEC CPU2006 benchmark for Alpha ISA." echo"" echo"USAGE: run_gem5_alpha_spec06_benchmark.sh <BENCHMARK> <OUTPUT_DIR>" echo"EXAMPLE: ./run_gem5_alpha_spec06_benchmark.sh bzip2 /FULL/PATH/TO/output_dir" echo"" echo"A single --help help or -h argument will bring this message back." exit fi
# Get command line input. We will need to check these. BENCHMARK=$1# Benchmark name, e.g. bzip2 OUTPUT_DIR=$2# Directory to place run output. Make sure this exists! RUN_SUFFIX=run/run_base_ref_amd64-m64-gcc43-nn.0000 ######################### BENCHMARK CODENAMES #################### PERLBENCH_CODE=400.perlbench BZIP2_CODE=401.bzip2 GCC_CODE=403.gcc BWAVES_CODE=410.bwaves GAMESS_CODE=416.gamess MCF_CODE=429.mcf MILC_CODE=433.milc ZEUSMP_CODE=434.zeusmp GROMACS_CODE=435.gromacs CACTUSADM_CODE=436.cactusADM LESLIE3D_CODE=437.leslie3d NAMD_CODE=444.namd GOBMK_CODE=445.gobmk DEALII_CODE=447.dealII SOPLEX_CODE=450.soplex POVRAY_CODE=453.povray CALCULIX_CODE=454.calculix HMMER_CODE=456.hmmer SJENG_CODE=458.sjeng GEMSFDTD_CODE=459.GemsFDTD LIBQUANTUM_CODE=462.libquantum H264REF_CODE=464.h264ref TONTO_CODE=465.tonto LBM_CODE=470.lbm OMNETPP_CODE=471.omnetpp ASTAR_CODE=473.astar WRF_CODE=481.wrf SPHINX3_CODE=482.sphinx3 XALANCBMK_CODE=483.xalancbmk SPECRAND_INT_CODE=998.specrand SPECRAND_FLOAT_CODE=999.specrand ##################################################################
# Check BENCHMARK input #################### BENCHMARK CODE MAPPING ###################### BENCHMARK_CODE="none" if [[ "$BENCHMARK" == "perlbench" ]]; then BENCHMARK_CODE=$PERLBENCH_CODE fi if [[ "$BENCHMARK" == "bzip2" ]]; then BENCHMARK_CODE=$BZIP2_CODE fi if [[ "$BENCHMARK" == "gcc" ]]; then BENCHMARK_CODE=$GCC_CODE fi if [[ "$BENCHMARK" == "bwaves" ]]; then BENCHMARK_CODE=$BWAVES_CODE fi if [[ "$BENCHMARK" == "gamess" ]]; then BENCHMARK_CODE=$GAMESS_CODE fi if [[ "$BENCHMARK" == "mcf" ]]; then BENCHMARK_CODE=$MCF_CODE fi if [[ "$BENCHMARK" == "milc" ]]; then BENCHMARK_CODE=$MILC_CODE fi if [[ "$BENCHMARK" == "zeusmp" ]]; then BENCHMARK_CODE=$ZEUSMP_CODE fi if [[ "$BENCHMARK" == "gromacs" ]]; then BENCHMARK_CODE=$GROMACS_CODE fi if [[ "$BENCHMARK" == "cactusADM" ]]; then BENCHMARK_CODE=$CACTUSADM_CODE fi if [[ "$BENCHMARK" == "leslie3d" ]]; then BENCHMARK_CODE=$LESLIE3D_CODE fi if [[ "$BENCHMARK" == "namd" ]]; then BENCHMARK_CODE=$NAMD_CODE fi if [[ "$BENCHMARK" == "gobmk" ]]; then BENCHMARK_CODE=$GOBMK_CODE fi if [[ "$BENCHMARK" == "dealII" ]]; then# DOES NOT WORK BENCHMARK_CODE=$DEALII_CODE fi if [[ "$BENCHMARK" == "soplex" ]]; then BENCHMARK_CODE=$SOPLEX_CODE fi if [[ "$BENCHMARK" == "povray" ]]; then BENCHMARK_CODE=$POVRAY_CODE fi if [[ "$BENCHMARK" == "calculix" ]]; then BENCHMARK_CODE=$CALCULIX_CODE fi if [[ "$BENCHMARK" == "hmmer" ]]; then BENCHMARK_CODE=$HMMER_CODE fi if [[ "$BENCHMARK" == "sjeng" ]]; then BENCHMARK_CODE=$SJENG_CODE fi if [[ "$BENCHMARK" == "GemsFDTD" ]]; then BENCHMARK_CODE=$GEMSFDTD_CODE fi if [[ "$BENCHMARK" == "libquantum" ]]; then BENCHMARK_CODE=$LIBQUANTUM_CODE fi if [[ "$BENCHMARK" == "h264ref" ]]; then BENCHMARK_CODE=$H264REF_CODE fi if [[ "$BENCHMARK" == "tonto" ]]; then BENCHMARK_CODE=$TONTO_CODE fi if [[ "$BENCHMARK" == "lbm" ]]; then BENCHMARK_CODE=$LBM_CODE fi if [[ "$BENCHMARK" == "omnetpp" ]]; then BENCHMARK_CODE=$OMNETPP_CODE fi if [[ "$BENCHMARK" == "astar" ]]; then BENCHMARK_CODE=$ASTAR_CODE fi if [[ "$BENCHMARK" == "wrf" ]]; then BENCHMARK_CODE=$WRF_CODE fi if [[ "$BENCHMARK" == "sphinx3" ]]; then BENCHMARK_CODE=$SPHINX3_CODE fi if [[ "$BENCHMARK" == "xalancbmk" ]]; then# DOES NOT WORK BENCHMARK_CODE=$XALANCBMK_CODE fi if [[ "$BENCHMARK" == "specrand_i" ]]; then BENCHMARK_CODE=$SPECRAND_INT_CODE fi if [[ "$BENCHMARK" == "specrand_f" ]]; then BENCHMARK_CODE=$SPECRAND_FLOAT_CODE fi # Sanity check if [[ "$BENCHMARK_CODE" == "none" ]]; then echo"Input benchmark selection $BENCHMARK did not match any known SPEC CPU2006 benchmarks! Exiting." exit 1 fi
################################################################## # Check OUTPUT_DIR existence if [[ ! -d "$OUTPUT_DIR" ]]; then echo"Output directory $OUTPUT_DIR does not exist! Exiting." exit 1 fi
RUN_DIR=$SPEC_DIR/benchspec/CPU2006/$BENCHMARK_CODE/$RUN_SUFFIX# Run directory for the selected SPEC benchmark SCRIPT_OUT=$OUTPUT_DIR/runscript.log # File log for this script's stdout henceforth
################## REPORT SCRIPT CONFIGURATION ################### echo"Command line:" | tee$SCRIPT_OUT echo"$0 $*" | tee -a $SCRIPT_OUT echo"================= Hardcoded directories ==================" | tee -a $SCRIPT_OUT echo"GEM5_DIR: $GEM5_DIR" | tee -a $SCRIPT_OUT echo"SPEC_DIR: $SPEC_DIR" | tee -a $SCRIPT_OUT echo"==================== Script inputs =======================" | tee -a $SCRIPT_OUT echo"BENCHMARK: $BENCHMARK" | tee -a $SCRIPT_OUT echo"OUTPUT_DIR: $OUTPUT_DIR" | tee -a $SCRIPT_OUT echo"==========================================================" | tee -a $SCRIPT_OUT ##################################################################
#################### LAUNCH GEM5 SIMULATION ###################### echo"" | tee -a $SCRIPT_OUT echo"" | tee -a $SCRIPT_OUT echo"--------- Here goes nothing! Starting gem5! ------------" | tee -a $SCRIPT_OUT echo"" | tee -a $SCRIPT_OUT echo"" | tee -a $SCRIPT_OUT