Monday, November 7, 2011

SESC: Simulator Configuration with Power Model SMP

Note: I am using LINUX with following specifications, g++ (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1.

Installing SESC first time, then follow this post SESC Simulator: First Time Installation for instructions.

Building SESC:
Make new directory ‘build’ in ‘sesc’ folder;
Simulator can be configured as many set of operations, so recommendation is to create different ‘build’ directory for each configuration.
> mkdir build
> cd build


Configuring SESC For SMP:

> ../sesc/configure --enable-smp --enable-power


Executable SESC with SMP:

> make
’sesc.smp’ is the executable file for further testing. 


Configuration File:

In case, you want to test simulator with SMP configurations without changing any parameter, there is one file ‘smp.conf’ present in ‘/sesc/confs/’ folder.

Copy smp.conf and shared.conf file in the build folder;
> cp ../sesc/confs/smp.conf /home/user/build/
> cp ../sesc/confs/shared.conf /home/user/build/

Rename ‘smp.conf’ with ‘sesc.conf’.


Compilation SESC with Power Model:

‘cactify’ and ‘wattchify’, two executables are required for power and energy calculation.
  • 'cactify'; for clock frequency, capacitance and power calculation
  • 'wattchify'; for energy calculation
To generate executable, following commands are required;
> make cactify
> make wattchify

To obtain, power model based on the configuration file;
> ./wattchify sesc.conf tmp.conf
> ./cactify tmp.conf power.conf

‘power.conf’ is the simulator output file.

Running Benchmark:
There are few benchmark applications are available in ‘/sesc/tests/’ folder to test previously build simulator. While running this test simulation, crafty benchmark is used. 
> ./sesc.smp -h0x800000 -cpower.conf ../sesc/tests/crafty < ../sesc/tests/tt.in

Output:
The generated simulator output file will be with the name ‘sesc_crafty.xxxxxx’. The extension ‘xxxxxx’ is random and will be different every time benchmark is tested.

static[0x1008db40-0x101b3dd4] heap[0x101b4000-0x109b4000] stack[0x109b4000-0x111ac000] -> [0xb6000000-0xb711e4c0]

Crafty v14.3

sesc_simulation_mark 0 (simulated) @32112426
White(1): sesc_simulation_mark 1 (simulated) @32183488
White(1): pondering disabled.
sesc_simulation_mark 2 (simulated) @32269704
White(1): noise level set to 0.
sesc_simulation_mark 3 (simulated) @32297868
White(1): search time set to 99999.00.
sesc_simulation_mark 4 (simulated) @32423267
White(1): verbosity set to 5.
sesc_simulation_mark 5 (simulated) @32447392
White(1): sesc_simulation_mark 6 (simulated) @32908293
White(1): search depth set to 2.
sesc_simulation_mark 7 (simulated) @32920437
White(1): 
              clearing hash tables

              depth   time  score   variation (1)
                1   ###.##  -0.67   axb5 c6xb5
                1   ###.##  -0.08   a4a5
sesc_simulation_mark 8 (simulated) @37373970
                1-> ###.##  -0.08   a4a5
                2   ###.##     --   a4a5
                2   ###.##  -0.65   a4a5 f6f5
                2   ###.##  -0.58   axb5 c6xb5 Ne4c5
                2   ###.##  -0.46   Rf1c1 f6f5
                2   ###.##  -0.43   Ra1c1 f6f5
sesc_simulation_mark 9 (simulated) @41424941
                2-> ###.##  -0.43   Ra1c1 f6f5
              time:###  cpu:###  mat:-1  n:833  nps: ####
              ext-> checks:18 recaps:4 pawns:0 1rep:6
              predicted:0  nodes:833  evals:372
              endgame tablebase-> probes done: 0  successful: 0
              hashing-> trans/ref:17%  pawn:83%  used:w0% b0%

White(1): Ra1c1 
              time used: ###.##
sesc_simulation_mark 10 (simulated) @42650164
Black(1): execution complete.
Segmentation fault

Note: Till now, I am unable to figure it out that why there is segmentation fault after the end of execution (If anyone know, please let me know as well). Apart from segmentation fault occurrence, the simulator output file ‘sesc_crafty.xxxxxx’ is valid to generate report file.

Generating Report:
There is ‘report.pl’ script file located in ‘/sesc/scripts/’ folder, is to view the outcome of the benchmark.
Keep in mind that we are still in build directory, that we created in the start. So, by executing the following command;
> ../sesc/scripts/report.pl -last

Customization of Configuration File:
Th configuration file ('sesc.conf') contain design parameters; which can be changed to test simulation performance, for example;
  • Number of Processors [2-32]
  • Processor Issue Width [1-8]
  • L1 Instr. Cache Size [2048-16384]
  • L1 Data Cache Size [2048-16384]
  • L2 Private Cache Size [32768-262144]
  • L1 Instr. Cache Associativity [1-8]
  • L1 Data Cache Associativity [1-8]
  • L2 Data Cache Associativity [1-8]
  • I/D/L2 Cache Block Size [16-32]
After changing the configuration file, power model will be achieved by running the following commands at every change of configuration;
> ./wattchify sesc.conf tmp.conf
> ./cactify tmp.conf power.conf

SPLASH2 Benchmarks:
SPLASH2 Benchmark consists of different applications that can be run on SESC Simulator in order to evaluate cycles, power, and energy performance according to the parameters set in configuration file (sesc.conf).
Download Splash2 Benchmark Kernels Applications.

Other Links:

33 comments:

  1. Have a look at this page too
    Parallel Processing using Linux: http://cobweb.ecn.purdue.edu/~pplinux/

    ReplyDelete
  2. Hi.
    When I create the directory "build" and run "make", I get the following error:
    .../src/misc/mkdep.cpp:767: return type for `main' changed to `int'
    make: ***[/root/sesc/sesc/build/obj/Linux_obj/mkdep] Error 1


    plz help me.
    THANKS

    ReplyDelete
  3. Hello Mohsen!!
    Sorry for being late, I am busy in finalizing my thesis work.
    Please have a look http://manio.org/sesc-tutorial-1-instaall-whole-sesc-step-by-step-577.html for detailed instructions. Apart from this, before make you have to configure sesc with /esesc/configure --help option.
    If you need help, I will be happy to help you out.
    :)

    ReplyDelete
  4. Hi. Thank you for useful help. I have a question on running the benchmarks on SESC. I can not find "-p" neither in any .conf file nor another file. How can I find all the parameters?

    Besides, I have a big problem with spec2000 benchmarks. Some of them need an input while some does not.

    Meantime, for some benchmarks when I enter "-p4" at the end of the command, there are no changes comparing with "-p1".

    I would be thankful if you helped me.

    ReplyDelete
  5. Mohsen!!
    -p switch relates with processor per node, which you specified in configuration file for computation.
    So, if -p2 then you have to specify procsPerNode = 2 in your configuration file, if -p4 then procsPerNode = 4, and vice versa.
    Whenever you changed this parameter then you have re-run the execution.
    I hope you were asking about this and it solves the problem. There is a possibility to have not too many changes in other parameters as well.

    ReplyDelete
  6. wow, this information has been so useful to me, thxs so much for your generous contribution! see u ;)

    ReplyDelete
  7. Hi. sth is weird. When I run a certain command on two differenct computers, I get two different "ClockTicks". I think it should not be like this. "ClockTick" does not rely on the PC we run simulator on!!!!!

    Please help me...

    ReplyDelete
  8. Hi,
    I follow this instructions and i build sesc with power & smp.
    No errors during the make, everything is fine.
    But when I run make testsim or any application I got segmentation fault.
    .................................................................................
    .
    .
    .
    sesc_simulation_mark 10 (simulated) @42650508
    Black(1): execution complete.
    /bin/sh: line 1: 7524 Segmentation fault ./sesc.smp -h0x800000 -cpower.conf /home/stelios/esesc/build_power_smp/../tests/crafty < /home/stelios/esesc/build_power_smp/../tests/tt.in
    make: *** [testsim] Error 139
    .................................................................................
    I am using ubuntu 9.10
    Please help me...

    ReplyDelete
  9. Hi,
    I am getting an error as shown below when i try to execute 'make cactify'... need help urgently..!

    make[2]: `sesc.smp' is up to date.
    make: *** No rule to make target `/root/sesc/build_smp/obj/Linux_obj/cacmain.o', needed by `cactify'. Stop.

    ReplyDelete
  10. hi,

    How can one execute a program in SPEC2000 benchmark instead of crafty in SESC ..?
    Also can anyone give one simple program which can be executed in SESC... I actually want to know the performance of the program.I am working on thread level speculation and need help.

    ReplyDelete
  11. hi.
    How can one run a sample program on SESC.. Also can anyone give a sample program to run on it.

    I am using ubuntu 10.04..... need help... I ve already installed sesc.I am working on Thread level speculation.

    ReplyDelete
  12. hey.. thanks for this.. i want to know something more.. i want to configure for cmp with power enabled.. so i did:
    ../sesc/configure --enable-cmp --enable-power

    now.. if i have a .config file for which i want to run the simulator.. what do i do for that.. for example, in the original sesc folder, there is a folder "config", that has few example config files.. lets consider "cmp.config".... if i want to run simulations for that configuration file with cmp and power enabled, what should i do?

    ReplyDelete
  13. Hello!!
    In case of on Chip Multiprocessor configuration, the procedure would be the same. You need to have configuration file with specific parameters you want to test. The rest of the procedure should be the same. The important thing is you are aware of parameters that you want to test under power model (Energy and Power).
    I didn't test myself but it should be the same, apart from running simulator for SMP or CMP. If you still have problems, then I can test myself as well.
    Have good day.

    ReplyDelete
  14. My reply is too late, but I sent you some sample programs in email :)

    ReplyDelete
  15. Hi,
    I too am facing the same problem. Were you able to find a solution?

    ReplyDelete
  16. Hello!
    I am sorry, now I am using Fedora and I have some issues with gcc-3.4. Apart from this, I am busy in other things so couldn't spent enough time for this. But for sure I will do it later for my learning, and on getting update I will post it.
    For now :(

    ReplyDelete
  17. Hi,
    Can you also send me some sample programs about the thread level applications ? Thanks.

    ReplyDelete
  18. Hello!!
    I can send some applications but you have to configure SMP that how many threads you wan to run on the application.
    :)

    ReplyDelete
  19. Hello!!
    Today I installed ubuntu 11.04 again to verify the issues.
    I made some corrections in the article as well. After reading one blog that gcc fixed limits.h bug in the current version so I checked that it works without any errors.
    For >>make testsim, below are my results

    hashim@Hashim-Ubuntu:~/sesc/build$ make testsim
    make[1]: `sesc.mem' is up to date.

    Generating sesc.conf from: /home/hashim/sesc/build/../confs/mem.conf
    cp /home/hashim/sesc/build/../confs/mem.conf sesc.conf
    cp /home/hashim/sesc/build/../confs/shared.conf .
    ./sesc.mem -h0x800000 -csesc.conf /home/hashim/sesc/build/../tests/crafty [0x41000000-0x4211e4c0]

    Crafty v14.3

    sesc_simulation_mark 0 (simulated) @30176723
    White(1): sesc_simulation_mark 1 (simulated) @30226228
    White(1): pondering disabled.
    sesc_simulation_mark 2 (simulated) @30297451
    White(1): noise level set to 0.
    sesc_simulation_mark 3 (simulated) @30321004
    White(1): search time set to 99999.00.
    sesc_simulation_mark 4 (simulated) @30423213
    White(1): verbosity set to 5.
    sesc_simulation_mark 5 (simulated) @30448564
    White(1): sesc_simulation_mark 6 (simulated) @30749611
    White(1): search depth set to 2.
    sesc_simulation_mark 7 (simulated) @30765916
    White(1):
    clearing hash tables

    depth time score variation (1)
    1 ###.## -0.67 axb5 c6xb5
    1 ###.## -0.08 a4a5
    sesc_simulation_mark 8 (simulated) @33088401
    1-> ###.## -0.08 a4a5
    2 ###.## -- a4a5
    2 ###.## -0.65 a4a5 f6f5
    2 ###.## -0.58 axb5 c6xb5 Ne4c5
    2 ###.## -0.46 Rf1c1 f6f5
    2 ###.## -0.43 Ra1c1 f6f5
    sesc_simulation_mark 9 (simulated) @37835568
    2-> ###.## -0.43 Ra1c1 f6f5
    time:### cpu:### mat:-1 n:833 nps: ####
    ext-> checks:18 recaps:4 pawns:0 1rep:6
    predicted:0 nodes:833 evals:372
    endgame tablebase-> probes done: 0 successful: 0
    hashing-> trans/ref:17% pawn:83% used:w0% b0%

    White(1): Ra1c1
    time used: ###.##
    sesc_simulation_mark 10 (simulated) @38876275
    Black(1): execution complete.

    ReplyDelete
    Replies
    1. This comment has been removed by the author.

      Delete
    2. Hello Hashim,

      I tried to install SESC on ubuntu 12.04.
      And I occurred the same problem as you met before.

      I executed the configure with --enable-power and --enable-smp and make correctly.

      But when I executed "make testsim", I met Segmentation fault error. how do you solve this problem? Whether Just change gcc version or not?

      Please give me a help. Thanks a lot.

      Delete
  20. Hello!!
    Today I installed ubuntu 11.04 again to verify the issues.
    I made some corrections in the article as well. After reading one blog that gcc fixed limits.h bug in the current version so I checked that it works without any errors.

    >>../sesc/configure –enable-cmp –enable-power (I configured simulator with CMP and works fine atleast without any error)

    I am not sure you already solved the issues or not? If yes, please share with me.
    Thanks to you.

    ReplyDelete
  21. Hello!
    when I configure sesc with smp and power, It gave no error. but when I run any application I got segmentation fault. could you help me to solve this segmentation fault?

    thanks alot

    ReplyDelete
  22. Hello!
    Would you please send me your application and configuration files in mail. I would like to check myself because segmentation fault normally occur while accessing out of bound memory.
    Although, I don't have any segmentation fault on my side.
    I am not sure if you already solved the issue or not? But still I am willing to help.
    Cheers

    ReplyDelete
  23. hi
    i have installed sesc using steps from manio.org.
    I am working on cache coherency .I'm new to this simulator.can you help me to run a sample program.I need to know how to run a bench mark program and also how we can change the cache parameters
    thanks

    ReplyDelete
  24. Hi,

    Thanks for the useful information you've posted here. I also have the segmentation fault problem and would greatly appreciate it if you can send me the .conf file that you are using so that I can compare it with mine.

    I'm also trying to collect a thermal trace from a multicore system with SESC. I'd be great if you can tell me if you have been able to achieve this?

    Thanks,
    Bardia

    ReplyDelete
  25. Hello!
    Truly speaking, I just got one time the segmentation fault because I was running LINUX as virtual OS. But later I never get segmentation fault. I am using Ubuntu 10.10 and SESC binary files downloaded from the above defined webpage. Secondly, in order to verify initial installation of SESC, I used the already present configuration files.
    I'll let you know in some days. Today i run thermal configurations first time and having few errors. I'll fix and let you know.
    Have patience :)

    ReplyDelete
  26. Hello

    I am a new user with SESC, I am trying to use
    a CMP configuration where L1 and L2 cache is private,
    L2 caches are kept consistent by MESI protocol. and I want
    to add new state to that protocol. I read the SESC manual in
    doc folder but I don't know how can I start with SESC,
    Could you help me please. I need to work with SESC for my
    Thesis,In SESC for CMP configuration, L2 cache is shared,
    Do you know how can I change the cmp.conf code to create L2
    cache that is private and what related code must modify by this change?
    Can you help me please.If you have any manual or help documet
    could you send to me please?

    thank you for your help

    ReplyDelete
  27. hi
    thanks for useful information, Actually I made power.conf and I run benchmarks with this cinfig file with no error. But there is no power in output file and I also used report.pl and it diesn't show any power there too. :( what should I do now?

    thanks for your help

    ReplyDelete
  28. Hi Hashim...Is there any way by which I can check how much power a particular instruction is taking while execution?? Please help me...

    ReplyDelete
  29. Hi! pls guide me how to run an algorithm after Black(1): execution complete.is successful. which files should be given as input to sesc along with the algo?

    ReplyDelete
    Replies
    1. Hi Pallavi, seems like no one is active in Sesc community. Have you created your conf files? Do you want to run a benchmark or run a code written by you?

      P.S-> I am also new to Sesc and have just started....may be we can help each other in our thesis

      Delete

Integration of SQLite3 and Netbeans C/C++ IDE

Few days back, I wanted to use SQLite database for one of my project. I spend couple of hours to find a way to integrate with Netbeans. Mayb...