Hello Thanks a lot for this. See my questions below.
On Tue, Sep 13, 2011 at 10:59 AM, avadh patel <[email protected]> wrote: > > > On Sun, Sep 11, 2011 at 2:58 PM, sparsh1 mittal1 > <[email protected]>wrote: > >> Hello, >> >> This refers to Avadh's suggestion regarding how to run a deterministic >> simulation. >> I am running multi-core simulation with checkpoint and still it is quite >> non-deterministic. >> >> Here are few questions. >> >> *In case of multicore simulations to get similar results >> make sure of two things, >> 1 - make sure that majority of simulation was running in userspace and >> collect only userspace statistics. >> * >> Q. I will collect only userspace statistics. A longer simulation (higher >> number of instructions) has a larger % of userspace instructions. Isn't it? >> Any other suggestions for running majority of simulation in userspace? >> >> That should work. > > >> *2 - create checkpoints after all the user threads are created and >> assigned to specific cores.* >> >> Q. Would you explain it a bit. I created the checkpoint as >> ./create_checkpoint 2core_checkpoint; taskset ... parsecmgmt ...b1 & >> taskset ... parsecmgmt ...b2; ./stop_sim >> >> Is this the same you are referring to? >> >> Similar, but not the same. Here you create the checkpoint before you start > the benchmark so when OS will create new processes for your benchmark, it > will rely on some random values for task creation and also it will make disk > access to load the benchmark and its dataset. When heavy IO is involved, > simulation will vary because of asynchronous disk IO of QEMU. Also, are you > using 'hooks' in parsec? It might change the task-affinity from what you are > setting using taskset. > Yes I am using -c gcc-hooks. Can we skip this? > To run simulations in more deterministic way, first create all the > processes, threads and assign them on your desired CPU. Then create a > checkpoint so when you run your simulation, it will not run any OS level > task scheduling (unless something new comes up..). I use this method to run > simulations in more deterministic way. To synchronize across multiple > processes, you can use named semaphores to sync them. > Can you give an example. Should I try: taskset ... parsecmgmt ...b1 & taskset ... parsecmgmt ...b2; ./create_checkpoint 2core_checkpoint; ./stop_sim > - Avadh > > >> Thanks and Regards >> Sparsh Mittal >> >> >> >> _______________________________________________ >> http://www.marss86.org >> Marss86-Devel mailing list >> [email protected] >> https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel >> >> >
_______________________________________________ http://www.marss86.org Marss86-Devel mailing list [email protected] https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
