This blog entry is shows the easiest way to get ESESC running using the crafty benchmark from SPEC CPU 2000 (binary and modified input set included).


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

So you can check the source code here:

cd ~/projs/esesc

Make sure that you have the required packages installed in your machine. Read the README.install for the main required packages.

ESESC can be build in Debug or Release mode. This sample is the Debug mode which is slower but produces many meaningful warnings. We strongly suggest to use the DEBUG mode while developing or trying to understand ESESC.

mkdir -p ~/build/esesc-debug
cd ~/build/esesc-debug
cmake -DCMAKE_BUILD_TYPE=Debug ~/projs/esesc

Once you are ready to do some simulations (something more than 30 minutes with DEBUG), you should try to compile ESESC with a Release target (this is the default option). This is much faster but if there is any problem during simulation it will just crash without warnings. Use Debug if you see a crash and solve the problem before using Release again.

mkdir -p ~/build/esesc-release
cd ~/build/esesc-release
cmake ~/projs/esesc

As you may noticed, ESESC takes a bit to compile (not as much as the Linux kernel). As usual, you can speed up the compilation with a multicore (-j4 spawns 4 compilation processes):

make esesc -j4

To run ESESC, it is recommended to create a run directory. Then copy the configuration files in esesc/conf to the run directory along with the benchmark executable. For example to run in Release mode (which is much faster than Debug mode):

cd ~/build/esesc-release
mkdir -p run/exe
cd run
cp ~/projs/esesc/bins/crafty* .
cp ~/projs/esesc/conf/*.conf .

You can run esesc with the default parameters:

../main/esesc <

Once the simulation is finished, check the results with

~/projs/esesc/conf/scripts/ -a

You can check esesc.conf to see what benchmark is being simulated (by default it runs crafty from SPEC benchmark suite), and what sampling parameters are used. shared.conf contains the architectural configuration for each core/component in the system. More on running different applications coming soon.