Once you have compiled ESESC, you have a working crafty run. This blog entry shows you how to use launcher to execute more benchmarks.

Launcher Binary

ESESC can run programs compiled for ARM without any modifications. You can compile your program, and ask ESESC to run it by pointing to the benchmark binary in esesc.conf:

benchName  = "myProgram  myArguments"

Nonetheless, we have facilitated the process of running the common benchmarks (for example applications from SPEC or PARSEC benchmark suite). ESESC is provided with an application called launcher. The launcher app provides a single point of entry to specify the benchmark:

benchname = "launcher -- stdin crafty.in --crafty"

will launch crafty. The following would run crafty and gcc (SPEC 2006) together:

benchname = "launcher -- stdin crafty.in --crafty -- gcc_06  166.i -o 166.s"

So we can simply run different benchmarks and mixture of them. Only one application with standard input can exist in the mixture each time. The standard input is always the first argument to specify, if applicable. Also in this case, we have to update esesc.conf to specify a dual core configuration.

Single core:

cpuemul[0]  = 'QEMUSectionCPU' 
cpusimu[0]  = "$(coreType)"

Dual core:

cpuemul[0:1]  = 'QEMUSectionCPU' 
cpusimu[0:1]  = "$(coreType)"

Set the directory

You should do the following steps:

Compile ESESC, and remember the ESESC binary location (E.g: ~/build/esesc-release/main/esesc)

Create a running directory

mkdir -p ~/build/esesc-release/run
cd ~/build/esesc-release/run

Get the input sets. We can not provide the SPEC input sets due to copyright. The PARSEC input sets are available at the following location:

wget http://masc.soe.ucsc.edu/esesc/resources/mtInputs.tar.bz2
tar xjvf mtInputs.tar.bz2

To save disk space, it may be good to share the input sets across all the esesc runs. For example create a common ~/projs/benchmarks directory, and expand the mtInputs there.

Create the simulation scripts

The configuration is created with the mt-scripts.rb provided by ESESC under the conf directory.

In this sample setup, we assume that you have cloned the ESESC repository in the ~/projs/esesc directory.

For benchmarks, you can specify

single_core
dual_core
quad_core
octo_core
parsec_dual_core
parsec_quad_core
parsec_octo_core
parsec_16_core
mix_octo_core

You also need to specify the esesc binary location, the sampling mode used, your email, the input set location, the configuration file, and the launcher location. A valid sample:

Start by making sure that you have a local esesc.conf configuration

cd ~/build/esesc-release/run
cp ~/projs/esesc/conf/*conf .

Test that everything is ready before building the scripts

mkdir exe
cp ~/projs/esesc/bins/crafty* exe
../main/esesc <exe/cracfty.in

If the default test simulation finished (less than 10 minutes of rrrr and rwrw), create the scripts to run esesc

~/projs/esesc/conf/scripts/mt-scripts.rb -b single_core \
--local -x ../main/esesc -m smartsmode -e foo@ucsc.edu \
-j ./input \
-c ./esesc.conf -u ~/projs/esesc/conf/launcher

or this other option if you use ~/projs/benchmarks for the input sets.

~/projs/esesc/conf/scripts/mt-scripts.rb -b single_core \
--local -x ../main/esesc -m smartsmode -e foo@ucsc.edu \
-j ~/projs/benchmark/input \
-c ./esesc.conf -u ~/projs/esesc/conf/launcher

The result of running the previous mt-script is a number of scripts to run each benchmark. For example:

leslie3d_smartsmode-run.sh
mcf_smartsmode-run.sh

Sample run

For example, you can run mcf by (WARNING!! the mtInputs DOES NOT include SPEC input sets because of copyright reasons. You should acquire a SPEC license):

./mcf_smartsmode-run.sh

This creates a simulation inside mcf_smartsmode directory. Once the simulation is finished, check the results with

cd mcf_smartsmode
~/projs/esesc/conf/scripts/report.pl -a