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

Reply via email to