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